Sha256: fa1ce6f971c8e07f92c6aec2cce37df8141892d79acd928cffe4a57b7596f47e

Contents?: true

Size: 1.02 KB

Versions: 24

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

class Code
  class Node
    class Dictionary < Node
      class KeyValue < Node
        def initialize(parsed)
          if parsed.key?(:statement)
            @key = Node::Statement.new(parsed.delete(:statement))
          elsif parsed.key?(:name)
            @key = Node::String.new([{ text: parsed.delete(:name) }])
          end

          @value = Node::Code.new(parsed.delete(:value)) if parsed[:value]
        end

        def evaluate(**args)
          key = @key.evaluate(**args)

          if @value
            value = @value.evaluate(**args)
            [key, value]
          else
            [key, key]
          end
        end
      end

      def initialize(parsed)
        parsed = [] if parsed == ""
        @key_values =
          parsed.map { |key_value| Node::Dictionary::KeyValue.new(key_value) }
      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

24 entries across 24 versions & 1 rubygems

Version Path
code-ruby-0.10.4 lib/code/node/dictionary.rb
code-ruby-0.10.3 lib/code/node/dictionary.rb
code-ruby-0.10.2 lib/code/node/dictionary.rb
code-ruby-0.10.1 lib/code/node/dictionary.rb
code-ruby-0.10.0 lib/code/node/dictionary.rb
code-ruby-0.9.3 lib/code/node/dictionary.rb
code-ruby-0.9.2 lib/code/node/dictionary.rb
code-ruby-0.9.1 lib/code/node/dictionary.rb
code-ruby-0.9.0 lib/code/node/dictionary.rb
code-ruby-0.8.5 lib/code/node/dictionary.rb
code-ruby-0.8.4 lib/code/node/dictionary.rb
code-ruby-0.8.3 lib/code/node/dictionary.rb
code-ruby-0.8.2 lib/code/node/dictionary.rb
code-ruby-0.8.1 lib/code/node/dictionary.rb
code-ruby-0.8.0 lib/code/node/dictionary.rb
code-ruby-0.7.8 lib/code/node/dictionary.rb
code-ruby-0.7.7 lib/code/node/dictionary.rb
code-ruby-0.7.6 lib/code/node/dictionary.rb
code-ruby-0.7.5 lib/code/node/dictionary.rb
code-ruby-0.6.4 lib/code/node/dictionary.rb