Forum: Ruby \r\n for EOL in windows?

Posted by Roger Pack (rogerdpack)
on 2012-10-01 18:58
I believe "\r\n" is a normal newline for windows "type" files.

Should the following work, then, seeing as $ is supposed to mean "end of
line"?


>> "abc\r\n" =~ /abc$/
=> nil

This works:

>> "abc\n" =~ /abc$/
=> 0

I'm guessing it shouldn't, actually, and current behavior is expected.
Thanks!
-roger-
Posted by 7stud -- (7stud)
on 2012-10-01 19:09
> I believe "\r\n" is a normal newline for windows "type" files.

Yes, but inside a ruby program it's just "\n"--no matter what OS you
are running your ruby program on.  ruby will take care of
converting from and to the platform specific newline when you read or
write.  For instance, if you are using windows and write "\r\n" to a
file, then ruby will convert the "\n" to "\r\n" giving you the output:
"\r\r\n", which is not what you want.
Posted by Xavier Noria (fxn)
on 2012-10-01 19:16
(Received via mailing list)
Only in disk. When you work in text mode the I/O layer transforms from 
native to \n back and forth transparently.

Regarding $, as your tests suggest, it only matches (an optional) \n.

Google "Understanding Newlines", it is an article in ONLamp that has 
examples in Perl, but it applies to Ruby.

Sent from my iPhone
Posted by Roger Pack (rogerdpack)
on 2012-10-01 19:24
Ok thanks for the responses.  I've filed a jruby bug since it appears 
"\r\n" within the app (not on disk) isn't expected.
Thank you.
-r
Posted by Xavier Noria (fxn)
on 2012-10-01 19:38
(Received via mailing list)
JRuby may have some gotcha because these semantics work on many 
languages (C, Perl, Python, ...) but not in Java.

In C printf("\n") is portable, stdio takes care of the translation on 
Windows, but in Java \n has no translation. In Java the portable way to 
print a newline is println.

I am pretty sure they addressed this years ago though and JRuby provides 
MRI semantics to the user. Which is the code that is not working?

Sent from my iPhone
Posted by Roger Pack (rogerdpack)
on 2012-10-01 19:41
https://jira.codehaus.org/browse/JRUBY-6913 (it works as expected with 
jdk6, but not jdk7)
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.