Sha256: c2728f266162590ad93e05ede7d22eb34b600c0db43067672eeb0d5ec8762c8a

Contents?: true

Size: 929 Bytes

Versions: 6

Compression:

Stored size: 929 Bytes

Contents

module Alf
  module Types
    class Keys
      extend Domain::Reuse.new(Array)
      include Support::OrderedSet

      coercions do |c|
        c.coercion(Array){|v,_| Keys.new(v.map{|e| AttrList.coerce(e)}) }
      end
      def self.[](*args); coerce(args); end

      def if_empty(keys = nil, &bl)
        return self unless empty?
        Keys.coerce(keys || bl.call)
      end

      def project(attributes, allbut = false)
        map{|k| k.project(attributes, allbut) }
      end

      def rename(renaming)
        renaming = Renaming.coerce(renaming)
        map{|k| renaming.rename_attr_list(k) }
      end

      def to_ruby_literal
        "Alf::Keys[" << reused_instance.map{|k| Support.to_ruby_literal(k.to_a) }.join(',') << "]"
      end
      alias_method :to_s, :to_ruby_literal
      alias_method :inspect, :to_ruby_literal

      EMPTY = Keys.new([])
    end # class Keys
  end # module Types
end # module Alf

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
alf-core-0.16.3 lib/alf/types/keys.rb
alf-core-0.16.2 lib/alf/types/keys.rb
alf-core-0.16.1 lib/alf/types/keys.rb
alf-core-0.16.0 lib/alf/types/keys.rb
alf-core-0.15.0 lib/alf/types/keys.rb
alf-core-0.14.0 lib/alf-types/alf/types/keys.rb