Class: EaseEngine::Data::Hary

Inherits:
Object
  • Object
show all
Defined in:
lib/ease_engine/data.rb

Direct Known Subclasses

Record

Defined Under Namespace

Classes: Info

Instance Method Summary collapse

Constructor Details

#initializeHary

Returns a new instance of Hary.



14
15
16
17
# File 'lib/ease_engine/data.rb', line 14

def initialize
  @ary = []
  @indexes = {}
end

Instance Method Details

#add(id, data) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ease_engine/data.rb', line 19

def add( id, data )
  if ! @indexes.key?( id )
    info = Info.new( id, @ary.size, data )
    @ary.push info
    @indexes[ id ] = info.index
  else
    info = @ary[ @indexes[ id ] ]
    info.id = id
    info.data = data
  end
  
  sort!
  id
end

#eachObject



64
65
66
67
68
# File 'lib/ease_engine/data.rb', line 64

def each
  @ary.each{|info|
    yield info.id, info.index, info.data
  }
end

#get(id) ⇒ Object



48
49
50
# File 'lib/ease_engine/data.rb', line 48

def get( id )
  @indexes[ id ]
end

#get_at(index) ⇒ Object



52
53
54
# File 'lib/ease_engine/data.rb', line 52

def get_at( index )
  ( @ary.size <= index ) ? nil : @ary[ index ]
end

#key?(id) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/ease_engine/data.rb', line 56

def key?( id )
  @indexes.key?( id )
end

#remove(id) ⇒ Object



34
35
36
# File 'lib/ease_engine/data.rb', line 34

def remove( id )
  remove_at( @indexes[ id ] ) if @indexes.key?( id )
end

#remove_at(index) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/ease_engine/data.rb', line 38

def remove_at( index )
  return nil if @ary.size <= index
  
  info = @ary[ index ]
  @ary.delete_at( index )
  @indexes.delete( info.id )
  update if index != @ary.size # 末尾データの削除なら、更新しない
  info.data
end

#sizeObject



60
61
62
# File 'lib/ease_engine/data.rb', line 60

def size
  @ary.size
end

#sort!Object



77
78
79
# File 'lib/ease_engine/data.rb', line 77

def sort!
  update
end

#updateObject



70
71
72
73
74
75
# File 'lib/ease_engine/data.rb', line 70

def update
  @ary.each_with_index{|info, index|
    info.index = index
    @indexes[ info.id ] = index
  }
end