diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2014-11-25 09:42:47 -0700 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2014-11-25 09:42:47 -0700 |
| commit | 145c88f23e6587e310d3ca974365d20d373d8e1b (patch) | |
| tree | 9f568c7d801fdee926e875317f56cb795c6a0e11 | |
| parent | 3320e1496b1d099f63dea869f4a1cc19630dc3a9 (diff) | |
| download | clic-145c88f23e6587e310d3ca974365d20d373d8e1b.tar.gz clic-145c88f23e6587e310d3ca974365d20d373d8e1b.tar.bz2 clic-145c88f23e6587e310d3ca974365d20d373d8e1b.tar.xz clic-145c88f23e6587e310d3ca974365d20d373d8e1b.zip | |
Added a new 'execute' command line parameter.
| -rw-r--r-- | src/options.cpp | 37 | ||||
| -rw-r--r-- | src/options.h | 1 | ||||
| -rw-r--r-- | src/unitparser.cpp | 4 |
3 files changed, 40 insertions, 2 deletions
diff --git a/src/options.cpp b/src/options.cpp index 3581500..4d64b22 100644 --- a/src/options.cpp +++ b/src/options.cpp | |||
| @@ -3,6 +3,8 @@ | |||
| 3 | #include "unitnumber.h" | 3 | #include "unitnumber.h" |
| 4 | #include "unitparser.h" | 4 | #include "unitparser.h" |
| 5 | #include "number.h" | 5 | #include "number.h" |
| 6 | #include "lexer.h" | ||
| 7 | #include "parser.h" | ||
| 6 | 8 | ||
| 7 | #include <bu/sio.h> | 9 | #include <bu/sio.h> |
| 8 | #include <stdlib.h> | 10 | #include <stdlib.h> |
| @@ -26,6 +28,12 @@ Options::Options( int argc, char *argv[] ) : | |||
| 26 | "Convert the provided number to the given radix in the format " | 28 | "Convert the provided number to the given radix in the format " |
| 27 | "number:to-radix or from-radix:number:to-radix. The radix should " | 29 | "number:to-radix or from-radix:number:to-radix. The radix should " |
| 28 | "be provided in base-10"); | 30 | "be provided in base-10"); |
| 31 | addOption( Bu::slot(this, &Options::execute), 'e', "execute", | ||
| 32 | "Execute the next parameters as an equation and print the result. " | ||
| 33 | "If you want a different scale or radix then set them first. This will " | ||
| 34 | "use all remaining parameters as the equation (you may wish to quote " | ||
| 35 | "your equation to prevent special characters from being interpreted by " | ||
| 36 | "your shell)."); | ||
| 29 | addHelpOption('h', "help", "This help"); | 37 | addHelpOption('h', "help", "This help"); |
| 30 | 38 | ||
| 31 | parse( argc, argv ); | 39 | parse( argc, argv ); |
| @@ -158,3 +166,32 @@ int Options::convert( Bu::StringArray aArgs ) | |||
| 158 | return 0; | 166 | return 0; |
| 159 | } | 167 | } |
| 160 | 168 | ||
| 169 | int Options::execute( Bu::StringArray aArgs ) | ||
| 170 | { | ||
| 171 | if( aArgs.getSize() == 1 ) | ||
| 172 | { | ||
| 173 | Bu::println("Must provide an equation to execute."); | ||
| 174 | exit( 0 ); | ||
| 175 | return 0; | ||
| 176 | } | ||
| 177 | Bu::MemBuf mbIn(aArgs[1]); | ||
| 178 | mbIn.setPos( mbIn.getSize() ); | ||
| 179 | for( int j = 2; j < aArgs.getSize(); j++ ) | ||
| 180 | { | ||
| 181 | mbIn.write(" "); | ||
| 182 | mbIn.write( aArgs[j] ); | ||
| 183 | } | ||
| 184 | // Bu::println("eq: '''%1'''").arg( mbIn.getString() ); | ||
| 185 | mbIn.setPos( 0 ); | ||
| 186 | Bu::MemBuf mbOut; | ||
| 187 | Lexer lex( mbIn ); | ||
| 188 | lex.setScale( iScale ); | ||
| 189 | lex.setRadix( iRadix ); | ||
| 190 | Parser parser( lex, mbOut ); | ||
| 191 | parser.parse(); | ||
| 192 | Bu::println( mbOut.getString() ); | ||
| 193 | exit( 0 ); | ||
| 194 | return aArgs.getSize(); | ||
| 195 | } | ||
| 196 | |||
| 197 | |||
diff --git a/src/options.h b/src/options.h index e0b7f33..cd0fd2d 100644 --- a/src/options.h +++ b/src/options.h | |||
| @@ -17,6 +17,7 @@ private: | |||
| 17 | int textPrimes( Bu::StringArray aArgs ); | 17 | int textPrimes( Bu::StringArray aArgs ); |
| 18 | int isPrime( Bu::StringArray aArgs ); | 18 | int isPrime( Bu::StringArray aArgs ); |
| 19 | int convert( Bu::StringArray aArgs ); | 19 | int convert( Bu::StringArray aArgs ); |
| 20 | int execute( Bu::StringArray aArgs ); | ||
| 20 | 21 | ||
| 21 | int iScale; | 22 | int iScale; |
| 22 | int iRadix; | 23 | int iRadix; |
diff --git a/src/unitparser.cpp b/src/unitparser.cpp index 6a5dcf4..e23f76c 100644 --- a/src/unitparser.cpp +++ b/src/unitparser.cpp | |||
| @@ -48,8 +48,8 @@ void UnitParser::assignment() | |||
| 48 | lex.setScale( 0 ); | 48 | lex.setScale( 0 ); |
| 49 | Parser parser( lex, mbOut ); | 49 | Parser parser( lex, mbOut ); |
| 50 | parser.parse(); | 50 | parser.parse(); |
| 51 | Bu::println("%1 == %2").arg( mbOut.getString().trimWhitespace() ) | 51 | // Bu::println("%1 == %2").arg( mbOut.getString().trimWhitespace() ) |
| 52 | .arg( parser.getVariable("test") ); | 52 | // .arg( parser.getVariable("test") ); |
| 53 | unitTest( mbOut.getString().trimWhitespace() == parser.getVariable("test").toString() ); | 53 | unitTest( mbOut.getString().trimWhitespace() == parser.getVariable("test").toString() ); |
| 54 | } | 54 | } |
| 55 | 55 | ||
