Class: JsonCanvas::Canvas
- Inherits:
-
Object
- Object
- JsonCanvas::Canvas
- Defined in:
- lib/json_canvas/canvas.rb
Instance Attribute Summary collapse
-
#edges ⇒ Object
readonly
Returns the value of attribute edges.
-
#nodes ⇒ Object
readonly
Returns the value of attribute nodes.
Class Method Summary collapse
Instance Method Summary collapse
- #add_edge ⇒ Object
- #add_file ⇒ Object
- #add_group ⇒ Object
- #add_link ⇒ Object
- #add_text ⇒ Object
-
#initialize(nodes = [], edges = []) ⇒ Canvas
constructor
A new instance of Canvas.
- #save(filename) ⇒ Object
- #to_json ⇒ Object
Constructor Details
#initialize(nodes = [], edges = []) ⇒ Canvas
Returns a new instance of Canvas.
31 32 33 34 |
# File 'lib/json_canvas/canvas.rb', line 31 def initialize(nodes = [], edges = []) @nodes = nodes @edges = edges end |
Instance Attribute Details
#edges ⇒ Object (readonly)
Returns the value of attribute edges.
9 10 11 |
# File 'lib/json_canvas/canvas.rb', line 9 def edges @edges end |
#nodes ⇒ Object (readonly)
Returns the value of attribute nodes.
9 10 11 |
# File 'lib/json_canvas/canvas.rb', line 9 def nodes @nodes end |
Class Method Details
.parse(json) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/json_canvas/canvas.rb', line 11 def self.parse(json) obj = JSON.parse(json) nodes = obj["nodes"].map do |x| case x["type"] when "text" TextNode.new(**x.transform_keys(&:to_sym)) when "file" FileNode.new(**x.transform_keys(&:to_sym)) when "link" LinkNode.new(**x.transform_keys(&:to_sym)) when "group" GroupNode.new(**x.transform_keys(&:to_sym)) else raise end end edges = obj["edges"].map { |x| Edge.new(**x.transform_keys(&:to_sym)) } Canvas.new(nodes, edges) end |
Instance Method Details
#add_edge ⇒ Object
60 61 62 63 64 |
# File 'lib/json_canvas/canvas.rb', line 60 def add_edge(**) edge = Edge.new(**) edges.push(edge) edge end |
#add_file ⇒ Object
42 43 44 45 46 |
# File 'lib/json_canvas/canvas.rb', line 42 def add_file(**) node = FileNode.new(**) nodes.push(node) node end |
#add_group ⇒ Object
54 55 56 57 58 |
# File 'lib/json_canvas/canvas.rb', line 54 def add_group(**) node = GroupNode.new(**) nodes.push(node) node end |
#add_link ⇒ Object
48 49 50 51 52 |
# File 'lib/json_canvas/canvas.rb', line 48 def add_link(**) node = LinkNode.new(**) nodes.push(node) node end |
#add_text ⇒ Object
36 37 38 39 40 |
# File 'lib/json_canvas/canvas.rb', line 36 def add_text(**) node = TextNode.new(**) nodes.push(node) node end |
#save(filename) ⇒ Object
73 74 75 |
# File 'lib/json_canvas/canvas.rb', line 73 def save(filename) File.write(filename, to_json) end |
#to_json ⇒ Object
66 67 68 69 70 71 |
# File 'lib/json_canvas/canvas.rb', line 66 def to_json JSON.generate({ nodes: nodes.map { |x| x.to_hash }, edges: edges.map { |x| x.to_hash } }) end |