[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

rdoc bug

Pistos Christou

2/26/2006 8:24:00 PM

To Whom It May Concern:

$ ruby --version
ruby 1.8.4 (2005-12-24) [i686-linux]
$ rdoc --version
RDoc V1.0.1 - 20041108

--- BEGIN rdoctest.rb ---
class A
def foo
end

def bar
end
end

class B
def baz
# This line causes the rdoc breakage...
# That is, everything below it is not documented.
/\^/
# This version is alright, though.
# %r{^}
# This version breaks it, too.
# %r{\^}
# As does this:
# "\^"
# And this:
# '\^'
end

def foz
end
end

class C
def boo
end

def far
end
end
--- END rdoctest.rb ---

--- expected: ---
$ rdoc doctest.rb

doctest.rb: c..c..c..
Generating HTML...

Files: 1
Classes: 3
Modules: 0
Methods: 6
Elapsed: 0.088s

--- actual: ---
$ rdoc doctest.rb

doctest.rb: c..c.
Generating HTML...

Files: 1
Classes: 2
Modules: 0
Methods: 3
Elapsed: 0.075s

--
Posted via http://www.ruby-....


4 Answers

H.Yamamoto

2/27/2006 8:04:00 AM

0

Hello.

It seems that rdoc should not treat \ as escape character
inside regurar expression and single quoted string.

Does this work?

# I haven't read all rdoc parser's code, so this is just hack.
# I'll test this on `make install-doc` later.

Index: parse_rb.rb
===================================================================
RCS file: /src/ruby/lib/rdoc/parsers/parse_rb.rb,v
retrieving revision 1.41
diff -u -w -b -p -r1.41 parse_rb.rb
--- parse_rb.rb 18 Feb 2006 15:35:32 -0000 1.41
+++ parse_rb.rb 27 Feb 2006 07:53:07 -0000
@@ -560,7 +560,7 @@ class RubyLex
"q" => "\'",
"Q" => "\"",
"x" => "\`",
- "r" => "\/",
+ "r" => "/",
"w" => "]"
}

@@ -575,7 +575,7 @@ class RubyLex
"\'" => TkSTRING,
"\"" => TkSTRING,
"\`" => TkXSTRING,
- "\/" => TkREGEXP,
+ "/" => TkREGEXP,
"]" => TkDSTRING
}
Ltype2Token.default = TkSTRING
@@ -583,7 +583,7 @@ class RubyLex
DLtype2Token = {
"\"" => TkDSTRING,
"\`" => TkDXSTRING,
- "\/" => TkDREGEXP,
+ "/" => TkDREGEXP,
}

def lex_init()
@@ -1230,7 +1230,7 @@ class RubyLex
else
ungetc(ch)
end
- elsif ch == '\\' #'
+ elsif @ltype != "'" && @ltype != "/" and ch == '\\' #'
str << read_escape
end
end


///////////////////////////////////////////

class A
def foo
end

def bar
end
end

class B
def baz
# Probably this is fixed
# /\^/
# Probably this is fixed
# %r{\^}
# Is this valid string?
# "\^"
# Probably this is fixed
# '\^'
end

def foz
end
end

class C
def boo
end

def far
end
end



H.Yamamoto

2/27/2006 9:11:00 AM

0

Hello.

>It seems that rdoc should not treat \ as escape character
>inside regurar expression and single quoted string.
>
>Does this work?
>
># I haven't read all rdoc parser's code, so this is just hack.
># I'll test this on `make install-doc` later.

I have tested. I found some difference between before and after applied my patch
(all difference are related to cgi), but CGI::Html3 is markes as :nodoc:, so probably this
comes from the bug you reported (I found regular expression containing \ in cgi.rb...
That should break the parse-process after that)

# Following files were not generated.

usr/share/ri/1.9/system/CGI/Cookie/cdesc-Cookie.yaml
usr/share/ri/1.9/system/CGI/Cookie/new-c.yaml
usr/share/ri/1.9/system/CGI/Cookie/parse-c.yaml
usr/share/ri/1.9/system/CGI/Cookie/secure%3d-i.yaml
usr/share/ri/1.9/system/CGI/Cookie/to_s-i.yaml
usr/share/ri/1.9/system/CGI/Html3/cdesc-Html3.yaml
usr/share/ri/1.9/system/CGI/Html4/cdesc-Html4.yaml
usr/share/ri/1.9/system/CGI/Html4Fr/cdesc-Html4Fr.yaml
usr/share/ri/1.9/system/CGI/Html4Tr/cdesc-Html4Tr.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/a-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/base-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/blockquote-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/caption-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/cdesc-HtmlExtension.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/checkbox-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/checkbox_group-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/file_field-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/form-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/hidden-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/html-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/image_button-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/img-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/multipart_form-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/password_field-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/popup_menu-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/radio_button-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/radio_group-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/reset-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/scrolling_list-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/submit-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/text_field-i.yaml
usr/share/ri/1.9/system/CGI/HtmlExtension/textarea-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/%5b%5d-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/MorphingBody/cdesc-MorphingBody.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/MorphingBody/convert_body-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/MorphingBody/extract-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/MorphingBody/new-c.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/MorphingBody/path-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/MorphingBody/print-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/MorphingBody/rewind-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/Value/cdesc-Value.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/cdesc-QueryExtension.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/has_key%3f-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/include%3f-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/initialize_query-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/key%3f-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/keys-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/multipart%3f-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/params%3d-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/raw_cookie-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/raw_cookie2-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/read_from_cmdline-i.yaml
usr/share/ri/1.9/system/CGI/QueryExtension/read_multipart-i.yaml
usr/share/ri/1.9/system/CGI/TagMaker/cdesc-TagMaker.yaml
usr/share/ri/1.9/system/CGI/escape_element-c.yaml
usr/share/ri/1.9/system/CGI/header-i.yaml
usr/share/ri/1.9/system/CGI/new-c.yaml
usr/share/ri/1.9/system/CGI/out-i.yaml
usr/share/ri/1.9/system/CGI/parse-c.yaml
usr/share/ri/1.9/system/CGI/pretty-c.yaml
usr/share/ri/1.9/system/CGI/print-i.yaml
usr/share/ri/1.9/system/CGI/rfc1123_date-c.yaml
usr/share/ri/1.9/system/CGI/unescape_element-c.yaml




H.Yamamoto

2/27/2006 2:18:00 PM

0


>Hello.
>
>It seems that rdoc should not treat \ as escape character
>inside regurar expression and single quoted string.
>
>Does this work?
>
># I haven't read all rdoc parser's code, so this is just hack.
># I'll test this on `make install-doc` later.

Sorry, I'll cancel this patch. Mr. Ishizuka (Author of irb) pointed
out this fix is not right fix. I'll reconsider after irb's similer
bug is fixed.




H.Yamamoto

2/28/2006 3:28:00 PM

0

Hello.

>>It seems that rdoc should not treat \ as escape character
>>inside regurar expression and single quoted string.
>>
>>Does this work?
>>
>># I haven't read all rdoc parser's code, so this is just hack.
>># I'll test this on `make install-doc` later.
>
>Sorry, I'll cancel this patch. Mr. Ishizuka (Author of irb) pointed
>out this fix is not right fix. I'll reconsider after irb's similer
>bug is fixed.

This bug was fixed by Mr. Ishizuka. Thank you for report.