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