Sha256: 1edce283a2c1e7b7f5665abdc8bf6f1d363814f02145d84578cdba3d34983233

Contents?: true

Size: 805 Bytes

Versions: 3

Compression:

Stored size: 805 Bytes

Contents

#encoding: utf-8
module PointRb
  class LayoutTree

    attr_reader :tree, :active_node

    def initialize(root_node)
      @counter = -1
      @tree = Tree::TreeNode.new(node_id, root_node)
      @active_node = @tree
      @prng = Random.new
    end

    def add_node(node)
      node = Tree::TreeNode.new(node_id, node)
      @active_node << node
      @active_node = node
    end

    def up
      @active_node = @active_node.parent
    end

    def serialize(&block)
      serialized_tree = [] 

      #default action during serialize
      block = lambda { |node| node.content } unless block
      @tree.each do |node| 
        serialized_tree << block.call(node)
      end

      serialized_tree
    end

    private

    def node_id
      @counter += 1

      "node#{@counter}"
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pointrb-0.1.2 lib/pointrb/layout_tree.rb
pointrb-0.1.1 lib/pointrb/layout_tree.rb
pointrb-0.1.0 lib/pointrb/layout_tree.rb