Class: Dhall::ExpressionResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/dhall/resolve.rb

Defined Under Namespace

Classes: ArrayResolver, FallbackResolver, HashResolver, IdentityResolver, ImportResolver, RecordResolver

Constant Summary collapse

@@registry =
{}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(expr) ⇒ ExpressionResolver

Returns a new instance of ExpressionResolver.



282
283
284
# File 'lib/dhall/resolve.rb', line 282

def initialize(expr)
  @expr = expr
end

Class Method Details

.for(expr) ⇒ Object



274
275
276
# File 'lib/dhall/resolve.rb', line 274

def self.for(expr)
  @@registry.find { |k, _| k === expr }.last.new(expr)
end

.register_for(kase) ⇒ Object



278
279
280
# File 'lib/dhall/resolve.rb', line 278

def self.register_for(kase)
  @@registry[kase] = self
end

Instance Method Details

#resolve(**kwargs) ⇒ Object



286
287
288
289
290
291
292
# File 'lib/dhall/resolve.rb', line 286

def resolve(**kwargs)
  Util.promise_all_hash(
    @expr.to_h.each_with_object({}) { |(attr, value), h|
      h[attr] = ExpressionResolver.for(value).resolve(**kwargs)
    }
  ).then { |h| @expr.with(h) }
end