Class: CellSet::Position

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Serializers::JSON, ActiveModel::Serializers::Xml, Attributes, Comparable
Defined in:
lib/cell_set/position.rb

Constant Summary collapse

ATTRIBUTES =
[:members, :ordinal]

Instance Method Summary collapse

Methods included from Attributes

#attributes, #attributes=, #clear_attribute, #has_attribute?, #read_attribute_for_validation

Constructor Details

#initializePosition

Returns a new instance of Position.



29
30
31
32
# File 'lib/cell_set/position.rb', line 29

def initialize(*)
  @members = []
  super
end

Instance Method Details

#<=>(other) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/cell_set/position.rb', line 13

def <=>(other)
  if other.is_a?(self.class)
    @ordinal <=> other.ordinal
  else
    nil
  end
end

#between?(min, max) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/cell_set/position.rb', line 21

def between?(min, max)
  @ordinal <= min || @ordinal >= max
end

#from_jsonObject



25
26
27
# File 'lib/cell_set/position.rb', line 25

def from_json(*)
  super.tap{|obj| obj.freeze}
end

#members=(members) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/cell_set/position.rb', line 34

def members=(members)
  if members.is_a?(Array)
    @members = members.map do |member|
      if member.is_a?(Member)
        member
      elsif member.is_a?(Hash)
        Member.new(member)
      else
        raise ArgumentError
      end
    end
  else
    raise ArgumentError
  end
end

#ordinal=(ordinal) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/cell_set/position.rb', line 50

def ordinal=(ordinal)
  @ordinal = if ordinal.is_a?(Fixnum)
    ordinal
  elsif ordinal.is_a?(String)
    Integer(ordinal)
  else
    raise ArgumentError
  end
end