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