Class ArrayFields::FieldSet
In: lib/arrayfields.rb
Parent: Object

multiton cache of fields - wraps fields and fieldpos map to save memory

Methods

new   new   pos  

Attributes

fieldpos  [R] 
fields  [R] 

Public Class methods

{{{

[Source]

# File lib/arrayfields.rb, line 16
        def new fields
#{{{
          @sets ||= {}
          obj = @sets[fields]
          unless obj
            obj = super  
            @sets[fields] = obj
          end
          obj
#}}}
        end

[Source]

# File lib/arrayfields.rb, line 31
      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

[Source]

# File lib/arrayfields.rb, line 48
      def pos field
#{{{
        @fieldpos[field]
#}}}
      end

[Validate]