Class: Ruby::Merge::RubyHashLiteralProjector

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby/merge.rb

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ RubyHashLiteralProjector

Returns a new instance of RubyHashLiteralProjector.



2383
2384
2385
# File 'lib/ruby/merge.rb', line 2383

def initialize(source)
  @source = source.to_s
end

Instance Method Details

#callObject

Raises:

  • (ArgumentError)


2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
# File 'lib/ruby/merge.rb', line 2387

def call
  tree = TreeHaver.parser_for(:ruby, backend_type: :tree_sitter).parse(source)
  root = if tree.respond_to?(:parse_result)
           tree.parse_result.value
         else
           tree.root_node
         end
  hash_node = root_hash_node(root)
  raise ArgumentError, 'expected Ruby hash literal' unless hash_node?(hash_node)

  project_hash_node(hash_node)
end