Class: TreeHaver::Backends::Tslp::Parser

Inherits:
TreeHaver::Base::Parser show all
Defined in:
lib/tree_haver/backends/tslp.rb

Instance Attribute Summary

Attributes inherited from TreeHaver::Base::Parser

#language

Instance Method Summary collapse

Methods inherited from TreeHaver::Base::Parser

#backend, #initialize, #parse_string

Constructor Details

This class inherits a constructor from TreeHaver::Base::Parser

Instance Method Details

#parse(source) ⇒ Object



159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/tree_haver/backends/tslp.rb', line 159

def parse(source)
  raise TreeHaver::NotAvailable, unavailable_message unless Tslp.available?
  raise TreeHaver::NotAvailable, 'TSLP language is not set' unless language

  parser = ::TreeSitterLanguagePack.get_parser(language.name.to_s)
  raise TreeHaver::NotAvailable, "TSLP did not return a parser for #{language.name}" unless parser

  raw_tree = parser.parse(source)
  raise TreeHaver::NotAvailable, "TSLP did not return a parse tree for #{language.name}" unless raw_tree

  Tree.new(raw_tree, source: source, language: language.name)
end