Module: Unitwise::Expression

Defined in:
lib/unitwise/expression.rb,
lib/unitwise/expression/parser.rb,
lib/unitwise/expression/matcher.rb,
lib/unitwise/expression/composer.rb,
lib/unitwise/expression/decomposer.rb,
lib/unitwise/expression/transformer.rb

Overview

The Expression module encompases all functions around encoding and decoding strings into Measurement::Units and vice-versa.

Defined Under Namespace

Classes: Composer, Decomposer, Matcher, Parser, Transformer

Class Method Summary collapse

Class Method Details

.compose(terms) ⇒ String

Build a string representation of a collection of terms

Examples:

Unitwise::Expression.compose(terms) # => "m2/s2"

Parameters:

  • terms (Array)

Returns:

  • (String)


20
21
22
# File 'lib/unitwise/expression.rb', line 20

def compose(terms)
  Composer.new(terms).expression
end

.decompose(expression) ⇒ Array

Convert a string representation of a unit, and turn it into a an array of terms

Examples:

Unitwise::Expression.decompose("m2/s2") 
# => [<Unitwise::Term m2>, <Unitwise::Term s-2>]

Parameters:

  • expression (String) —

    The string you wish to convert

Returns:

  • (Array)


32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/unitwise/expression.rb', line 32

def decompose(expression)
  expression = expression.to_s
  @decompose ||= {}
  if @decompose.has_key?(expression)
    @decompose[expression]
  else
    @decompose[expression] = begin
      Decomposer.new(expression).terms
    rescue ExpressionError
      nil
    end
  end
end