Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Backend code...
- class Node
- attr_reader :title, :parent
- def initialize(title, parent=nil)
- @title = title
- @parent = parent
- end
- end
- class NodeSet
- class Mapper
- def initialize(set)
- @set = set
- end
- def add(*entities, &block)
- options = entities.extract_options!
- entities.each { |entity| yield map_node(entity, options.dup) }
- end
- private
- def map_node(entities, options)
- @set.add_node(entities, options.to_s)
- end
- end
- attr_accessor :nodes
- def initialize
- self.nodes = Array.new
- end
- def draw
- yield Mapper.new(self)
- end
- def add_node(title, parent=nil)
- nodes << node = Node.new(title, parent)
- node
- end
- def empty?
- nodes.empty?
- end
- end
- module NodeService
- module Backend
- Nodes = NodeSet.new
- end
- end
- ## testing
- NodeService::Backend::Nodes.inspect
- ## Result
- #<NodeSet:0xb700b650 @nodes=[#<Node:0xb700b420 @parent="testtesting", @title="Root">, #<Node:0xb700b380 @parent="", @title="Hej">]>
Add Comment
Please, Sign In to add comment