class KaiserRuby::CLI

command line interface for kaiser-ruby command

Public Instance Methods

execute(filename) click to toggle source
# File lib/kaiser_ruby/cli.rb, line 51
def execute(filename)
  file = File.read filename
  output = KaiserRuby.transpile(file)
  instance_eval output
  say
end
parse(filename) click to toggle source
# File lib/kaiser_ruby/cli.rb, line 12
def parse(filename)
  file = File.read filename
  output = KaiserRuby.parse(file)

  puts output
  say
end
rock() click to toggle source
# File lib/kaiser_ruby/cli.rb, line 60
def rock
  say "Type 'exit' to exit the console. Otherwise, rock on!"

  # grab the outside block's binding, so that we can use it to eval code
  # this makes it not lose local variables throughout the loop
  b = binding

  loop do
    begin
      input = ask('\m/>')
      break if input == 'exit'

      code = KaiserRuby.transpile(input)
      say "\\m/> #{code}", :blue if options[:debug]
      output = b.eval(code)
      output = 'nil' if output.nil?
      say "  => #{output}\n"
    rescue Exception => e
      say "THE STAGE IS ON FIRE! #{e}: #{e.message}"
    end
  end
end
transpile(filename) click to toggle source
# File lib/kaiser_ruby/cli.rb, line 23
    def transpile(filename)
      file = File.read filename
      output = KaiserRuby.transpile(file)

      if options['show-source'.to_sym]
        say file
        say '-' * 40, :green
      end

      if options[:save]
        out = File.new(options[:save], 'w')
        out.write <<~REQ
          require 'kaiser_ruby/refinements'
          using KaiserRuby::Refinements

        REQ
        out.write output
        out.close
        say "Saved output in `#{options[:save]}`", :green
      else
        say output
      end
      say
    end