Class: MetaCommit::Extension::RubySupport::Parsers::Ruby

Inherits:
Contracts::Parser
  • Object
show all
Defined in:
lib/meta_commit_ruby_support/parsers/ruby.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.supported_file_extensionsArray<String>

Returns:

  • (Array<String>)


7
8
9
# File 'lib/meta_commit_ruby_support/parsers/ruby.rb', line 7

def self.supported_file_extensions
  ['.rb']
end

.supports_syntax?(source_code) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
# File 'lib/meta_commit_ruby_support/parsers/ruby.rb', line 12

def self.supports_syntax?(source_code)
  begin
    Parser::CurrentRuby.parse(source_code)
  rescue Parser::SyntaxError
    return false
  end
  true
end

Instance Method Details

#parse(source_code) ⇒ MetaCommit::Extension::RubySupport::Models::Ast

Parameters:

  • source_code (String)

Returns:



23
24
25
26
27
28
29
30
# File 'lib/meta_commit_ruby_support/parsers/ruby.rb', line 23

def parse(source_code)
  begin
    parsed_ast = parser.parse(source_code)
    MetaCommit::Extension::RubySupport::Models::Ast.new(parsed_ast)
  rescue Parser::SyntaxError
    raise MetaCommit::Contracts::Errors::SourceCodeParsingError.new("can't parse '#{source_code}' using #{self.class}")
  end
end