1# -*- mode:ruby; indent-tabs-mode:nil; coding:utf-8 -*-
2#
3#  ri_entry.rb
4#  CocoaRepl
5#
6#  Created by Fujimoto Hisa on 07/03/01.
7#  Copyright (c) 2007 FUJIMOTO Hisa. All rights reserved.
8#
9require 'rdoc/ri/ri_writer'
10require 'rdoc/ri/ri_descriptions'
11require 'rdoc/markup/simple_markup/to_flow'
12require 'ri_text_display'
13
14module TextDescriptionStuff
15  def displayer
16    @displayer || @displayer = RiTextDisplay.new
17  end
18end
19
20module OSXEntry
21  def osx?
22    (/^OSX::/ =~ full_name) ? true : false
23  end
24end
25
26class RI::ClassEntry
27  include OSXEntry
28  include TextDescriptionStuff
29
30  attr_reader :in_class, :class_methods, :instance_methods, :inferior_classes
31
32  def description
33    result = nil
34    path_names.each do |path|
35      path = RI::RiWriter.class_desc_path(path, self)
36      desc = File.open(path) {|f| RI::Description.deserialize(f) }
37      if result
38        result.merge_in(desc)
39      else
40        result = desc
41      end
42    end
43    result
44  end
45
46  def text
47    displayer.display_class_info(description, nil)
48  end
49end
50
51class RI::MethodEntry
52  include OSXEntry
53  include TextDescriptionStuff
54
55  attr_reader :is_class_method, :in_class
56
57  def description
58    path = path_name
59    File.open(path) { |f| RI::Description.deserialize(f) }
60  end
61
62  def text
63    displayer.display_method_info(description)
64  end
65end
66