module Measurb::CoreExt

Module for extending core classes

Public Class Methods

add_numeric_dimension(name, dimension_class_name, abbrev) click to toggle source

Add the dimension name method to `Numeric`

@api semipublic

@example

42.respond_to?(:inches) #=> false

Measurb::CoreExt.add_numeric_dimension(:inches, 'Inches', 'in')

42.respond_to?(:inches) #=> true

@param name [Symbol, String] Name of the dimension @param dimension_class_name [String] Name of the dimension class @param abbrev [String] Abbreviation for the dimension name @return [nil]

# File lib/measurb/core_ext.rb, line 19
    def self.add_numeric_dimension(name, dimension_class_name, abbrev)
      def_string = <<-EOS
        def #{name}(precision = #{DEFAULT_PRECISION})
          Measurb::#{dimension_class_name}.new(self, precision)
        end
      EOS

      unless abbrev.nil?
        def_string << "\nalias_method :#{abbrev}, :#{name}"
      end

      Numeric.class_eval(def_string)
    end