Module: Scale::Source

Defined in:
lib/scale/source.rb

Overview

These are the classes that describe what range the transformed number starts in. They’re named after the core Ruby class that the input closest resembles.

Defined Under Namespace

Classes: Enumerable, Range

Constant Summary collapse

MAP =

Map Ruby classes/modules to scaling source classes/modules

{
  ::Enumerable => Source::Enumerable,
  ::Range => Source::Range
}

Class Method Summary collapse

Class Method Details

.new(source) ⇒ Scale::Source::Enumerable, Scale::Source::Range

Build the appropriate scaling source class for the given Ruby object

Parameters:

  • source (::Enumerable)

Returns:



59
60
61
62
63
64
65
66
# File 'lib/scale/source.rb', line 59

def self.new(source)
  klass = MAP[source.class]
  if klass.nil?
    klasses = MAP.select { |k,v| source.kind_of?(k) }
    klass = klasses.values.first
  end
  klass.new(source) unless klass.nil?
end