lib/systeme/metric.rb in farski-systeme-0.2.1 vs lib/systeme/metric.rb in farski-systeme-0.3.0

- old
+ new

@@ -1,62 +1,19 @@ require 'systeme/registration' +require 'systeme/localize' module Systeme module Metric def self.included(caller) caller.send :include, Systeme::Metric::Declarations - end - + end + module Units - SI_BASE_UNITS = Hash.new - SI_BASE_UNITS[:meter] = { :symbol => :m, :measure => "length" } - SI_BASE_UNITS[:gram] = { :symbol => :g, :measure => "mass", :factor_offset => -3 } - SI_BASE_UNITS[:second] = { :symbol => :s, :measure => "time" } - SI_BASE_UNITS[:ampere] = { :symbol => :A, :measure => "electric current" } - SI_BASE_UNITS[:kelvin] = { :symbol => :K, :measure => "thermodynamic temperature" } - - SI_UNIT_PREFIXES = Hash.new - SI_UNIT_PREFIXES[:yocto] = { :factor => -24, :symbol_prefix => "y" } - SI_UNIT_PREFIXES[:zepto] = { :factor => -21, :symbol_prefix => "z" } - SI_UNIT_PREFIXES[:atto] = { :factor => -18, :symbol_prefix => "a" } - SI_UNIT_PREFIXES[:femto] = { :factor => -15, :symbol_prefix => "f" } - SI_UNIT_PREFIXES[:pico] = { :factor => -12, :symbol_prefix => "p" } - SI_UNIT_PREFIXES[:nano] = { :factor => -9, :symbol_prefix => "n" } - SI_UNIT_PREFIXES[:micro] = { :factor => -6, :symbol_prefix => "u" } # use of 'ยต' should be supported with unicode? - SI_UNIT_PREFIXES[:milli] = { :factor => -3, :symbol_prefix => "m" } - SI_UNIT_PREFIXES[:centi] = { :factor => -2, :symbol_prefix => "c" } - SI_UNIT_PREFIXES[:deci] = { :factor => -1, :symbol_prefix => "d" } - SI_UNIT_PREFIXES[:deca] = { :factor => 1, :symbol_prefix => "da" } - SI_UNIT_PREFIXES[:hecto] = { :factor => 2, :symbol_prefix => "h" } - SI_UNIT_PREFIXES[:kilo] = { :factor => 3, :symbol_prefix => "k" } - SI_UNIT_PREFIXES[:mega] = { :factor => 6, :symbol_prefix => "M" } - SI_UNIT_PREFIXES[:giga] = { :factor => 9, :symbol_prefix => "G" } - SI_UNIT_PREFIXES[:tera] = { :factor => 12, :symbol_prefix => "T" } - SI_UNIT_PREFIXES[:peta] = { :factor => 15, :symbol_prefix => "P" } - SI_UNIT_PREFIXES[:exa] = { :factor => 18, :symbol_prefix => "E" } - SI_UNIT_PREFIXES[:zetta] = { :factor => 21, :symbol_prefix => "Z" } - SI_UNIT_PREFIXES[:yotta] = { :factor => 24, :symbol_prefix => "Y" } - end # Units + Metric = Hash.new + Metric['carat'] = { :si => 0.0002, :units => [ { :unit => 'carat', :factor => 1, :aliases => ['CD'] } ] } + end module Declarations - Systeme::Metric::Units::SI_BASE_UNITS.each do |unit, unit_data| - unit_factor_offset = (unit_data[:factor_offset] ? unit_data[:factor_offset] : 0 ) - plural_unit_name = unit.to_s + "s" - - define_method(plural_unit_name.to_sym) { self * (10**(unit_factor_offset)) } - class_eval("alias :" + unit_data[:symbol].to_s + " :" + plural_unit_name) - class_eval("alias :" + plural_unit_name.chop + " :" + plural_unit_name) - Systeme::Registration::names << plural_unit_name << unit_data[:symbol].to_s << plural_unit_name.chop - - Systeme::Metric::Units::SI_UNIT_PREFIXES.each do |prefix, prefix_data| - plural_prefixed_unit_name = prefix.to_s + plural_unit_name - prefixed_symbol = prefix_data[:symbol_prefix] + unit_data[:symbol].to_s - - define_method(plural_prefixed_unit_name.to_sym) { self * (10**(prefix_data[:factor] + unit_factor_offset)) } - class_eval("alias :" + prefixed_symbol + " :" + plural_prefixed_unit_name) - class_eval("alias :" + plural_prefixed_unit_name.chop + " :" + plural_prefixed_unit_name) - Systeme::Registration::names << plural_prefixed_unit_name << prefixed_symbol << plural_prefixed_unit_name.chop - end - end - end # Declarations + Systeme::Localize::declare_system(Systeme::Metric::Units::Metric) + end end end \ No newline at end of file