2003-12-16 00:44:25 -05:00
|
|
|
require 'yaml'
|
2004-08-30 10:22:26 -04:00
|
|
|
require 'rdoc/markup/simple_markup/fragments'
|
2003-12-16 00:44:25 -05:00
|
|
|
|
2003-12-16 15:28:44 -05:00
|
|
|
# Descriptions are created by RDoc (in ri_generator) and
|
|
|
|
# written out in serialized form into the documentation
|
|
|
|
# tree. ri then reads these to generate the documentation
|
|
|
|
|
2003-12-16 00:44:25 -05:00
|
|
|
module RI
|
2003-12-18 19:01:19 -05:00
|
|
|
class NamedThing
|
|
|
|
attr_reader :name
|
|
|
|
def initialize(name)
|
2003-12-16 00:44:25 -05:00
|
|
|
@name = name
|
|
|
|
end
|
|
|
|
def <=>(other)
|
2003-12-18 19:01:19 -05:00
|
|
|
@name <=> other.name
|
|
|
|
end
|
|
|
|
|
|
|
|
def hash
|
|
|
|
@name.hash
|
|
|
|
end
|
|
|
|
|
|
|
|
def eql?(other)
|
|
|
|
@name.eql?(other)
|
2003-12-16 00:44:25 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2003-12-18 19:01:19 -05:00
|
|
|
# Alias = Struct.new(:old_name, :new_name)
|
|
|
|
|
|
|
|
class AliasName < NamedThing
|
|
|
|
end
|
|
|
|
|
|
|
|
class Attribute < NamedThing
|
|
|
|
attr_reader :rw, :comment
|
|
|
|
def initialize(name, rw, comment)
|
|
|
|
super(name)
|
|
|
|
@rw = rw
|
|
|
|
@comment = comment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class Constant < NamedThing
|
|
|
|
attr_reader :value, :comment
|
|
|
|
def initialize(name, value, comment)
|
|
|
|
super(name)
|
|
|
|
@value = value
|
|
|
|
@comment = comment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class IncludedModule < NamedThing
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class MethodSummary < NamedThing
|
|
|
|
def initialize(name="")
|
|
|
|
super
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2003-12-16 00:44:25 -05:00
|
|
|
|
|
|
|
class Description
|
|
|
|
attr_accessor :name
|
|
|
|
attr_accessor :full_name
|
|
|
|
attr_accessor :comment
|
2003-12-18 19:01:19 -05:00
|
|
|
|
2003-12-16 00:44:25 -05:00
|
|
|
def serialize
|
|
|
|
self.to_yaml
|
|
|
|
end
|
|
|
|
|
|
|
|
def Description.deserialize(from)
|
|
|
|
YAML.load(from)
|
|
|
|
end
|
2003-12-18 19:01:19 -05:00
|
|
|
|
|
|
|
def <=>(other)
|
|
|
|
@name <=> other.name
|
|
|
|
end
|
2003-12-16 00:44:25 -05:00
|
|
|
end
|
|
|
|
|
2003-12-21 02:28:54 -05:00
|
|
|
class ModuleDescription < Description
|
2003-12-16 00:44:25 -05:00
|
|
|
|
2003-12-16 15:28:44 -05:00
|
|
|
attr_accessor :class_methods
|
|
|
|
attr_accessor :instance_methods
|
2003-12-16 00:44:25 -05:00
|
|
|
attr_accessor :attributes
|
|
|
|
attr_accessor :constants
|
|
|
|
attr_accessor :includes
|
|
|
|
|
2003-12-18 16:08:25 -05:00
|
|
|
# merge in another class desscription into this one
|
|
|
|
def merge_in(old)
|
2003-12-18 19:01:19 -05:00
|
|
|
merge(@class_methods, old.class_methods)
|
|
|
|
merge(@instance_methods, old.instance_methods)
|
|
|
|
merge(@attributes, old.attributes)
|
|
|
|
merge(@constants, old.constants)
|
|
|
|
merge(@includes, old.includes)
|
2003-12-21 02:28:54 -05:00
|
|
|
if @comment.nil? || @comment.empty?
|
|
|
|
@comment = old.comment
|
2004-08-30 10:22:26 -04:00
|
|
|
else
|
2006-06-14 18:24:36 -04:00
|
|
|
unless old.comment.nil? or old.comment.empty? then
|
|
|
|
@comment << SM::Flow::RULE.new
|
|
|
|
@comment.concat old.comment
|
|
|
|
end
|
2003-12-21 02:28:54 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def display_name
|
|
|
|
"Module"
|
2003-12-18 19:01:19 -05:00
|
|
|
end
|
|
|
|
|
2004-01-02 01:01:12 -05:00
|
|
|
# the 'ClassDescription' subclass overrides this
|
|
|
|
# to format up the name of a parent
|
|
|
|
def superclass_string
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
2003-12-18 19:01:19 -05:00
|
|
|
private
|
|
|
|
|
|
|
|
def merge(into, from)
|
|
|
|
names = {}
|
|
|
|
into.each {|i| names[i.name] = i }
|
|
|
|
from.each {|i| names[i.name] = i }
|
|
|
|
into.replace(names.keys.sort.map {|n| names[n]})
|
2003-12-18 16:08:25 -05:00
|
|
|
end
|
2003-12-16 00:44:25 -05:00
|
|
|
end
|
|
|
|
|
2003-12-21 02:28:54 -05:00
|
|
|
class ClassDescription < ModuleDescription
|
|
|
|
attr_accessor :superclass
|
|
|
|
|
|
|
|
def display_name
|
|
|
|
"Class"
|
|
|
|
end
|
2004-01-02 01:01:12 -05:00
|
|
|
|
|
|
|
def superclass_string
|
|
|
|
if @superclass && @superclass != "Object"
|
|
|
|
@superclass
|
|
|
|
else
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
end
|
2003-12-21 02:28:54 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
|
2003-12-16 00:44:25 -05:00
|
|
|
class MethodDescription < Description
|
|
|
|
|
|
|
|
attr_accessor :is_class_method
|
|
|
|
attr_accessor :visibility
|
|
|
|
attr_accessor :block_params
|
|
|
|
attr_accessor :is_singleton
|
|
|
|
attr_accessor :aliases
|
|
|
|
attr_accessor :is_alias_for
|
|
|
|
attr_accessor :params
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|