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