Sha256: 6af441e6822cab1fece6d1e7a11e5d7e21c4c83020e2491961400b3043e7f092
Contents?: true
Size: 1.64 KB
Versions: 4
Compression:
Stored size: 1.64 KB
Contents
# Copyright: Copyright (c) 2004 Nicolas Despres. All rights reserved. # Author: Nicolas Despres <polrop@lrde.epita.fr>. # License: Gnu General Public License. # $LastChangedBy: ertai $ # $Id: abstract_node.rb 186 2005-04-03 00:07:45Z ertai $ require 'abstract' require 'array_each_pair' class AbstractNode include Abstract def initialize(data=nil, *sub_nodes) @data = data self.each_node { |sub_node| check_sub_node_type(sub_node) } end attr_reader :data, :sub_nodes def [](index) @sub_nodes[index] end def []=(index, sub_node) check_sub_node_type(sub_node) @sub_nodes[index] = sub_node end def merge!(sub_nodes) sub_nodes.each { |index, sub_node| self[index] = sub_node } end def each_pair(&block) @sub_nodes.each_pair { |index, sub_node| block[index, sub_node] } end def each_node(&block) @sub_nodes.each_pair { |index, sub_node| block[sub_node] } end alias :each :each_node def each_index(&block) @sub_nodes.each_pair { |index, sub_node| block[index] } end def delete(index) @sub_nodes.delete(index) end def nb_sub_nodes @sub_nodes.size end alias size nb_sub_nodes alias length nb_sub_nodes def leaf? @sub_nodes.empty? end def pre_depth_first(index=nil, &block) block[index, self] @sub_nodes.each_pair do |index, sub_node| sub_node.pre_depth_first(index, &block) end nil end # FIXME: implement me # def breadth_first(&block) # end protected def check_sub_node_type(sub_node) unless sub_node.is_a?(self.class) raise(TypeError, "`#{sub_node}' - must be a #{self.class}") end end end # class AbstractNode
Version data entries
4 entries across 4 versions & 2 rubygems
Version | Path |
---|---|
ttk-0.1.576 | ruby_ex/abstract_node.rb |
ttk-0.1.579 | ruby_ex/abstract_node.rb |
ttk-0.1.580 | ruby_ex/abstract_node.rb |
vcs-0.2.148 | ruby_ex/abstract_node.rb |