class RDoc::Markup::Formatter
Constants
- InlineTag
-
Tag for inline markup containing a
bitfor the bitmask and theonandofftriggers.
Public Class Methods
Source
# File lib/rdoc/markup/formatter.rb, line 27 def self.gen_relative_url(path, target) from = File.dirname path to, to_file = File.split target from = from.split "/" to = to.split "/" from.delete '.' to.delete '.' while from.size > 0 and to.size > 0 and from[0] == to[0] do from.shift to.shift end from.fill ".." from.concat to from << to_file File.join(*from) end
Converts a target url to one that is relative to a given path
Source
# File lib/rdoc/markup/formatter.rb, line 51 def initialize(options, markup = nil) @options = options @markup = markup || RDoc::Markup.new @from_path = '.' end
Creates a new Formatter
Public Instance Methods
Source
# File lib/rdoc/markup/formatter.rb, line 62 def accept_document(document) document.parts.each do |item| case item when RDoc::Markup::Document then # HACK accept_document item else item.accept self end end end
Adds document to the output
Source
# File lib/rdoc/markup/formatter.rb, line 76 def add_regexp_handling_RDOCLINK @markup.add_regexp_handling(/rdoc-[a-z]+:[^\s\]]+/, :RDOCLINK) end
Adds a regexp handling for links of the form rdoc-…:
Source
# File lib/rdoc/markup/formatter.rb, line 83 def annotate(tag) tag end
Allows tag to be decorated with additional information.
Source
# File lib/rdoc/markup/formatter.rb, line 96 def apply_regexp_handling(text) output = [] start = 0 loop do pos = text.size matched_name = matched_text = nil @markup.regexp_handlings.each do |pattern, name| m = text.match(pattern, start) next unless m idx = m[1] ? 1 : 0 if m.begin(idx) < pos pos = m.begin(idx) matched_text = m[idx] matched_name = name end end output << [text[start...pos], false] if pos > start if matched_name handled = public_send(:"handle_regexp_#{matched_name}", matched_text) output << [handled, true] start = pos + matched_text.size else start = pos end break if pos == text.size end output end
Applies regexp handling to text and returns an array of [text, converted?] pairs.
Source
# File lib/rdoc/markup/formatter.rb, line 90 def convert(content) @markup.convert content, self end
Marks up content
Source
# File lib/rdoc/markup/formatter.rb, line 243 def convert_string(string) string end
Converts a string to be fancier if desired
Source
# File lib/rdoc/markup/formatter.rb, line 158 def handle_BOLD(nodes) traverse_inline_nodes(nodes) end
Called when processing bold nodes while traversing inline nodes from handle_inline. Traverse the children nodes and dispatch to the appropriate handlers.
Source
# File lib/rdoc/markup/formatter.rb, line 172 def handle_BOLD_WORD(word) handle_PLAIN_TEXT(word) end
Called when processing bold word nodes while traversing inline nodes from handle_inline. word may need proper escaping.
Source
# File lib/rdoc/markup/formatter.rb, line 165 def handle_EM(nodes) traverse_inline_nodes(nodes) end
Called when processing emphasis nodes while traversing inline nodes from handle_inline. Traverse the children nodes and dispatch to the appropriate handlers.
Source
# File lib/rdoc/markup/formatter.rb, line 179 def handle_EM_WORD(word) handle_PLAIN_TEXT(word) end
Called when processing emphasis word nodes while traversing inline nodes from handle_inline. word may need proper escaping.
Source
# File lib/rdoc/markup/formatter.rb, line 152 def handle_HARD_BREAK end
Called when processing a hard break while traversing inline nodes from handle_inline.
Source
# File lib/rdoc/markup/formatter.rb, line 128 def handle_PLAIN_TEXT(text) end
Called when processing plain text while traversing inline nodes from handle_inline. text may need proper escaping.
Source
# File lib/rdoc/markup/formatter.rb, line 134 def handle_REGEXP_HANDLING_TEXT(text) end
Called when processing regexp-handling-processed text while traversing inline nodes from handle_inline. text may contain markup tags.
Source
# File lib/rdoc/markup/formatter.rb, line 193 def handle_STRIKE(nodes) traverse_inline_nodes(nodes) end
Called when processing strike nodes while traversing inline nodes from handle_inline. Traverse the children nodes and dispatch to the appropriate handlers.
Source
# File lib/rdoc/markup/formatter.rb, line 140 def handle_TEXT(text) apply_regexp_handling(text).each do |part, converted| if converted handle_REGEXP_HANDLING_TEXT(part) else handle_PLAIN_TEXT(part) end end end
Called when processing text node while traversing inline nodes from handle_inline. Apply regexp handling and dispatch to the appropriate handler: handle_REGEXP_HANDLING_TEXT or handle_PLAIN_TEXT.
Source
# File lib/rdoc/markup/formatter.rb, line 202 def handle_TIDYLINK(label_part, url) traverse_inline_nodes(label_part) end
Called when processing tidylink nodes while traversing inline nodes from handle_inline. label_part is an array of strings or nodes representing the link label. url is the link URL. Traverse the label_part nodes and dispatch to the appropriate handlers.
Source
# File lib/rdoc/markup/formatter.rb, line 186 def handle_TT(code) handle_PLAIN_TEXT(code) end
Called when processing tt nodes while traversing inline nodes from handle_inline. code may need proper escaping.
Source
# File lib/rdoc/markup/formatter.rb, line 208 def handle_inline(text) nodes = RDoc::Markup::InlineParser.new(text).parse traverse_inline_nodes(nodes) end
Parses inline text, traverse the resulting nodes, and calls the appropriate handler methods.
Source
# File lib/rdoc/markup/formatter.rb, line 255 def ignore *node end
Use ignore in your subclass to ignore the content of a node.
## # We don't support raw nodes in ToNoRaw alias accept_raw ignore
Source
# File lib/rdoc/markup/formatter.rb, line 261 def parse_url(url) case url when /^rdoc-label:([^:]*)(?::(.*))?/ then scheme = 'link' path = "##{$1}" id = " id=\"#{$2}\"" if $2 when /([A-Za-z]+):(.*)/ then scheme = $1.downcase path = $2 when /^#/ then else scheme = 'http' path = url url = url end if scheme == 'link' then url = if path[0, 1] == '#' then # is this meaningful? path else self.class.gen_relative_url @from_path, path end end [scheme, url, id] end
Extracts and a scheme, url and an anchor id from url and returns them.
Source
# File lib/rdoc/markup/formatter.rb, line 216 def traverse_inline_nodes(nodes) nodes.each do |node| next handle_TEXT(node) if String === node case node[:type] when :TIDYLINK handle_TIDYLINK(node[:children], node[:url]) when :HARD_BREAK handle_HARD_BREAK when :BOLD handle_BOLD(node[:children]) when :BOLD_WORD handle_BOLD_WORD(node[:children][0] || '') when :EM handle_EM(node[:children]) when :EM_WORD handle_EM_WORD(node[:children][0] || '') when :TT handle_TT(node[:children][0] || '') when :STRIKE handle_STRIKE(node[:children]) end end end
Traverses nodes and calls the appropriate handler methods Nodes formats are described in RDoc::Markup::InlineParser#parse
Source
# File lib/rdoc/markup/formatter.rb, line 291 def tt?(tag) tag.bit == @tt_bit end
Is tag a tt tag?