Class: Remedy::Size

Inherits:
Object
  • Object
show all
Defined in:
lib/remedy/size.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*new_dimensions) ⇒ Size

Returns a new instance of Size.



3
4
5
6
7
8
9
10
11
# 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

Instance Attribute Details

#dimensionsObject

Returns the value of attribute dimensions.



12
13
14
# File 'lib/remedy/size.rb', line 12

def dimensions
  @dimensions
end

Instance Method Details

#-(other_size) ⇒ Object



14
15
16
17
18
19
20
# 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) ⇒ Object



22
23
24
25
26
# File 'lib/remedy/size.rb', line 22

def / value
  dimensions.map do |dimension|
    dimension / value
  end
end

#<<(value) ⇒ Object



28
29
30
# File 'lib/remedy/size.rb', line 28

def << value
  self.dimensions << value
end

#[](index) ⇒ Object



50
51
52
# File 'lib/remedy/size.rb', line 50

def [] index
  dimensions[index]
end

#colsObject Also known as: columns



45
46
47
# File 'lib/remedy/size.rb', line 45

def cols
  dimensions[1]
end

#fits_into?(size_to_fit_into) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
36
37
38
39
# 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

#inspectObject



70
71
72
# File 'lib/remedy/size.rb', line 70

def inspect
  "#<#{self.class}:#{to_s}>"
end

#lengthObject



54
55
56
# File 'lib/remedy/size.rb', line 54

def length
  dimensions.length
end

#rowsObject



41
42
43
# File 'lib/remedy/size.rb', line 41

def rows
  dimensions[0]
end

#to_aObject



58
59
60
# File 'lib/remedy/size.rb', line 58

def to_a
  dimensions.dup
end

#to_aryObject



62
63
64
# File 'lib/remedy/size.rb', line 62

def to_ary
  dimensions
end

#to_sObject



66
67
68
# File 'lib/remedy/size.rb', line 66

def to_s
  "(#{dimensions.join('x')})"
end