Module: Unite::Fraction

Extended by:
ActiveSupport::Concern
Included in:
Dimension::Vector, SiFactor
Defined in:
lib/unite/fraction.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#expanded_denominatorObject



41
42
43
# File 'lib/unite/fraction.rb', line 41

def expanded_denominator
  expand_unit_array denominator
end

#expanded_numeratorObject



37
38
39
# File 'lib/unite/fraction.rb', line 37

def expanded_numerator
  expand_unit_array numerator
end

#expression(precision = 2) ⇒ Object



29
30
31
# File 'lib/unite/fraction.rb', line 29

def expression precision = 2
  denominator_expression.blank? ? numerator_expression(precision) : "#{numerator_expression(precision)}/#{denominator_expression}"
end

#expression=(string) ⇒ Object



23
24
25
26
27
# File 'lib/unite/fraction.rb', line 23

def expression= string
  self.value, self.numerator, self.denominator = parse_expression string
  reduce
  expression
end

#initialize(*args) ⇒ Object



17
18
19
20
21
# File 'lib/unite/fraction.rb', line 17

def initialize *args
  self.value ||= BigDecimal.new(0)
  self.numerator ||= []
  self.denominator ||= []
end

#inverseObject



45
46
47
48
# File 'lib/unite/fraction.rb', line 45

def inverse
  new_value = value == BigDecimal.new(0) ? BigDecimal.new(0) : BigDecimal.new(1) / value
  self.class.new :value => new_value, :numerator => denominator, :denominator => numerator
end

#reduceObject



50
51
52
53
# File 'lib/unite/fraction.rb', line 50

def reduce
  new_unit = normalized_unit
  convert_to!(normalized_unit) unless new_unit == unit || !self.respond_to?(:convert_to!)
end

#unitObject



33
34
35
# File 'lib/unite/fraction.rb', line 33

def unit
  unit_array_to_string self.numerator, self.denominator
end