Class: Fiona7::Builder::BatchWidgetWriter
- Inherits:
-
Object
- Object
- Fiona7::Builder::BatchWidgetWriter
show all
- Defined in:
- lib/fiona7/builder/batch_widget_writer.rb
Defined Under Namespace
Classes: WidgetGraph, WidgetNode
Instance Method Summary
collapse
Constructor Details
#initialize(obj, id_map, widget_pool, path_map) ⇒ BatchWidgetWriter
Returns a new instance of BatchWidgetWriter.
68
69
70
71
|
# File 'lib/fiona7/builder/batch_widget_writer.rb', line 68
def initialize(obj, id_map, widget_pool, path_map)
@obj, @id_map, @widget_pool, @path_map = obj, id_map, widget_pool, path_map
@pool_changed = false
end
|
Instance Method Details
#path_map ⇒ Object
106
107
108
|
# File 'lib/fiona7/builder/batch_widget_writer.rb', line 106
def path_map
@path_map
end
|
#pool_changed? ⇒ Boolean
102
103
104
|
# File 'lib/fiona7/builder/batch_widget_writer.rb', line 102
def pool_changed?
!!@pool_changed
end
|
#write ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/fiona7/builder/batch_widget_writer.rb', line 73
def write
widget_nodes = @widget_pool.map do |widget_id, values|
obj_id = @id_map[widget_id]
if values.nil?
@pool_changed = true
@path_map.delete(widget_id)
next
end
if obj_id
builder = WidgetUpdater.new(@obj, widget_id, values.merge(_id: obj_id), @path_map)
else
builder = WidgetBuilder.new(@obj, widget_id, values, @path_map)
@pool_changed = true
end
WidgetNode.new(widget_id, values, builder)
end.compact
widget_graph = WidgetGraph.new(widget_nodes)
widget_graph.tsort.each do |widget_node|
widget_node.builder.build
@path_map[widget_node.id] = widget_node.builder.path
end
end
|