Sha256: 134da96bf42da060b7b7bf244740db84810682b07bdee2d1a0fd22cf155c009c

Contents?: true

Size: 622 Bytes

Versions: 4

Compression:

Stored size: 622 Bytes

Contents

module Alf
  module Types
    class Selection
      extend Domain::Reuse.new(Object)

      coercions do |c|
        c.coercion(Symbol){|x,_|
          new(x)
        }
        c.coercion(String){|x,_|
          new(x.to_sym)
        }
        c.coercion(Array){|x,_|
          Selection.new(x.map{|y| Selector.coerce(y) })
        }
      end

      def select(tuple)
        return tuple[reused_instance] unless reused_instance.is_a?(Array)
        reused_instance.map{|s| s.select(tuple) }
      end

      def to_s
        reused_instance.to_s
      end

    end # class Selection
  end # module Types
end # module Alf

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
alf-core-0.16.3 lib/alf/types/selection.rb
alf-core-0.16.2 lib/alf/types/selection.rb
alf-core-0.16.1 lib/alf/types/selection.rb
alf-core-0.16.0 lib/alf/types/selection.rb