Class: Machinery::Ui::Renderer
Defined Under Namespace
Classes: InvalidStructureError
Constant Summary
collapse
- @@renderers =
[]
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Instance Attribute Details
Returns the value of attribute buffer.
69
70
71
|
# File 'lib/renderer.rb', line 69
def buffer
@buffer
end
|
#system_description ⇒ Object
Returns the value of attribute system_description.
68
69
70
|
# File 'lib/renderer.rb', line 68
def system_description
@system_description
end
|
Class Method Details
81
82
83
|
# File 'lib/renderer.rb', line 81
def all
@@renderers.map(&:new)
end
|
.for(scope) ⇒ Object
85
86
87
88
89
90
91
92
|
# File 'lib/renderer.rb', line 85
def for(scope)
class_name = "Machinery::Ui::#{scope.split("_").map(&:capitalize).join}Renderer"
begin
Object.const_get(class_name).new
rescue NameError
end
end
|
.inherited(klass) ⇒ Object
77
78
79
|
# File 'lib/renderer.rb', line 77
def inherited(klass)
@@renderers << klass
end
|
Instance Method Details
#compare_content_common(description) ⇒ Object
178
179
180
|
# File 'lib/renderer.rb', line 178
def compare_content_common(description)
content(description)
end
|
#compare_content_only_in(description) ⇒ Object
174
175
176
|
# File 'lib/renderer.rb', line 174
def compare_content_only_in(description)
content(description)
end
|
#render(system_description, options = {}) ⇒ Object
Renders one system description using the specialized ‘content` method
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
# File 'lib/renderer.rb', line 103
def render(system_description, options = {})
@options = options
@buffer = ""
@indent = 2
@stack = []
if system_description[scope]
= display_name
meta = system_description[scope].meta
if meta
+= " [#{meta.hostname}]"
date = Time.parse(meta.modified).localtime
date_human = date.strftime "%Y-%m-%d %H:%M:%S"
+= " (#{date_human})"
end
heading()
end
content(system_description)
@buffer += "\n" unless @buffer.empty? || @buffer.end_with?("\n\n")
@buffer
end
|
#render_comparison(comparison, options = {}) ⇒ Object
Renders the result of a comparison of two system descriptions.
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
# File 'lib/renderer.rb', line 131
def render_comparison(comparison, options = {})
@options = options
@buffer = ""
@indent = 0
@stack = []
show_heading = if options[:show_all]
comparison.only_in1 || comparison.only_in2 || comparison.changed || comparison.common
else
comparison.only_in1 || comparison.only_in2 || comparison.changed
end
heading(display_name) if show_heading
render_comparison_only_in(comparison.as_description(:one))
render_comparison_only_in(comparison.as_description(:two))
render_comparison_changed(comparison) if comparison.changed
render_comparison_common(comparison.as_description(:common)) if @options[:show_all]
@buffer
end
|
#render_comparison_changed(comparison) ⇒ Object
160
161
162
163
164
|
# File 'lib/renderer.rb', line 160
def render_comparison_changed(comparison)
puts "In both with different attributes ('#{comparison.name1}' <> '#{comparison.name2}'):"
indent { compare_content_changed(comparison.changed) }
@buffer += "\n" unless @buffer.empty? || @buffer.end_with?("\n\n")
end
|
#render_comparison_common(description) ⇒ Object
166
167
168
169
170
171
172
|
# File 'lib/renderer.rb', line 166
def render_comparison_common(description)
return unless description[scope]
puts "Common to both systems:"
indent { compare_content_common(description) }
@buffer += "\n" unless @buffer.empty? || @buffer.end_with?("\n\n")
end
|
#render_comparison_missing_scope(description1, description2) ⇒ Object
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
# File 'lib/renderer.rb', line 182
def render_comparison_missing_scope(description1, description2)
@buffer = ""
@indent = 0
@stack = []
missing_descriptions = Array.new
unless description1[scope]
missing_descriptions << description1.name
end
unless description2[scope]
missing_descriptions << description2.name
end
if missing_descriptions.count == 1
@buffer += "# #{display_name}\n"
indent { puts "Unable to compare, no data in '#{missing_descriptions.join("', '")}'" }
end
@buffer += "\n" unless @buffer.empty? || @buffer.end_with?("\n\n")
@buffer
end
|
#render_comparison_only_in(description) ⇒ Object
152
153
154
155
156
157
158
|
# File 'lib/renderer.rb', line 152
def render_comparison_only_in(description)
return if !description[scope] || description[scope].elements.try(:empty?)
puts "Only in '#{description.name}':"
indent { compare_content_only_in(description) }
@buffer += "\n" unless @buffer.empty? || @buffer.end_with?("\n\n")
end
|
95
96
97
98
99
100
|
# File 'lib/renderer.rb', line 95
def scope
scope = self.class.name.match(/^Machinery::Ui::(.*)Renderer$/)[1]
scope.gsub(/([^A-Z])([A-Z])/, "\\1_\\2").downcase
end
|