Class: RDoc::Markup::ToHtmlCrossref
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: | |
| Instance Chain: | |
| Inherits: | RDoc::Markup::ToHtml 
 | 
| Defined in: | lib/rdoc/markup/to_html_crossref.rb | 
Overview
Subclass of the ToHtml class that supports looking up method names, classes, etc to create links.  ::RDoc::CrossReference is used to generate those links based on the current context.
Constant Summary
- 
    ALL_CROSSREF_REGEXP =
    Internal use only
    
 # File 'lib/rdoc/markup/to_html_crossref.rb', line 10RDoc::CrossReference::ALL_CROSSREF_REGEXP 
- 
    CLASS_REGEXP_STR =
    Internal use only
    
 # File 'lib/rdoc/markup/to_html_crossref.rb', line 11RDoc::CrossReference::CLASS_REGEXP_STR 
- 
    CROSSREF_REGEXP =
    Internal use only
    
 # File 'lib/rdoc/markup/to_html_crossref.rb', line 12RDoc::CrossReference::CROSSREF_REGEXP 
- 
    METHOD_REGEXP_STR =
    Internal use only
    
 # File 'lib/rdoc/markup/to_html_crossref.rb', line 13RDoc::CrossReference::METHOD_REGEXP_STR 
::RDoc::Text - Included
  MARKUP_FORMAT, TO_HTML_CHARACTERS
ToHtml - Inherited
  
Class Method Summary
- 
    
      .new(options, from_path, context, markup = nil)  ⇒ ToHtmlCrossref 
    
    constructor
    Creates a new crossref resolver that generates links relative to #context which lives at from_pathin the generated files.
ToHtml - Inherited
| .new | Creates a new formatter that will output HTML. | 
Formatter - Inherited
| .gen_relative_url | Converts a target url to one that is relative to a given path. | 
| .new | Creates a new  | 
Instance Attribute Summary
- 
    
      #context  
    
    rw
    ::RDoc::CodeObjectfor generating references.
- 
    
      #show_hash  
    
    rw
    Should we show ‘#’ characters on method references? 
ToHtml - Inherited
| #code_object | The  | 
| #from_path | Path to this document for relative links. | 
| #in_list_entry, #list, #res | |
Formatter - Inherited
| #in_tt? | Are we currently inside tt tags? | 
Instance Method Summary
- 
    
      #cross_reference(name, text = nil, code = true)  
    
    Creates a link to the reference nameif the name exists.
- 
    
      #gen_url(url, text)  
    
    Generates links for rdoc-ref:scheme URLs and allowsToHtmlto handle other schemes.
- 
    
      #handle_regexp_CROSSREF(target)  
    
    We’re invoked when any text matches the CROSSREF pattern. 
- 
    
      #handle_regexp_HYPERLINK(target)  
    
    Handles rdoc-ref:scheme links and allowsToHtmlto handle other schemes.
- 
    
      #handle_regexp_RDOCLINK(target)  
    
    targetis an rdoc-schemed link that will be converted into a hyperlink.
- 
    
      #link(name, text, code = true)  
    
    Creates an HTML link to namewith the giventext.
ToHtml - Inherited
| #accept_blank_line | Adds  | 
| #accept_block_quote | Adds  | 
| #accept_heading | Adds  | 
| #accept_list_end | Finishes consumption of  | 
| #accept_list_item_end | Finishes consumption of  | 
| #accept_list_item_start | Prepares the visitor for consuming  | 
| #accept_list_start | Prepares the visitor for consuming  | 
| #accept_paragraph | Adds  | 
| #accept_raw | Adds  | 
| #accept_rule | Adds  | 
| #accept_verbatim | Adds  | 
| #convert_string | CGI-escapes  | 
| #end_accepting | Returns the generated output. | 
| #gen_url | Generate a link to  | 
| #handle_regexp_HARD_BREAK | 
 | 
| #handle_regexp_HYPERLINK | 
 | 
| #handle_regexp_RDOCLINK | 
 | 
| #handle_regexp_TIDYLINK | This  | 
| #html_list_name | Determines the HTML list element for  | 
| #init_tags | Maps attributes to HTML tags. | 
| #list_end_for | Returns the HTML end-tag for  | 
| #list_item_start | Returns the HTML tag for  | 
| #parseable? | Returns true if text is valid ruby syntax. | 
| #start_accepting | Prepares the visitor for HTML generation. | 
| #to_html | Converts  | 
| #handle_RDOCLINK | These methods are used by regexp handling markup added by #add_regexp_handling. | 
::RDoc::Text - Included
| #expand_tabs | Expands tab characters in  | 
| #flush_left | Flush  | 
| #markup | Convert a string in markup format into HTML. | 
| #normalize_comment | Strips hashes, expands tabs then flushes  | 
| #parse | Normalizes  | 
| #snippet | The first  | 
| #strip_hashes | Strips leading # characters from  | 
| #strip_newlines | Strips leading and trailing n characters from  | 
| #strip_stars | Strips /* */ style comments. | 
| #to_html | Converts ampersand, dashes, ellipsis, quotes, copyright and registered trademark symbols in  | 
| #wrap | Wraps  | 
Formatter - Inherited
| #accept_document | Adds  | |
| #add_regexp_handling_RDOCLINK | Adds a regexp handling for links of the form rdoc-…: | |
| #add_regexp_handling_TIDYLINK | Adds a regexp handling for links of the form  | Add a new set of tags for an attribute. | 
| #annotate | Allows  | |
| #convert | Marks up  | |
| #convert_flow | Converts flow items  | |
| #convert_regexp_handling | Converts added regexp handlings. | |
| #convert_string | Converts a string to be fancier if desired. | |
| #ignore | Use ignore in your subclass to ignore the content of a node. | |
| #off_tags | Turns off tags for  | |
| #on_tags | Turns on tags for  | |
| #parse_url | Extracts and a scheme, url and an anchor id from  | |
| #tt? | Is  | 
Constructor Details
    .new(options, from_path, context, markup = nil)  ⇒ ToHtmlCrossref 
  
