Sha256: 8d8ced82bbcd64d42643c539ddea971ad1fda7386be4f2c5bc8d1e7780a310ee

Contents?: true

Size: 923 Bytes

Versions: 5

Compression:

Stored size: 923 Bytes

Contents

require 'parslet'
require 'kaiser_ruby/rockstar_parser'
require 'kaiser_ruby/rockstar_transform'

module KaiserRuby
  def self.parse(input)
    # eat comments since we don't care about them
    input = input.gsub(/\(.*?\)/, '')

    # expand contractions
    input = input.gsub(/'s\W+/, ' is ')

    # strings without a line ending (or single lines) should be fed into the alternative parser
    if input.split("\n").size == 1
      KaiserRuby::RockstarSingleLineParser.new.parse(input.chomp, reporter: Parslet::ErrorReporter::Deepest.new)
    else
      KaiserRuby::RockstarParser.new.parse(input, reporter: Parslet::ErrorReporter::Deepest.new)
    end
  rescue Parslet::ParseFailed => failure
    puts input.inspect
    puts failure.parse_failure_cause.ascii_tree
  end

  def self.transform(tree)
    KaiserRuby::RockstarTransform.new.apply(tree)
  end

  def self.transpile(input)
    transform(parse(input))
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
kaiser-ruby-0.5.1 lib/kaiser_ruby.rb
kaiser-ruby-0.5 lib/kaiser_ruby.rb
kaiser-ruby-0.4.2 lib/kaiser_ruby.rb
kaiser-ruby-0.4.1 lib/kaiser_ruby.rb
kaiser-ruby-0.4.0 lib/kaiser_ruby.rb