class Dhall::Coder

Constants

JSON_LIKE

Public Class Methods

dump(obj) click to toggle source
# File lib/dhall/coder.rb, line 42
def self.dump(obj)
        new.dump(obj)
end
load(source, transform_keys: :to_s) click to toggle source
# File lib/dhall/coder.rb, line 38
def self.load(source, transform_keys: :to_s)
        new.load(source, transform_keys: transform_keys)
end
new(default: nil, safe: JSON_LIKE) click to toggle source
# File lib/dhall/coder.rb, line 46
def initialize(default: nil, safe: JSON_LIKE)
        @default = default
        @verifier = Verifier.new(*Array(safe))
        @verifier.verify(default, "default value")
end

Public Instance Methods

decode(expr, op="decode", klass: nil, transform_keys: :to_s) click to toggle source
# File lib/dhall/coder.rb, line 180
def decode(expr, op="decode", klass: nil, transform_keys: :to_s)
        return revive(klass, expr, op, transform_keys: transform_keys) if klass
        @verifier.verify(
                Util.transform_keys(
                        expr.to_ruby { |dexpr, dklass|
                                decode(dexpr, op, klass: dklass, transform_keys: transform_keys)
                        },
                        &transform_keys
                ),
                op
        )
end
dump(obj) click to toggle source
# File lib/dhall/coder.rb, line 193
def dump(obj)
        return if obj.nil?

        Dhall.dump(@verifier.verify(obj, "dump"))
end
load(source, transform_keys: :to_s) click to toggle source
# File lib/dhall/coder.rb, line 61
def load(source, transform_keys: :to_s)
        load_async(source, "load", transform_keys: transform_keys).sync
end
load_async(source, op="load_async", transform_keys: :to_s) click to toggle source
# File lib/dhall/coder.rb, line 52
def load_async(source, op="load_async", transform_keys: :to_s)
        return Promise.resolve(@default) if source.nil?
        return Promise.resolve(source) unless source.is_a?(String)

        Dhall.load(source).then do |expr|
                decode(expr, op, transform_keys: transform_keys)
        end
end
revive(klass, expr, op="revive", transform_keys: :to_s) click to toggle source
# File lib/dhall/coder.rb, line 168
def revive(klass, expr, op="revive", transform_keys: :to_s)
        @verifier.verify_class(klass, op)
        return klass.from_dhall(expr) if klass.respond_to?(:from_dhall)

        klass.allocate.tap do |o|
                o.init_with(Util.psych_coder_for(
                        klass.name,
                        decode(expr, op, transform_keys: transform_keys)
                ))
        end
end