Creates a new crossref resolver that generates links relative to #context which lives at from_path in the generated files.  ‘#’ characters on references are removed unless #show_hash is true.  Only method names preceded by ‘#’ or ‘::’ are linked, unless hyperlink_all is true.
# File 'lib/rdoc/markup/to_html_crossref.rb', line 32
def initialize(, from_path, context, markup = nil) raise ArgumentError, 'from_path cannot be nil' if from_path.nil? super , markup @context = context @from_path = from_path @hyperlink_all = @options.hyperlink_all @show_hash = @options.show_hash crossref_re = @hyperlink_all ? ALL_CROSSREF_REGEXP : CROSSREF_REGEXP @markup.add_regexp_handling crossref_re, :CROSSREF @cross_reference = RDoc::CrossReference.new @context end
Instance Attribute Details
#context (rw)
::RDoc::CodeObject for generating references
# File 'lib/rdoc/markup/to_html_crossref.rb', line 19
attr_accessor :context
#show_hash (rw)
Should we show ‘#’ characters on method references?
# File 'lib/rdoc/markup/to_html_crossref.rb', line 24
attr_accessor :show_hash
Instance Method Details
#cross_reference(name, text = nil, code = true)
Creates a link to the reference name if the name exists.  If text is given it is used as the link text, otherwise name is used.
# File 'lib/rdoc/markup/to_html_crossref.rb', line 52
def cross_reference name, text = nil, code = true lookup = name name = name[1..-1] unless @show_hash if name[0, 1] == '#' if name =~ /(.*[^#:])@/ text ||= "#{CGI.unescape $'} at <code>#{$1}</code>" code = false else text ||= name end link lookup, text, code end
#gen_url(url, text)
Generates links for rdoc-ref: scheme URLs and allows ToHtml to handle other schemes.
# File 'lib/rdoc/markup/to_html_crossref.rb', line 122
def gen_url url, text return super unless url =~ /\Ardoc-ref:/ name = $' cross_reference name, text, name == text end
#handle_regexp_CROSSREF(target)
We’re invoked when any text matches the CROSSREF pattern.  If we find the corresponding reference, generate a link.  If the name we’re looking for contains no punctuation, we look for it up the module/class chain.  For example, ToHtml is found, even without the RDoc::Markup:: prefix, because we look for it in module ::RDoc::Markup first.
# File 'lib/rdoc/markup/to_html_crossref.rb', line 74
def handle_regexp_CROSSREF(target) name = target.text return name if name =~ /@[\w-]+\.[\w-]/ # labels that look like emails unless @hyperlink_all then # This ensures that words entirely consisting of lowercase letters will # not have cross-references generated (to suppress lots of erroneous # cross-references to "new" in text, for instance) return name if name =~ /\A[a-z]*\z/ end cross_reference name end
#handle_regexp_HYPERLINK(target)
Handles rdoc-ref: scheme links and allows ToHtml to handle other schemes.
# File 'lib/rdoc/markup/to_html_crossref.rb', line 93
def handle_regexp_HYPERLINK target return cross_reference $' if target.text =~ /\Ardoc-ref:/ super end
#handle_regexp_RDOCLINK(target)
target is an rdoc-schemed link that will be converted into a hyperlink. For the rdoc-ref scheme the cross-reference will be looked up and the given name will be used.
All other contents are handled by the superclass
# File 'lib/rdoc/markup/to_html_crossref.rb', line 107
def handle_regexp_RDOCLINK target url = target.text case url when /\Ardoc-ref:/ then cross_reference $' else super end end
#link(name, text, code = true)
Creates an HTML link to name with the given text.
# File 'lib/rdoc/markup/to_html_crossref.rb', line 132
def link name, text, code = true if name =~ /(.*[^#:])@/ then name = $1 label = $' end ref = @cross_reference.resolve name, text case ref when String then ref else path = ref.as_href @from_path if code and RDoc::CodeObject === ref and !(RDoc::TopLevel === ref) text = "<code>#{text}</code>" end if path =~ /#/ then path << "-label-#{label}" elsif ref.sections and ref.sections.any? { |section| label == section.title } then path << "##{label}" else path << "#label-#{label}" end if label "<a href=\"#{path}\">#{text}</a>" end end