module Dhall

Constants

BINARY
BINARY_TAGS

Public Class Methods

decode(expression) click to toggle source
# File lib/dhall/binary.rb, line 16
def self.decode(expression)
        BINARY.each do |match, use|
                return use[expression] if expression.is_a?(match)
        end

        raise "Unknown expression: #{expression.inspect}"
end
dump(o) click to toggle source
# File lib/dhall.rb, line 46
def self.dump(o)
        CBOR.encode(o.as_dhall)
end
from_binary(cbor_binary) click to toggle source
# File lib/dhall/binary.rb, line 12
def self.from_binary(cbor_binary)
        decode(CBOR.decode(cbor_binary))
end
handle_tag(e) click to toggle source
# File lib/dhall/binary.rb, line 298
def self.handle_tag(e)
        return e unless e.is_a?(::CBOR::Tagged)
        return e.value if e.tag == 55799

        raise "Unknown tag: #{e.inspect}"
end
load( source, resolver: Resolvers::Default.new, timeout: 10 ) click to toggle source
# File lib/dhall.rb, line 17
def self.load(
        source,
        resolver: Resolvers::Default.new,
        timeout: 10
)
        deadline = Util::Deadline.for_timeout(timeout)
        Promise.resolve(nil).then {
                load_raw(source.to_s, timeout: timeout).resolve(
                        resolver: resolver.with_deadline(deadline)
                )
        }.then do |resolved|
                deadline.timeout_block do
                        TypeChecker.for(resolved).annotate(TypeChecker::Context.new).normalize
                end
        end
end
load_raw(source, timeout: 10) click to toggle source
# File lib/dhall.rb, line 34
def self.load_raw(source, timeout: 10)
        source = Util.text_or_binary(source)

        Util::Deadline.for_timeout(timeout).timeout_block do
                if source.encoding == Encoding::BINARY
                        from_binary(source)
                else
                        Parser.parse(source).value
                end
        end
end