Sha256: e45c47ef07e81958cc28f1a34c6fe97f3d7b740d9c6bf010eb8f2bd3c8ac95a1
Contents?: true
Size: 1.21 KB
Versions: 26
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true class Code class Node class Dictionary < Node class KeyValue < Node def initialize(parsed) return if parsed.blank? if parsed.key?(:statement) @key = Node::Statement.new(parsed.delete(:statement).presence) elsif parsed.key?(:name) @key = Node::String.new([{ text: parsed.delete(:name).presence }]) end return unless parsed[:value].presence @value = Node::Code.new(parsed.delete(:value).presence) end def evaluate(**args) key = @key&.evaluate(**args) || Object::Nothing.new if @value value = @value.evaluate(**args) [key, value] else [key, key] end end end def initialize(parsed) return if parsed.blank? @key_values = parsed.presence || [] @key_values.map! do |key_value| Node::Dictionary::KeyValue.new(key_value) end end def evaluate(**args) ::Code::Object::Dictionary.new( (@key_values || []) .map { |key_value| key_value.evaluate(**args) } .to_h ) end end end end
Version data entries
26 entries across 26 versions & 1 rubygems