class ArrayFields::FieldSet
multiton cache of fields - wraps fields and fieldpos map to save memory
Attributes
fieldpos[R]
fields[R]
Public Class Methods
new(fields)
click to toggle source
# File lib/arrayfields.rb, line 27 def initialize fields raise ArgumentError, "<#{ fields.inspect }> not inject-able" unless fields.respond_to? :inject @fieldpos = fields.inject({}) do |h, f| unless String === f or Symbol === f raise ArgumentError, "<#{ f.inspect }> neither String nor Symbol" end h[f] = h.size h end @fields = fields end
Public Instance Methods
init_sets()
click to toggle source
# File lib/arrayfields.rb, line 18 def init_sets @sets = {} end
new(fields)
click to toggle source
Calls superclass method
# File lib/arrayfields.rb, line 15 def new fields @sets[fields] ||= super end
pos(f)
click to toggle source
# File lib/arrayfields.rb, line 42 def pos f return @fieldpos[f] if @fieldpos.has_key? f f = f.to_s return @fieldpos[f] if @fieldpos.has_key? f f = f.intern return @fieldpos[f] if @fieldpos.has_key? f nil end