lib/quantify/unit/compound_base_unit.rb in quantify-1.1.0 vs lib/quantify/unit/compound_base_unit.rb in quantify-1.2.0

- old
+ new

@@ -29,34 +29,26 @@ def is_dimensionless? @index == 0 end # Absolute index as names always contain 'per' before denominator units - def name + def name(reciprocal=false) name_to_power(@unit.name, @index.abs) end def pluralized_name name_to_power(@unit.pluralized_name, @index.abs) end - def symbol - @unit.symbol.to_s + ( @index.nil? || @index == 1 ? "" : formatted_index ) + def symbol(reciprocal=false) + @unit.symbol + index_as_string(reciprocal) end - def label - @unit.label + (@index == 1 ? "" : formatted_index) + def label(reciprocal=false) + @unit.label + index_as_string(reciprocal) end - # Reciprocalized version of label, i.e. sign changed. This is used to make - # a denominator unit renderable in cases where there are no numerator units, - # i.e. where no '/' appears in the label - # - def reciprocalized_label - @unit.label + (@index == -1 ? "" : formatted_index(@index * -1)) - end - def factor @unit.factor ** @index end def is_numerator? @@ -65,12 +57,13 @@ def is_denominator? @index < 0 end - # The following methods refer only to the unit of the CompoundBaseUnit - # object, rather than the unit *together with its index* + def measures + dimensions.describe + end def is_base_quantity_si_unit? @unit.is_base_quantity_si_unit? end @@ -95,36 +88,42 @@ end def is_derived_unit? @unit.is_derived_unit? end - - def measures - @unit.measures - end def initialize_copy(source) instance_variable_set("@unit", @unit.clone) end private # Returns a string representation of the unit index, formatted according to - # the global superscript configuration + # the global superscript configuration. # + # The index value can be overridden by specifying as an argument. + # def formatted_index(index=nil) index = "^#{index.nil? ? @index : index}" - Quantify.use_superscript_characters? ? index.with_superscript_characters : index + Unit.use_superscript_characters? ? index.with_superscript_characters : index end + def index_as_string(reciprocal=false) + if reciprocal == true + @index == -1 ? "" : formatted_index(@index * -1) + else + @index.nil? || @index == 1 ? "" : formatted_index + end + end + def name_to_power(string,index) name = string.clone case index when 1 then name when 2 then "square #{name}" when 3 then "cubic #{name}" else - ordinal = ActiveSupport::Inflector.ordinalize index + ordinal = ActiveSupport::Inflector.ordinalize(index) name << " to the #{ordinal} power" end end end end \ No newline at end of file