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.



2393
2394
2395
# File 'lib/ruby/merge.rb', line 2393

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

Instance Method Details

#callObject

Raises:

  • (ArgumentError)


2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
# File 'lib/ruby/merge.rb', line 2397

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