Update to RDoc r56
[rbx.git] / lib / rdoc / markup / to_texinfo.rb
blob533d3e34a03529170993315fecf1ccd1c4a4020e
1 require 'rdoc/markup/formatter'
2 require 'rdoc/markup/fragments'
3 require 'rdoc/markup/inline'
5 require 'rdoc/markup'
6 require 'rdoc/markup/formatter'
8 ##
9 # Convert SimpleMarkup to basic TexInfo format
11 # TODO: WTF is AttributeManager for?
13 class RDoc::Markup::ToTexInfo < RDoc::Markup::Formatter
15   def start_accepting
16     @text = []
17   end
19   def end_accepting
20     @text.join("\n")
21   end
23   def accept_paragraph(attributes, text)
24     @text << format(text)
25   end
27   def accept_verbatim(attributes, text)
28     @text << "@verb{|#{format(text)}|}"
29   end
31   def accept_heading(attributes, text)
32     heading = ['@majorheading', '@chapheading'][text.head_level - 1] || '@heading'
33     @text << "#{heading}{#{format(text)}}"
34   end
36   def accept_list_start(attributes, text)
37     @text << '@itemize @bullet'
38   end
40   def accept_list_end(attributes, text)
41     @text << '@end itemize'
42   end
44   def accept_list_item(attributes, text)
45     @text << "@item\n#{format(text)}"
46   end
48   def accept_blank_line(attributes, text)
49     @text << "\n"
50   end
52   def accept_rule(attributes, text)
53     @text << '-----'
54   end
56   def format(text)
57     text.txt.
58       gsub(/@/, "@@").
59       gsub(/\{/, "@{").
60       gsub(/\}/, "@}").
61       # gsub(/,/, "@,"). # technically only required in cross-refs
62       gsub(/\+([\w]+)\+/, "@code{\\1}").
63       gsub(/\<tt\>([^<]+)\<\/tt\>/, "@code{\\1}").
64       gsub(/\*([\w]+)\*/, "@strong{\\1}").
65       gsub(/\<b\>([^<]+)\<\/b\>/, "@strong{\\1}").
66       gsub(/_([\w]+)_/, "@emph{\\1}").
67       gsub(/\<em\>([^<]+)\<\/em\>/, "@emph{\\1}")
68   end
69 end