Class IHelp::Renderer
In: lib/ihelp.rb
Parent: Object
RiDriver IHelpDriver Renderer lib/ihelp.rb IHelp Module: IHelp

Contains the help renderer methods to be used by IHelp#help. The help-method creates a new instance of Renderer and calls the method defined by IHelp.renderer with the RI info object.

Methods

Public Instance methods

[Source]

     # File lib/ihelp.rb, line 117
117:     def html(info)
118:       puts "Opening help for: #{info.full_name}"
119:       doc = REXML::Document.new
120:       root = doc.add_element("html")
121:       head = root.add_element("head")
122:       title = head.add_element("title")
123:       title.add_text("#{info.full_name} - RI Documentation")
124:       body = root.add_element("body")
125:       body.add_element(info.to_html.root)
126:       tmp = Tempfile.new("#{info.full_name.gsub(/\W/,"_")}_doc.html")
127:       tmp.write( doc.to_s(2) )
128:       tmp.flush
129:       pid = fork{
130:         system("#{IHelp::WWW_BROWSER} 'file://#{tmp.path}'")
131:         tmp.close!
132:       }
133:       Process.detach(pid)
134:       pid
135:     end

Default renderer method, opens the help using the IHelpDriver gotten from IHelp.ri_driver.

[Source]

    # File lib/ihelp.rb, line 89
89:     def ri(info) 
90:       IHelp.ri_driver.display_info(info) 
91:     end

Opens the class documentation page on www.ruby-doc.org using the program defined in IHelp::WWW_BROWSER.

[Source]

     # File lib/ihelp.rb, line 96
 96:     def rubydoc_org(info)
 97:       require 'uri'
 98:       class_name = parse_ruby_doc_url(info.full_name)
 99:       puts "Opening help for: #{class_name.gsub(/\//,"::")}"
100:       system("#{IHelp::WWW_BROWSER} 'http://www.ruby-doc.org/core/classes/#{class_name}.html'")
101:     end

Experimental show sources -renderer using RubyToRuby. Prints the generated source with puts. See blog.zenspider.com/archives/2005/02/rubytoruby.html for more info about RubyToRuby

[Source]

     # File lib/ihelp.rb, line 108
108:     def rubytoruby_src(info)
109:       require 'rubytoruby'
110:       class_name = info.full_name.split(/[#\.]/).first
111:       klass = class_name.split("::").inject(Object){|o,i| o.const_get(i)}
112:       args = [klass]
113:       args << info.name if info.is_a? RI::MethodDescription
114:       puts RubyToRuby.translate(*args)
115:     end

Private Instance methods

[Source]

     # File lib/ihelp.rb, line 138
138:     def parse_ruby_doc_url(item_name)
139:       item_name.split(/\.|#/,2).first.gsub(/::/,"/")
140:     end

[Validate]