Sha256: 6e86add0eea20370ef9ee560ea654b878d9bd970314968c3a326ec4b87f1ae85

Contents?: true

Size: 757 Bytes

Versions: 2

Compression:

Stored size: 757 Bytes

Contents

# frozen_string_literal: true

require 'hashie'
require 'kaiser_ruby/parser'
require 'kaiser_ruby/refinements'
require 'kaiser_ruby/transformer'
require 'pry'

# Transpile Rockstar into Ruby code
module KaiserRuby
  class RockstarSyntaxError < SyntaxError
  end

  def self.parse(input)
    parser = KaiserRuby::Parser.new(input)
    parser.parse
  end

  def self.transpile(input)
    tree = parse(input)
    KaiserRuby::Transformer.new(tree).transform
  end

  using KaiserRuby::Refinements

  def self.execute(input)
    with_captured_stdout do
      instance_eval transpile(input)
    end
  end

  def self.with_captured_stdout
    old_stdout = $stdout
    $stdout = StringIO.new
    yield
    $stdout.string
  ensure
    $stdout = old_stdout
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kaiser-ruby-0.8.1 lib/kaiser_ruby.rb
kaiser-ruby-0.8 lib/kaiser_ruby.rb