Class: EaseEngine::Data::Hary
- Inherits:
-
Object
- Object
- EaseEngine::Data::Hary
- Defined in:
- lib/ease_engine/data.rb
Direct Known Subclasses
Defined Under Namespace
Classes: Info
Instance Method Summary collapse
- #add(id, data) ⇒ Object
- #each ⇒ Object
- #get(id) ⇒ Object
- #get_at(index) ⇒ Object
-
#initialize ⇒ Hary
constructor
A new instance of Hary.
- #key?(id) ⇒ Boolean
- #remove(id) ⇒ Object
- #remove_at(index) ⇒ Object
- #size ⇒ Object
- #sort! ⇒ Object
- #update ⇒ Object
Constructor Details
#initialize ⇒ Hary
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 |
#each ⇒ Object
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
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 |
#size ⇒ Object
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 |
#update ⇒ Object
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 |