class EaseEngine::Data::Hary

Public Class Methods

new() click to toggle source
# File lib/ease_engine/data.rb, line 14
def initialize
  @ary = []
  @indexes = {}
end

Public Instance Methods

add( id, data ) click to toggle source
# 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
each() { |id, index, data| ... } click to toggle source
# File lib/ease_engine/data.rb, line 64
def each
  @ary.each{|info|
    yield info.id, info.index, info.data
  }
end
get( id ) click to toggle source
# File lib/ease_engine/data.rb, line 48
def get( id )
  @indexes[ id ]
end
get_at( index ) click to toggle source
# File lib/ease_engine/data.rb, line 52
def get_at( index )
  ( @ary.size <= index ) ? nil : @ary[ index ]
end
key?( id ) click to toggle source
# File lib/ease_engine/data.rb, line 56
def key?( id )
  @indexes.key?( id )
end
remove( id ) click to toggle source
# File lib/ease_engine/data.rb, line 34
def remove( id )
  remove_at( @indexes[ id ] ) if @indexes.key?( id )
end
remove_at( index ) click to toggle source
# 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
size() click to toggle source
# File lib/ease_engine/data.rb, line 60
def size
  @ary.size
end
sort!() click to toggle source
# File lib/ease_engine/data.rb, line 77
def sort!
  update
end
update() click to toggle source
# File lib/ease_engine/data.rb, line 70
def update
  @ary.each_with_index{|info, index|
    info.index = index
    @indexes[ info.id ] = index
  }
end