Block Comments

What text, if any, is allowed on the the line after the =begin and
=end delimiters of block comments?

I have code that looks like this:

=begin Hello
=end Goodbye
p “I work”

and it prints “I work” on these versions of Ruby:

ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
ruby 1.9.0 (2008-07-25 revision 18217) [i686-darwin9.5.2]
jruby 1.3.0 (ruby 1.8.6p287) (2009-06-03 5dc2e22) (Java HotSpot™
Client VM 1.5.0_19) [i386-java]

Normally I wouldn’t think about this anymore, but he ruby-parser gem
(2.0.2) throws an error:

ruby_parser-2.0.2/lib/ruby_lexer.rb:385:in `rb_compile_error’:
embedded document meets end of file. near line 1: "
Hello" (SyntaxError)

although it works if you remove the text after the =end.

Based on a cursory grepping of the sources, Ruby 1.9 source
(ruby-1.9.1-p129) never uses any text on the same line as the =begin
or =end delimiters and Rubyspec doesn’t have any tests around block
comments. Rubyspec does have some =begin “Text”, but not =end “Text”
comment delimiters.

I’d like to fix the ruby-parser gem, but this seems to be something of
a grey area. I’ve never seen anything that requires Ruby to accept or
reject =end Text delimiters on block comments, but the de facto
standard and practice seem to be in conflict. The standard is to
accept text after the =end; the practice seems to be to not do it.

Thoughts?

yesteray wrote:

What text, if any, is allowed on the the line after the =begin and
=end delimiters of block comments?

The Ruby P.ming Language specifically says that text can follow
=begin and =end as long as it’s separated by at least one blank, and
shows an example of both =begin and =end statements will additional text
on the same line. The text is treated as part of the comment.

On 7/18/09, yesteray [email protected] wrote:

Hello" (SyntaxError)

although it works if you remove the text after the =end.

RedParse doesn’t have this bug, tho there is a more obscure problem
with =begin blocks that I haven’t figured out yet.

On Jul 18, 5:27 pm, Tim H. [email protected] wrote:

The Ruby P.ming Language specifically says that text can follow
=begin and =end as long as it’s separated by at least one blank, and
shows an example of both =begin and =end statements will additional text
on the same line. The text is treated as part of the comment.

This appears to be an answer to the question possibly posed by
willfully ignoring everything following the first paragraph of the
post, including the code example.

Yossef M. wrote:


-yossef

The OP says “What text, if any, is allowed on the the line after the
=begin and =end delimiters of block comments?,” and “I’ve never seen
anything that requires Ruby to accept or reject =end Text delimiters on
block comments.” My response was a quote from an authoritative
reference. Based on the lack of follow-up I assumed my response was
adequate.

Perhaps I was wrong. What do you think the OP was asking? What’s your
answer to his question?

On Jul 20, 5:34 pm, Tim H. [email protected] wrote:

The OP says “What text, if any, is allowed on the the line after the
=begin and =end delimiters of block comments?,” and “I’ve never seen
anything that requires Ruby to accept or reject =end Text delimiters on
block comments.” My response was a quote from an authoritative
reference. Based on the lack of follow-up I assumed my response was
adequate.

Perhaps I was wrong. What do you think the OP was asking? What’s your
answer to his question?

Somehow my earlier reading seemed to focus on the lack of vertical
space between the =end line and the code line beneath it, and I was
completely wrong about the point of the question.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs