class Pulo::Dimension
Public Class Methods
new(spec)
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 6 def initialize(spec) @spec=spec #hash keyed on dimension name as a symbol eg :L clean end
Public Instance Methods
*(val)
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 25 def *(val) Dimension.new Hash[@spec.map{|itm| [itm[0],itm[1]*val]}] end
+(other_spec)
click to toggle source
def is_base?
@spec.count==1 && @spec.first[1]==1
end
# File lib/pulo/quantity/dimension.rb, line 18 def +(other_spec) Dimension.new @spec.merge(other_spec.spec) {|_key,val1,val2| val1+val2} end
-(other_spec)
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 21 def -(other_spec) new_hash = Hash[other_spec.spec.map{|k,itm| [k,-itm] } ] Dimension.new @spec.merge(new_hash) {|_key,val1,val2| val1+val2} end
/(val)
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 28 def /(val) Dimension.new Hash[@spec.map{|itm| [itm[0],itm[1]/val]}] end
==(other_spec)
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 32 def ==(other_spec) val=(@spec.merge(other_spec.spec) {|_key,val1,val2| val1-val2}).inject(0) {|sum,n| sum+n[1].abs} val==0 end
eql?(other_spec)
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 36 def eql?(other_spec) self==(other_spec) end
hash()
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 39 def hash @spec.to_s.hash end
spec()
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 10 def spec @spec end
to_s(supress_pretty=false)
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 42 def to_s(supress_pretty=false) sort_spec=@spec.sort_by { |item| item[1]*-1} if supress_pretty sort_spec.reduce('') do |ret,item| ret+item[0].to_s + item[1].to_s end else sort_spec.reduce('') do |ret,item| ret+=item[0].to_s + (item[1]==1 ? '' : Pulo.super_digit(item[1])) + '.' end[0..-2] end end
Private Instance Methods
clean()
click to toggle source
# File lib/pulo/quantity/dimension.rb, line 59 def clean @spec=Hash[@spec.delete_if {|_key,value| value==0}.sort] end