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