1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/rdoc/code_objects.rb: Make some attributes accessible for reuse.

* lib/rdoc/generator/html.rb: Pull out ContextUser classes and related
	  methods for reuse.
	* lib/rdoc/generator.rb: Move ContextUser classes to
	  RDoc::Generator::Context for reuse.
	* lib/rdoc/rdoc.rb: Make RDoc::RDoc initialization a little easier.
	* lib/rdoc/options.rb: Make RDoc::Options easier to use without
	  parsing an ARGV.
	* lib/rdoc/markup/to_*.rb: Subclass RDoc::Markup::Formatter.
	* lib/rdoc/markup/formatter.rb: Add RDoc::Markup::Formatter to make
	  RDoc markup conversion easier.
	* lib/rdoc/markup/fragments.rb: Make RDoc::Markup::ListItem easier to
	  test.
	* lib/rdoc/markup/to_html_hyperlink.rb: Pulled out of the HTML
	  generator for easier reusability.
	* lib/rdoc/markup.rb: Fix bug with labeled lists containing bullet
	  lists.
	* lib/rdoc/generators/html/html.rb: Fix Constant display.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
drbrain 2008-02-10 03:59:08 +00:00
parent d44f24c47c
commit 455b051a00
21 changed files with 1839 additions and 1588 deletions

View file

@ -146,16 +146,16 @@ require 'rdoc'
# end
# end
#
# p = RDoc::Markup.new
# p.add_word_pair("{", "}", :STRIKE)
# p.add_html("no", :STRIKE)
# m = RDoc::Markup.new
# m.add_word_pair("{", "}", :STRIKE)
# m.add_html("no", :STRIKE)
#
# p.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)
# m.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)
#
# h = WikiHtml.new
# h.add_tag(:STRIKE, "<strike>", "</strike>")
#
# puts "<body>" + p.convert(ARGF.read, h) + "</body>"
# puts "<body>" + m.convert(ARGF.read, h) + "</body>"
#
#--
# Author:: Dave Thomas, dave@pragmaticprogrammer.com
@ -194,7 +194,7 @@ class RDoc::Markup
# identify significant chunks.
def initialize
@am = AttributeManager.new
@am = RDoc::Markup::AttributeManager.new
@output = nil
end
@ -234,15 +234,16 @@ class RDoc::Markup
# display the result.
def convert(str, op)
@lines = Lines.new(str.split(/\r?\n/).collect { |aLine|
Line.new(aLine) })
lines = str.split(/\r?\n/).map { |line| Line.new line }
@lines = Lines.new lines
return "" if @lines.empty?
@lines.normalize
assign_types_to_lines
group = group_lines
# call the output formatter to handle the result
# group.to_a.each {|i| p i}
group.accept(@am, op)
#group.each { |line| p line }
group.accept @am, op
end
private
@ -252,9 +253,8 @@ class RDoc::Markup
# Blank, a paragraph, a list element, or verbatim text.
def assign_types_to_lines(margin = 0, level = 0)
while line = @lines.next
if line.isBlank?
if line.blank? then
line.stamp :BLANK, level
next
end
@ -289,7 +289,6 @@ class RDoc::Markup
# text following them (* xxx, - xxx, and dd. xxx)
if SIMPLE_LIST_RE =~ active_line
offset = margin + $1.length
prefix = $2
prefix_length = prefix.length
@ -308,7 +307,6 @@ class RDoc::Markup
next
end
if LABEL_LIST_RE =~ active_line
offset = margin + $1.length
prefix = $2
@ -366,22 +364,23 @@ class RDoc::Markup
prefix_length = prefix.length
text = line.text
flag = nil
case prefix
when /^\[/
when /^\[/ then
flag = :LABELED
prefix = prefix[1, prefix.length-2]
when /:$/
when /:$/ then
flag = :NOTE
prefix.chop!
else raise "Invalid List Type: #{self.inspect}"
else
raise "Invalid List Type: #{self.inspect}"
end
# body is on the next line
if text.length <= offset
if text.length <= offset then
original_line = line
line = @lines.next
return(false) unless line
return false unless line
text = line.text
for i in 0..margin
@ -390,15 +389,24 @@ class RDoc::Markup
return false
end
end
i = margin
i += 1 while text[i] == SPACE
if i >= text.length
if i >= text.length then
@lines.unget
return false
else
offset = i
prefix_length = 0
@lines.delete(original_line)
if text[offset..-1] =~ SIMPLE_LIST_RE then
@lines.unget
line = original_line
line.text = ''
else
@lines.delete original_line
end
end
end
@ -418,24 +426,26 @@ class RDoc::Markup
def group_lines
@lines.rewind
inList = false
wantedType = wantedLevel = nil
in_list = false
wanted_type = wanted_level = nil
block = LineCollection.new
group = nil
while line = @lines.next
if line.level == wantedLevel and line.type == wantedType
if line.level == wanted_level and line.type == wanted_type
group.add_text(line.text)
else
group = block.fragment_for(line)
block.add(group)
if line.type == :LIST
wantedType = :PARAGRAPH
wanted_type = :PARAGRAPH
else
wantedType = line.type
wanted_type = line.type
end
wantedLevel = line.type == :HEADING ? line.param : line.level
wanted_level = line.type == :HEADING ? line.param : line.level
end
end
@ -462,4 +472,5 @@ class RDoc::Markup
end
require 'rdoc/markup/fragments'
require 'rdoc/markup/inline'
require 'rdoc/markup/lines'