bin/code in code-ruby-0.7.1 vs bin/code in code-ruby-0.7.2
- old
+ new
@@ -2,34 +2,41 @@
# frozen_string_literal: true
require 'optparse'
require_relative '../lib/code-ruby'
-options = { timeout: 0, profile: false, profiler: 'text' }
+options = {
+ timeout: 0,
+ profile: false,
+ profiler: 'text',
+ input: "",
+ context: "",
+ parse: false
+}
OptionParser
.new do |opts|
- opts.banner = 'Usage: template [options]'
+ opts.banner = 'Usage: code [options]'
opts.on('-v', '--version', 'Version of template') do |_input|
puts Code::Version
exit
end
opts.on(
'-i INPUT',
- '--input=INPUT',
+ '--input INPUT',
'Input in the code language (String or File)'
) do |input|
input = File.read(input) if File.exist?(input)
options[:input] = input
end
opts.on(
'-c CONTEXT',
- '--context=CONTEXT',
+ '--context CONTEXT',
'Context in the code language (String or File)'
) do |context|
context = File.read(context) if File.exist?(context)
options[:context] = context
@@ -39,11 +46,11 @@
options[:parse] = parse
end
opts.on(
'-t TIMEOUT',
- '--timeout=TIMEOUT',
+ '--timeout TIMEOUT',
'Set timeout in seconds'
) { |timeout| options[:timeout] = timeout.to_f }
opts.on('--profile', 'Profile Ruby code') do |_timeout|
require 'ruby-prof'
@@ -59,22 +66,26 @@
options[:profiler] = profiler
end
end
.parse!
-input = options.fetch(:input, '')
-context = options.fetch(:context, '')
-
RubyProf.start if options[:profile]
if options[:parse]
- pp Code::Parser.parse(input).to_raw
+ pp Code::Parser.parse(options[:input]).to_raw
else
- print Code.evaluate(input, context, io: $stdout, timeout: options[:timeout])
+ print Code.evaluate(
+ options[:input],
+ options[:context],
+ output: $stdout,
+ error: $stderr,
+ timeout: options[:timeout]
+ )
end
if options[:profile]
result = RubyProf.stop
+
if options[:profiler] == 'text'
printer = RubyProf::FlatPrinter.new(result)
printer.print($stdout)
elsif options[:profiler] == 'html'
printer = RubyProf::GraphHtmlPrinter.new(result)