Sha256: b1d5af1e72e6ce77e911cb4a008c9abe559adc22f8d334ec97f015f37bae52c0
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
require 'active_support' require 'active_support/version' if ActiveSupport::VERSION::MAJOR >= 3 require 'active_support/core_ext' end # Conversions makes it easy to convert between units. module Conversions mattr_accessor :conversions # Clear all previously registered conversions def self.clear self.conversions = {} end clear # Load all the default conversions shipped with the code def self.load_defaults load File.expand_path('../conversions/defaults.rb', __FILE__) end # Register a new conversion. This automatically also registers the inverse conversion. # # * _from_: The unit to convert from (ie. :miles, :stones, or :pints) # * _to_: The unit to convert to # * _rate_: The conversion rate from _from_ to _to_. (_from_ * _rate_ = _to_) def self.register(from, to, rate) conversions[from] ||= {} conversions[from][to] = rate conversions[to] ||= {} conversions[to][from] = 1.0 / rate define_shortcut(from) define_shortcut(to) end def self.define_shortcut(unit) Numeric.class_eval do define_method unit do Conversions::Unit.new(self, unit) end unless respond_to? unit end end module Ext # Convert from one unit to another. # # * _from_: The unit to convert from (ie. :miles, :stones, or :pints) # * _to_: The unit to convert to # * _options_: # * :scale: The number of digits you want after the dot. def convert(from, to, options={}) Conversions::Unit.new(self, from).to(to, options) end end end require 'conversions/unit' Conversions.load_defaults Numeric.send(:include, Conversions::Ext) if defined?(ActiveRecord) require 'conversions/active_record_accessors' ActiveRecord::Base.send(:extend, Conversions::ActiveRecordAccessors) end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
conversions-1.4.6 | lib/conversions.rb |