File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -6,6 +6,10 @@ require "dorian/arguments"
66
77parsed =
88 Dorian ::Arguments . parse (
9+ format : {
10+ type : :boolean ,
11+ alias : :f
12+ } ,
913 input : {
1014 type : :string ,
1115 alias : :i
@@ -43,14 +47,20 @@ require "ruby-prof" if profile
4347
4448RubyProf . start if profile
4549
46- input = 'loop { print("> ") puts(evaluate(read)) }' if input . blank ?
50+ input = STDIN . each_line . to_a . join if input . empty ?
4751
4852if parsed . options . parse
4953 begin
5054 pp Code ::Parser . parse ( input ) . to_raw
51- rescue Exception => e
55+ rescue StandardError => e
5256 warn e . message
5357 end
58+ elsif parsed . options . format
59+ begin
60+ print ( Code . format ( input , timeout : parsed . options . timeout ) )
61+ rescue Code ::Error => e
62+ warn "#{ e . class } : #{ e . message } "
63+ end
5464else
5565 begin
5666 print (
Original file line number Diff line number Diff line change @@ -32,6 +32,17 @@ def self.evaluate(...)
3232 new ( ...) . evaluate
3333 end
3434
35+ def self . format ( source_or_tree , timeout : DEFAULT_TIMEOUT )
36+ parse_tree =
37+ if source_or_tree . is_a? ( ::String )
38+ parse ( source_or_tree , timeout : timeout )
39+ else
40+ source_or_tree
41+ end
42+
43+ Format . format ( parse_tree )
44+ end
45+
3546 def evaluate
3647 Timeout . timeout ( timeout ) do
3748 Node ::Code . new ( Code . parse ( source ) ) . evaluate (
You can’t perform that action at this time.
0 commit comments