lib/rubiks/nodes/measure.rb in rubiks-0.0.4 vs lib/rubiks/nodes/measure.rb in rubiks-0.0.5
- old
+ new
@@ -1,15 +1,15 @@
require 'rubiks/nodes/validated_node'
module ::Rubiks
class Measure < ::Rubiks::AnnotatedNode
- value :column, String
value :aggregator, String
+ value :column, String
value :format_string, String
- validates :column_present, :aggregator_present
+ validates :aggregator_present
def self.new_from_hash(hash={})
new_instance = new
return new_instance.from_hash(hash)
end
@@ -26,41 +26,50 @@
end
def to_hash
hash = {}
- hash['name'] = self.name.to_s if self.name.present?
- hash['column'] = self.column.to_s if self.column.present?
- hash['aggregator'] = self.aggregator.to_s if self.aggregator.present?
- hash['format_string'] = self.format_string.to_s if self.format_string.present?
+ hash['name'] = self.name if self.name.present?
+ hash['aggregator'] = self.aggregator if self.aggregator.present?
+ hash['format_string'] = self.format_string if self.format_string.present?
+ hash['column'] = self.column if self.column.present?
return hash
end
- def column_present
- errors << 'Column required on Measure' if self.column.blank?
+ def aggregator_present
+ errors << 'Aggregator required on Measure' if self.aggregator.blank?
end
def parse_column(column_value)
- return if column_value.nil?
+ return if column_value.nil? && self.name.blank?
- self.column = column_value.to_s
+ self.column = column_value.nil? ?
+ self.name.underscore :
+ column_value.to_s
end
- def aggregator_present
- errors << 'Aggregator required on Measure' if self.aggregator.blank?
- end
-
def parse_aggregator(aggregator_value)
return if aggregator_value.nil?
self.aggregator = aggregator_value.to_s
end
def parse_format_string(format_string_value)
return if format_string_value.nil?
self.format_string = format_string_value.to_s
+ end
+
+ def to_xml(builder = nil)
+ builder = Builder::XmlMarkup.new(:indent => 2) if builder.nil?
+
+ attrs = self.to_hash
+ attrs['name'] = self.display_name if self.name.present?
+ attrs.keys.each do |key|
+ attrs[key.camelize(:lower)] = attrs.delete(key)
+ end
+ builder.measure(attrs)
end
end
end