class Dhallish::Ast::RecordProjection
keys: ruby-list of keys to access (strings)
Attributes
keys[RW]
rec[RW]
Public Class Methods
new(rec, keys)
click to toggle source
# File lib/ast.rb, line 466 def initialize(rec, keys) @rec = rec @keys = keys end
Public Instance Methods
compute_type(ctx)
click to toggle source
# File lib/ast.rb, line 471 def compute_type(ctx) rectype = @rec.compute_type ctx assert("`.` can only be used on records") { rectype.is_a? Types::Record } newrectype = {} @keys.each { |key| assert("missing key in projection: `#{key}`") { !rectype.types[key].nil? } newrectype[key] = rectype.types[key] } Types::Record.new(newrectype) end
evaluate(ctx)
click to toggle source
# File lib/ast.rb, line 482 def evaluate(ctx) rec = @rec.evaluate ctx newrecvals = {} @keys.each { |key| newrecvals[key] = rec[key] } newrecvals end