class Remedy::Size

Attributes

dimensions[RW]

Public Class Methods

new(*new_dimensions) click to toggle source
# File lib/remedy/size.rb, line 3
def initialize *new_dimensions
  new_dimensions.flatten!
  if new_dimensions.first.is_a? Range then
    new_dimensions.map! do |range|
      range.to_a.length
    end
  end
  @dimensions = new_dimensions
end

Public Instance Methods

-(other_size) click to toggle source
# File lib/remedy/size.rb, line 14
def - other_size
  if other_size.respond_to? :length then
    self.class.new subtract(other_size)
  else
    self.class.new deduct(other_size)
  end
end
/(value) click to toggle source
# File lib/remedy/size.rb, line 22
def / value
  dimensions.map do |dimension|
    dimension / value
  end
end
<<(value) click to toggle source
# File lib/remedy/size.rb, line 28
def << value
  self.dimensions << value
end
[](index) click to toggle source
# File lib/remedy/size.rb, line 50
def [] index
  dimensions[index]
end
cols() click to toggle source
# File lib/remedy/size.rb, line 45
def cols
  dimensions[1]
end
Also aliased as: columns
columns()
Alias for: cols
fits_into?(size_to_fit_into) click to toggle source
# File lib/remedy/size.rb, line 33
def fits_into? size_to_fit_into
  other_size = Size(size_to_fit_into)
  length.times.each do |index|
    return false if self[index] > other_size[index]
  end
  true
end
inspect() click to toggle source
# File lib/remedy/size.rb, line 70
def inspect
  "#<#{self.class}:#{to_s}>"
end
length() click to toggle source
# File lib/remedy/size.rb, line 54
def length
  dimensions.length
end
rows() click to toggle source
# File lib/remedy/size.rb, line 41
def rows
  dimensions[0]
end
to_a() click to toggle source
# File lib/remedy/size.rb, line 58
def to_a
  dimensions.dup
end
to_ary() click to toggle source
# File lib/remedy/size.rb, line 62
def to_ary
  dimensions
end
to_s() click to toggle source
# File lib/remedy/size.rb, line 66
def to_s
  "(#{dimensions.join('x')})"
end

Protected Instance Methods

deduct(amount) click to toggle source
# File lib/remedy/size.rb, line 76
def deduct amount
  dimensions.map do |dimension|
    dimension - amount
  end
end
sizesame?(other_size) click to toggle source
# File lib/remedy/size.rb, line 90
def sizesame? other_size
  raise "Different numbers of dimensions!" unless length == other_size.length
end
subtract(other_size) click to toggle source
# File lib/remedy/size.rb, line 82
def subtract other_size
  sizesame? other_size

  length.times.inject Size.new do |difference, index|
    difference << self[index] - other_size[index]
  end
end