[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Re: Rdoc allowing arbitrary HTML

Phlip

7/29/2007 9:25:00 PM

Robert Dober

> %html <a name="fn1" />
>
> I thought I will share this patch which seems to work.

This patch doesn't seem complete. For example...

if /^\s*%html/ === line.text then
line.text.sub!("%html","")
line.stamp( Line::PURE_HTML, level )
- dbg "in simple_markup",line
next
end

The patch only says to remove the dbg line; it doesn't seem to say to add
the %html lines around it, which are the point of the exercise. And I can't
find PURE_HTML anywhere.

--
Phlip
http://www.oreilly.com/catalog/9780...
"Test Driven Ajax (on Rails)"
assert_xpath, assert_javascript, & assert_ajax


6 Answers

Robert Dober

7/29/2007 9:48:00 PM

0

On 7/29/07, Phlip <phlip2005@gmail.com> wrote:
> Robert Dober
>
> > %html <a name="fn1" />
> >
> > I thought I will share this patch which seems to work.
>
> This patch doesn't seem complete. For example...
>
> if /^\s*%html/ === line.text then
> line.text.sub!("%html","")
> line.stamp( Line::PURE_HTML, level )
> - dbg "in simple_markup",line
> next
> end
>
> The patch only says to remove the dbg line; it doesn't seem to say to add
> the %html lines around it, which are the point of the exercise. And I can't
> find PURE_HTML anywhere.
>
> --
> Phlip
> http://www.oreilly.com/catalog/9780...
> "Test Driven Ajax (on Rails)"
> assert_xpath, assert_javascript, & assert_ajax
>
>
>
It seems that the diff has been made against an intermediate version,
I can send you the files off list if you want.

I have not completely understood RDoc and please be aware that this is
err very basic; A first issue I found is that if you say
# aaa
# %html <sup>(1)</sup>
# bbb

you will have a paragraph around (1)
can be fixed with
%html aaa
%html <sup>(1)</sup>
%html bbb
but that was not the real purpose, I should need to study what exactly
the visitors do with the annotated lines, soo few time :(

Cheers
Robert

--
[...] as simple as possible, but no simpler.
-- Attributed to Albert Einstein

Phlip

7/29/2007 10:19:00 PM

0

Robert Dober wrote:

> It seems that the diff has been made against an intermediate version,
> I can send you the files off list if you want.

No prob: I reproduced what you did as a monkey patch, available below my
sig.

It's only long because one of the methods I had to patch was poorly factored
and run-on. Other than that, the Visitor Pattern made the actual patch super
easy!

I put this in my Rakefile, and because that calls RDoc internally, it gets
the new feature. Thanks for the code sample, because this is exactly what I
was about to start researching!

> # aaa
> # %html <sup>(1)</sup>
> # bbb
>
> you will have a paragraph around (1)
> can be fixed with
> %html aaa
> %html <sup>(1)</sup>
> %html bbb

I didn't get a paragraph around it, so I didn't need the workaround. Yet
note you have two blanks in "# aaa" - they cause a <pre> aaa</pre>.

Now I dibs first crack at the Wish List I just posted! Nobody else can do
them!

--
Phlip
http://www.oreilly.com/catalog/9780...
"Test Driven Ajax (on Rails)"
assert_xpath, assert_javascript, & assert_ajax

##################################################################
## eek eek ook ook patch to add %html directive to RDocage

require 'rdoc/rdoc'
require 'rdoc/markup/simple_markup'
require 'rdoc/markup/simple_markup/lines'
require 'rdoc/markup/simple_markup/fragments'
require 'rdoc/markup/simple_markup/to_html'

module SM

class Line
PURE_HTML = :PURE_HTML
end

class PureHTML < Fragment
type_name Line::PURE_HTML
end

class ToHtml
def accept_pure_html(am, fragment)
@res << fragment.txt
end
end

class LineCollection
def accept(am, visitor)
visitor.start_accepting

@fragments.each do |fragment|
case fragment
when Verbatim
visitor.accept_verbatim(am, fragment)
when PureHTML
visitor.accept_pure_html(am, fragment)
when Rule
visitor.accept_rule(am, fragment)
when ListStart
visitor.accept_list_start(am, fragment)
when ListEnd
visitor.accept_list_end(am, fragment)
when ListItem
visitor.accept_list_item(am, fragment)
when BlankLine
visitor.accept_blank_line(am, fragment)
when Heading
visitor.accept_heading(am, fragment)
when Paragraph
visitor.accept_paragraph(am, fragment)
end
end

visitor.end_accepting
end

end

class SimpleMarkup
private

def assign_types_to_lines(margin = 0, level = 0)

while line = @lines.next

if /^\s*%html/ === line.text then
line.text.sub!("%html","")
line.stamp( Line::PURE_HTML, level )
next
end # ERGO move this monkey-patch towards the real RDoc!

if line.isBlank?
line.stamp(Line::BLANK, level)
next
end

# if a line contains non-blanks before the margin, then it must
belong
# to an outer level

text = line.text

for i in 0...margin
if text[i] != SPACE
@lines.unget
return
end
end

active_line = text[margin..-1]

# Rules (horizontal lines) look like
#
# --- (three or more hyphens)
#
# The more hyphens, the thicker the rule
#

if /^(---+)\s*$/ =~ active_line
line.stamp(Line::RULE, level, $1.length-2)
next
end

# Then look for list entries. First the ones that have to have
# text following them (* xxx, - xxx, and dd. xxx)

if SIMPLE_LIST_RE =~ active_line

offset = margin + $1.length
prefix = $2
prefix_length = prefix.length

flag = case prefix
when "*","-" then ListBase::BULLET
when /^\d/ then ListBase::NUMBER
when /^[A-Z]/ then ListBase::UPPERALPHA
when /^[a-z]/ then ListBase::LOWERALPHA
else raise "Invalid List Type: #{self.inspect}"
end

line.stamp(Line::LIST, level+1, prefix, flag)
text[margin, prefix_length] = " " * prefix_length
assign_types_to_lines(offset, level + 1)
next
end


if LABEL_LIST_RE =~ active_line
offset = margin + $1.length
prefix = $2
prefix_length = prefix.length

next if handled_labeled_list(line, level, margin, offset, prefix)
end

# Headings look like
# = Main heading
# == Second level
# === Third
#
# Headings reset the level to 0

if active_line[0] == ?= and active_line =~ /^(=+)\s*(.*)/
prefix_length = $1.length
prefix_length = 6 if prefix_length > 6
line.stamp(Line::HEADING, 0, prefix_length)
line.strip_leading(margin + prefix_length)
next
end

# If the character's a space, then we have verbatim text,
# otherwise

if active_line[0] == SPACE
line.strip_leading(margin) if margin > 0
line.stamp(Line::VERBATIM, level)
else
line.stamp(Line::PARAGRAPH, level)
end
end
end
end
end

## eek eek ook ook patch to add %html directive to RDocage
##################################################################


Phlip

8/1/2007 3:11:00 AM

0

Joel VanderWerf wrote:

> Ryan Davis wrote:

> > please file this as a patch on the ruby project on rubyforge and
> > categorize it appropriately.

> But the OP should be aware that there is a bit of a backlog.

Hence, these forums should help allow only the best ideas to percolate up to
the lieutenants. A real patch that provided a lite plugin mechanism to RDoc
should rise faster than patches that add one or two dumb directives.

--
Phlip
http://www.oreilly.com/catalog/9780...
"Test Driven Ajax (on Rails)"
assert_xpath, assert_javascript, & assert_ajax


Robert Dober

8/1/2007 6:31:00 AM

0

On 8/1/07, Phlip <phlip2005@gmail.com> wrote:
> Joel VanderWerf wrote:
>
> > Ryan Davis wrote:
>
> > > please file this as a patch on the ruby project on rubyforge and
> > > categorize it appropriately.
>
> > But the OP should be aware that there is a bit of a backlog.
>
> Hence, these forums should help allow only the best ideas to percolate up to
> the lieutenants. A real patch that provided a lite plugin mechanism to RDoc
> should rise faster than patches that add one or two dumb directives.
Thanks a lot Philip :(.
I would say that my ill adviced and badly labeled trial to share some
code was quite a disaster, getting me even some insults, well deserved
without any doubt.
I however ask myself if this is the style we normally apply?
I agree with Philip that if we cannot discuss our code we will never
provide anything useful...

Robert


--
[...] as simple as possible, but no simpler.
-- Attributed to Albert Einstein

Phlip

8/1/2007 11:40:00 AM

0

Robert Dober wrote:

> I however ask myself if this is the style we normally apply?
> I agree with Philip that if we cannot discuss our code we will never
> provide anything useful...

Dude, I was stuck on your exact problem just before you posted.

A high-volume forum generates a crew of regulars who tend to get
trigger-happy about FAQs and such. Try policing a group yourself to
see how easy and fun it is!

--
Phlip
http://www.oreilly.com/catalog/9780...
^ assert_xpath
http://tinyurl.... <-- assert_latest Model

Robert Dober

8/1/2007 12:42:00 PM

0

On 8/1/07, Phlip <phlip2005@gmail.com> wrote:
> Robert Dober wrote:
>
> > I however ask myself if this is the style we normally apply?
> > I agree with Philip that if we cannot discuss our code we will never
> > provide anything useful...
>
> Dude, I was stuck on your exact problem just before you posted.
>
> A high-volume forum generates a crew of regulars who tend to get
> trigger-happy about FAQs and such. Try policing a group yourself to
> see how easy and fun it is!

Philip I am losing you here, what are you talking about? I guess this
thread is dead now, but I am still here to discuss RDoc if someone has
to say something about here.

Cheers
Robert

--
[...] as simple as possible, but no simpler.
-- Attributed to Albert Einstein