@@ -4,81 +4,80 @@ use std::fmt;
44pub enum Action {
55 RunScript ( String ) ,
66 Evaluate ( String ) ,
7- Nothing ,
7+ Nothing ,
88}
99
1010impl fmt:: Debug for Action {
1111 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
12- match & * self {
13- Action :: RunScript ( filepath) => write ! ( f, "RunScript: {}" , filepath) ,
14- Action :: Evaluate ( expression) => write ! ( f, "Evaluate: {}" , expression) ,
15- Action :: Nothing => write ! ( f, "Nothing" ) ,
16- }
12+ match & * self {
13+ Action :: RunScript ( filepath) => write ! ( f, "RunScript: {}" , filepath) ,
14+ Action :: Evaluate ( expression) => write ! ( f, "Evaluate: {}" , expression) ,
15+ Action :: Nothing => write ! ( f, "Nothing" ) ,
16+ }
1717 }
1818}
1919
2020pub fn parse_args ( arguments : Vec < String > ) -> Action {
21-
21+
2222 if arguments. len ( ) >= 2 {
23- if arguments[ 1 ] == "-i" || arguments[ 1 ] == "--init" {
24- return Action :: RunScript ( String :: from ( & arguments[ 2 ] ) ) ;
25- } else if arguments[ 1 ] == "-e" || arguments[ 1 ] == "--eval" {
26- return Action :: Evaluate ( String :: from ( & arguments[ 2 ] ) ) ;
27- } else { Action :: RunScript ( String :: from ( & arguments[ 1 ] ) ) } // for path as argument
23+ if arguments[ 1 ] == "-i" || arguments[ 1 ] == "--init" {
24+ return Action :: RunScript ( arguments[ 2 ] . clone ( ) ) ;
25+ } else if arguments[ 1 ] == "-e" || arguments[ 1 ] == "--eval" {
26+ return Action :: Evaluate ( arguments[ 2 ] . clone ( ) ) ;
27+ } else { Action :: RunScript ( arguments[ 1 ] . clone ( ) ) } // for path as argument
2828 } else {
29- return Action :: Nothing ;
30- }
29+ return Action :: Nothing ;
30+ }
3131}
32-
32+
3333#[ cfg( test) ]
3434mod tests {
3535 mod parse_args_test {
36- use crate :: user_action;
36+ use crate :: user_action;
3737
38- #[ test]
39- fn parses_args_given_path ( ) {
40- let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "examples/hello_world.clj" . to_string( ) ] ;
41-
42- assert_eq ! ( user_action:: Action :: RunScript ( "examples/hello_world.clj" . to_string( ) ) ,
43- user_action:: parse_args( arguments) ) ;
44- }
38+ #[ test]
39+ fn parses_args_given_path ( ) {
40+ let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "examples/hello_world.clj" . to_string( ) ] ;
41+ assert_eq ! ( user_action:: Action :: RunScript ( "examples/hello_world.clj" . to_string( ) ) ,
42+ user_action:: parse_args( arguments) ) ;
43+ }
4544
46- #[ test]
47- fn parses_args_given_i ( ) {
48- let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "-i" . to_string( ) , "test.clj" . to_string( ) ] ;
49-
50- assert_eq ! ( user_action:: Action :: RunScript ( "test.clj" . to_string( ) ) ,
51- user_action:: parse_args( arguments) ) ;
52- }
45+ #[ test]
46+ fn parses_args_given_i ( ) {
47+ let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "-i" . to_string( ) , "test.clj" . to_string( ) ] ;
48+
49+ assert_eq ! ( user_action:: Action :: RunScript ( "test.clj" . to_string( ) ) ,
50+ user_action:: parse_args( arguments) ) ;
51+ }
5352
54- #[ test]
55- fn parses_args_given_init ( ) {
56- let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "--init" . to_string( ) , "testing.clj" . to_string( ) ] ;
57-
58- assert_eq ! ( user_action:: Action :: RunScript ( "testing.clj" . to_string( ) ) ,
59- user_action:: parse_args( arguments) ) ;
60- }
53+ #[ test]
54+ fn parses_args_given_init ( ) {
55+ let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "--init" . to_string( ) , "testing.clj" . to_string( ) ] ;
56+
57+ assert_eq ! ( user_action:: Action :: RunScript ( "testing.clj" . to_string( ) ) ,
58+ user_action:: parse_args( arguments) ) ;
59+ }
6160
62- #[ test]
63- fn parses_args_given_e ( ) {
64- let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "-e" . to_string( ) , "(+ 1 2 3)" . to_string( ) ] ;
65-
66- assert_eq ! ( user_action:: Action :: Evaluate ( "(+ 1 2 3)" . to_string( ) ) ,
67- user_action:: parse_args( arguments) ) ;
68- }
61+ #[ test]
62+ fn parses_args_given_e ( ) {
63+ let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "-e" . to_string( ) , "(+ 1 2 3)" . to_string( ) ] ;
64+
65+ assert_eq ! ( user_action:: Action :: Evaluate ( "(+ 1 2 3)" . to_string( ) ) ,
66+ user_action:: parse_args( arguments) ) ;
67+ }
6968
70- #[ test]
71- fn parses_args_given_eval ( ) {
72- let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "--eval" . to_string( ) , "(println \" eh\" )" . to_string( ) ] ;
73-
74- assert_eq ! ( user_action:: Action :: Evaluate ( "(println \" eh\" )" . to_string( ) ) ,
75- user_action:: parse_args( arguments) ) ;
76- }
69+ #[ test]
70+ fn parses_args_given_eval ( ) {
71+ let arguments = vec ! [ "target/debug/rust_clojure" . to_string( ) , "--eval" . to_string( ) , "(println \" eh\" )" . to_string( ) ] ;
72+
73+ assert_eq ! ( user_action:: Action :: Evaluate ( "(println \" eh\" )" . to_string( ) ) ,
74+ user_action:: parse_args( arguments) ) ;
75+ }
7776
78- #[ test]
79- fn parses_args_given_nil ( ) {
80- assert_eq ! ( user_action:: Action :: Nothing , user_action:: parse_args( vec![ "target/debug/rust_clojure" . to_string( ) ] ) ) ;
81- }
77+ #[ test]
78+ fn parses_args_given_nil ( ) {
79+ assert_eq ! ( user_action:: Action :: Nothing , user_action:: parse_args( vec![ "target/debug/rust_clojure" . to_string( ) ] ) ) ;
80+ }
8281 }
8382}
8483
0 commit comments