class Dhall::RecordType

Public Class Methods

decode(record) click to toggle source
# File lib/dhall/binary.rb, line 136
def self.decode(record)
        if record.empty?
                EmptyRecordType.new
        else
                new(record: Hash[record.map { |k, v| [k, Dhall.decode(v)] }])
        end
end
for(types) click to toggle source
# File lib/dhall/ast.rb, line 674
def self.for(types)
        if types.empty?
                EmptyRecordType.new
        else
                RecordType.new(record: types)
        end
end

Public Instance Methods

==(other) click to toggle source
# File lib/dhall/ast.rb, line 704
def ==(other)
        other.respond_to?(:record) && record.to_a == other.record.to_a
end
as_json() click to toggle source
# File lib/dhall/ast.rb, line 712
def as_json
        [7, Hash[record.to_a.map { |k, v| [k, v.as_json] }.sort]]
end
deep_merge_type(other) click to toggle source
Calls superclass method Dhall::Expression#deep_merge_type
# File lib/dhall/ast.rb, line 688
def deep_merge_type(other)
        return super unless other.class == RecordType

        with(record: Hash[record.merge(other.record) { |_, v1, v2|
                v1.deep_merge_type(v2)
        }.sort])
end
eql?(other) click to toggle source
# File lib/dhall/ast.rb, line 708
def eql?(other)
        self == other
end
keys() click to toggle source
# File lib/dhall/ast.rb, line 696
def keys
        record.keys
end
merge_type(other) click to toggle source
# File lib/dhall/ast.rb, line 682
def merge_type(other)
        return self if other.is_a?(EmptyRecordType)

        with(record: record.merge(other.record))
end
slice(keys) click to toggle source
# File lib/dhall/ast.rb, line 700
def slice(keys)
        RecordType.for(record.select { |k, _| keys.include?(k) })
end