Class: Nodes

Inherits:
Object show all
Defined in:
ext/internal/node/nodes.rb

Defined Under Namespace

Classes: MemberInfo, NodeInfo

Instance Method Summary collapse

Constructor Details

#initialize(filename = nil) ⇒ Nodes

Returns a new instance of Nodes.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'ext/internal/node/nodes.rb', line 41

def initialize(filename = nil)
  if not filename then
    dir = File.dirname(__FILE__)
    filename = File.join(dir, 'nodes.yaml')
  end
  nodes = File.open(filename) { |io| YAML.load(io) }

  @nodes = {}
  nodes.each do |name, node|
    members = {}
    # TODO: is there any way to enforce order here?
    (node['members'] || {}).each do |member_name, member|
      member ||= {}
      members[member_name] = MemberInfo.new(
          member['doc'],
          member['type'])
    end
    version_range = NodeVersionRange.new(node['version'])
    @nodes[name] = NodeInfo.new(
        name.gsub(/\(.*\)/, ''),
        node['doc'],
        members,
        version_range)
  end
end

Instance Method Details

#[](name) ⇒ Object



71
72
73
# File 'ext/internal/node/nodes.rb', line 71

def [](name)
  @nodes[name]
end

#each(&block) ⇒ Object



67
68
69
# File 'ext/internal/node/nodes.rb', line 67

def each(&block)
  @nodes.sort.each(&block)
end

#include?(name) ⇒ Boolean

Returns:

  • (Boolean)


75
76
77
# File 'ext/internal/node/nodes.rb', line 75

def include?(name)
  @nodes.include?(name)
end