Class: Racc::ISet
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/racc/iset.rb |
Overview
An “indexed” set. All items must respond to :ident
.
Class Method Summary
- .new(a = []) ⇒ ISet constructor
Instance Attribute Summary
- #empty? ⇒ Boolean readonly
- #set readonly
Instance Method Summary
- #[](key) (also: #include?, #key?)
- #[]=(key, val)
- #add(i)
- #clear
- #delete(key)
- #dup
- #each(&block)
-
#include?(key)
Alias for #[].
-
#inspect
Alias for #to_s.
-
#key?(key)
Alias for #[].
- #size
- #to_a
- #to_s (also: #inspect)
- #update(other)
- #update_a(a)
Constructor Details
.new(a = []) ⇒ ISet
# File 'lib/racc/iset.rb', line 18
def initialize(a = []) @set = a end
Instance Attribute Details
#empty? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/racc/iset.rb', line 78
def empty? @set.nitems == 0 end
#set (readonly)
[ GitHub ]# File 'lib/racc/iset.rb', line 22
attr_reader :set
Instance Method Details
#[](key) Also known as: #include?, #key?
[ GitHub ]# File 'lib/racc/iset.rb', line 28
def [](key) @set[key.ident] end
#[]=(key, val)
[ GitHub ]# File 'lib/racc/iset.rb', line 32
def []=(key, val) @set[key.ident] = val end
#add(i)
[ GitHub ]# File 'lib/racc/iset.rb', line 24
def add(i) @set[i.ident] = i end
#clear
[ GitHub ]# File 'lib/racc/iset.rb', line 82
def clear @set.clear end
#delete(key)
[ GitHub ]# File 'lib/racc/iset.rb', line 54
def delete(key) i = @set[key.ident] @set[key.ident] = nil i end
#dup
[ GitHub ]# File 'lib/racc/iset.rb', line 86
def dup ISet.new(@set.dup) end
#each(&block)
[ GitHub ]# File 'lib/racc/iset.rb', line 60
def each(&block) @set.compact.each(&block) end
#include?(key)
Alias for #[].
# File 'lib/racc/iset.rb', line 36
alias include? []
#inspect
Alias for #to_s.
# File 'lib/racc/iset.rb', line 72
alias inspect to_s
#key?(key)
Alias for #[].
# File 'lib/racc/iset.rb', line 37
alias key? []
#size
[ GitHub ]# File 'lib/racc/iset.rb', line 74
def size @set.nitems end
#to_a
[ GitHub ]# File 'lib/racc/iset.rb', line 64
def to_a @set.compact end
#to_s Also known as: #inspect
[ GitHub ]# File 'lib/racc/iset.rb', line 68
def to_s "[#{@set.compact.join(' ')}]" end
#update(other)
[ GitHub ]# File 'lib/racc/iset.rb', line 39
def update(other) s = @set o = other.set o.each_index do |idx| if t = o[idx] s[idx] = t end end end
#update_a(a)
[ GitHub ]# File 'lib/racc/iset.rb', line 49
def update_a(a) s = @set a.each {|i| s[i.ident] = i } end