Sha256: 5edda70b46883f5fec615d803c3a4aed17718a5aea7b6f109d507fdc499157c4
Contents?: true
Size: 1.06 KB
Versions: 2
Compression:
Stored size: 1.06 KB
Contents
require 'json' module Nerpin module Nrpn class Base attr_reader :id, :key, :min, :max class << self def find_by_key(key) nrpns[key] end def nrpns return @nrpns if @nrpns data = JSON.parse( open( File.dirname( File.expand_path(__FILE__) ) + '/../../data/nrpn/%s.json' % self.name.split(/::/).last.downcase ).read ) @nrpns = Hash[ data.map do |k, v| [k.to_sym, new(v['id'], k.to_sym, v['min'], v['max'])] end ].freeze end end def initialize(id, key, min, max) @id = id @key = key @min = min @max = max end def value(value) raise 'subclass must override this' end def value_at(scale) value((((min.abs + max) * scale) - min.abs).to_i) end def sample value(rand(min.abs + max + (min < 0 ? 2 : 1)) - min.abs - (min < 0 ? 1 : 0)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nerpin-0.0.2 | lib/nerpin/nrpn.rb |
nerpin-0.0.1 | lib/nerpin/nrpn.rb |