Class IHelp::IHelpDriver
In: lib/ihelp.rb
Parent: RiDriver
Ferret::Analysis::StandardAnalyzer IHelpAnalyzer RiDriver IHelpDriver IHelpIndex Renderer lib/ihelp.rb IHelp dot/m_0_1.png

Version of RiDriver that takes its options as parameter to initialize.

Methods

Attributes

display  [RW] 
ri_reader  [RW] 

Public Class methods

Create new IHelpDriver, with the given args passed to @options, which is a RI::Options.instance

[Source]

     # File lib/ihelp.rb, line 500
500:     def initialize(args = (ENV["RI"] || "").split)
501:       @options = RI::Options.instance
502:       @options.parse(args)
503: 
504:       paths =  (if RUBY_VERSION > "1.8.4"
505:                   @options.doc_dir
506:                 else
507:                   @options.paths
508:                 end) || RI::Paths::PATH
509:       if paths.empty?
510:         report_missing_documentation(paths)
511:       end
512:       @ri_reader = RI::RiReader.new(RI::RiCache.new(paths))
513:       @display   = @options.displayer
514:     end

Public Instance methods

Display the info based on if it‘s for a class or a method. Using ri‘s pager.

[Source]

     # File lib/ihelp.rb, line 539
539:     def display_info(info)
540:       case [info.class] # only info.class doesn't work
541:       when [RI::ClassDescription]
542:         @display.display_class_info(info, @ri_reader)
543:       when [RI::MethodDescription]
544:         @display.display_method_info(info)
545:       end
546:     end

Get info for the class in the given namespaces.

[Source]

     # File lib/ihelp.rb, line 550
550:     def get_class_info_str(namespaces, klass_name)
551:       return nil if namespaces.empty?
552:       klass_name_last = klass_name.split("::").last
553:       klass = nil
554:       namespaces.find{|ns|
555:         begin
556:           ns.name == klass_name_last and
557:           klass = @ri_reader.get_class(ns)
558:         rescue TypeError
559:           nil
560:         end
561:       }
562:       klass
563:     end

Get info string from ri database for klass_name [method_name]

[Source]

     # File lib/ihelp.rb, line 518
518:     def get_info_str(klass_name, method_name = nil, instance = false)
519:       is_class_method = (not instance)
520:       top_level_namespace = @ri_reader.top_level_namespace
521:       namespaces = klass_name.split(/::/).inject(top_level_namespace){
522:         |ns, current_name|
523:         @ri_reader.lookup_namespace_in(current_name, ns)
524:       }
525:       return nil if namespaces.empty?
526:       if method_name.nil?
527:         get_class_info_str(namespaces, klass_name)
528:       else
529:         methods = @ri_reader.find_methods(
530:                     method_name, is_class_method, namespaces)
531:         return nil if methods.empty?
532:         get_method_info_str(method_name, methods)
533:       end
534:     end

Get info for the method in the given methods.

[Source]

     # File lib/ihelp.rb, line 567
567:     def get_method_info_str(requested_method_name, methods)
568:       entries = methods.find_all {|m| m.name == requested_method_name}
569:       return nil if entries.empty?
570:       method = nil
571:       entries.find{|entry| method = @ri_reader.get_method(entry)}
572:       method
573:     end

[Validate]