Sha256: 6c3adb1ce29162ae3049b10688498eca3e9ec91956143384ac744ab826bbd284
Contents?: true
Size: 1.47 KB
Versions: 5
Compression:
Stored size: 1.47 KB
Contents
require 'unitwise/expression/matcher' require 'unitwise/expression/parser' require 'unitwise/expression/transformer' require 'unitwise/expression/composer' require 'unitwise/expression/decomposer' module Unitwise # The Expression module encompases all functions around encoding and decoding # strings into Measurement::Units and vice-versa. module Expression class << self # Build a string representation of a collection of terms # @param terms [Array] # @return [String] # @example # Unitwise::Expression.compose(terms) # => "m2/s2" # @api public def compose(terms) Composer.new(terms).expression end # Convert a string representation of a unit, and turn it into a # an array of terms # @param expression [String] The string you wish to convert # @return [Array] # @example # Unitwise::Expression.decompose("m2/s2") # # => [<Unitwise::Term m2>, <Unitwise::Term s-2>] # @api public def decompose(expression) expression = expression.to_s if decomposed.key?(expression) decomposed[expression] else decomposed[expression] = begin Decomposer.new(expression).terms rescue ExpressionError nil end end end private # A cache of decomposed strings. # @return [Hash] # @api private def decomposed @decomposed ||= {} end end end end
Version data entries
5 entries across 5 versions & 1 rubygems