Guest User

Untitled

a guest
May 21st, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. ## Backend code...
  2.  
  3. class Node
  4. attr_reader :title, :parent
  5.  
  6. def initialize(title, parent=nil)
  7. @title = title
  8. @parent = parent
  9. end
  10. end
  11.  
  12. class NodeSet
  13.  
  14. class Mapper
  15. def initialize(set)
  16. @set = set
  17. end
  18.  
  19. def add(*entities, &block)
  20. options = entities.extract_options!
  21.  
  22. entities.each { |entity| yield map_node(entity, options.dup) }
  23. end
  24.  
  25. private
  26. def map_node(entities, options)
  27. @set.add_node(entities, options.to_s)
  28. end
  29. end
  30.  
  31. attr_accessor :nodes
  32.  
  33. def initialize
  34. self.nodes = Array.new
  35. end
  36.  
  37. def draw
  38. yield Mapper.new(self)
  39. end
  40.  
  41. def add_node(title, parent=nil)
  42. nodes << node = Node.new(title, parent)
  43. node
  44. end
  45.  
  46. def empty?
  47. nodes.empty?
  48. end
  49. end
  50.  
  51. module NodeService
  52. module Backend
  53. Nodes = NodeSet.new
  54. end
  55. end
  56.  
  57. ## testing
  58.  
  59. NodeService::Backend::Nodes.inspect
  60.  
  61. ## Result
  62.  
  63. #<NodeSet:0xb700b650 @nodes=[#<Node:0xb700b420 @parent="testtesting", @title="Root">, #<Node:0xb700b380 @parent="", @title="Hej">]>
Add Comment
Please, Sign In to add comment