diff --git a/mdbook/src/Chapters/UserDefinedFunctions.md b/mdbook/src/Chapters/UserDefinedFunctions.md index 91a2b98..e607eb7 100644 --- a/mdbook/src/Chapters/UserDefinedFunctions.md +++ b/mdbook/src/Chapters/UserDefinedFunctions.md @@ -24,7 +24,8 @@ The following commands can be entered during a recording, but are not recorded. - help, h, ? - rec, record - func, function -- cx, x, or exit +- set, reset +- cx, x, quit, exit |Command|Description| |-------|-----------| diff --git a/pom.xml b/pom.xml index 738dab5..eff36e4 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ org.fross rpncalc - 4.6.6 + 4.6.7 jar rpncalc diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 770eca3..d55b17e 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,5 +1,5 @@ name: rpncalc -version: '4.6.6' +version: '4.6.7' summary: The command line Reverse Polish Notation (RPN) calculator description: | RPNCalc is an easy to use command line based Reverse Polish diff --git a/src/main/java/org/fross/rpncalc/Help.java b/src/main/java/org/fross/rpncalc/Help.java index ff08047..0c7636e 100644 --- a/src/main/java/org/fross/rpncalc/Help.java +++ b/src/main/java/org/fross/rpncalc/Help.java @@ -66,33 +66,33 @@ public static void Display() { Output.printColorln(Ansi.Color.WHITE, " ^ Power: Calculate line2 to the power of line1"); Output.printColorln(Ansi.Color.YELLOW, "\nCalculator Commands:"); - Output.printColorln(Ansi.Color.WHITE, " u [STACK #] Undo last action or back to the undo stack defined in 'list undo'"); - Output.printColorln(Ansi.Color.WHITE, " f Flip the sign of the element at line1"); - Output.printColorln(Ansi.Color.WHITE, " c Clear the screen and empty current stack"); - Output.printColorln(Ansi.Color.WHITE, " cl[ean] Clear screen but keep the stack values"); - Output.printColorln(Ansi.Color.WHITE, " d [#] [#-#] Delete line1, the line number provided, or a range of lines"); - Output.printColorln(Ansi.Color.WHITE, " s [#] [#] Swap the last two elments in the stack or the lines provided"); - Output.printColorln(Ansi.Color.WHITE, " % Convert line1 into a percentage by multipling it by 0.01"); - Output.printColorln(Ansi.Color.WHITE, " sqrt Perform a square root of the line1 value"); - Output.printColorln(Ansi.Color.WHITE, " round [n] Round to n decimal places. Default is 0 decimals"); - Output.printColorln(Ansi.Color.WHITE, " aa [keep] Add all stack items. Adding 'keep' will keep existing elements"); - Output.printColorln(Ansi.Color.WHITE, " mod Modulus. Perform a division and return the remainder"); - Output.printColorln(Ansi.Color.WHITE, " avg [keep] Replace stack with average of values. 'keep' will retain stack"); - Output.printColorln(Ansi.Color.WHITE, " sd [keep] Standard deviation of stack items. 'keep' will retain stack"); - Output.printColorln(Ansi.Color.WHITE, " copy [#] Copy line1 or the optional line number and add it to the stack"); - Output.printColorln(Ansi.Color.WHITE, " log | log10 Calculate the natural (base e) or base10 logarithm"); - Output.printColorln(Ansi.Color.WHITE, " int Convert line1 to an integer. No rounding is performed"); - Output.printColorln(Ansi.Color.WHITE, " abs Take the absolute value of line1"); - Output.printColorln(Ansi.Color.WHITE, " min | max Adds the minimum or maximum value of stack items to the stack"); - Output.printColorln(Ansi.Color.WHITE, " rand [L] [H] Random integer between L and H inclusive. Default is 1-100"); - Output.printColorln(Ansi.Color.WHITE, " dice XdY Roll a Y sided die X times. Default is 1d6"); + Output.printColorln(Ansi.Color.WHITE, " u [STACK #] Undo last action or back to the undo stack defined in 'list undo'"); + Output.printColorln(Ansi.Color.WHITE, " f Flip the sign of the element at line1"); + Output.printColorln(Ansi.Color.WHITE, " c Clear the screen and empty current stack"); + Output.printColorln(Ansi.Color.WHITE, " cl[ean] Clear screen but keep the stack values"); + Output.printColorln(Ansi.Color.WHITE, " d [#] [#-#] Delete line1, the line number provided, or a range of lines"); + Output.printColorln(Ansi.Color.WHITE, " s [#] [#] Swap the last two elments in the stack or the lines provided"); + Output.printColorln(Ansi.Color.WHITE, " % Convert line1 into a percentage by multipling it by 0.01"); + Output.printColorln(Ansi.Color.WHITE, " sqrt Perform a square root of the line1 value"); + Output.printColorln(Ansi.Color.WHITE, " round [n] Round to n decimal places. Default is 0 decimals"); + Output.printColorln(Ansi.Color.WHITE, " aa [keep] Add all stack items. Adding 'keep' will keep existing elements"); + Output.printColorln(Ansi.Color.WHITE, " mod Modulus. Perform a division and return the remainder"); + Output.printColorln(Ansi.Color.WHITE, " avg [keep] Replace stack with average of values. 'keep' will retain stack"); + Output.printColorln(Ansi.Color.WHITE, " sd [keep] Standard deviation of stack items. 'keep' will retain stack"); + Output.printColorln(Ansi.Color.WHITE, " copy [#] Copy line1 or the optional line number and add it to the stack"); + Output.printColorln(Ansi.Color.WHITE, " log | log10 Calculate the natural (base e) or base10 logarithm"); + Output.printColorln(Ansi.Color.WHITE, " int Convert line1 to an integer. No rounding is performed"); + Output.printColorln(Ansi.Color.WHITE, " abs Take the absolute value of line1"); + Output.printColorln(Ansi.Color.WHITE, " min | max Adds the minimum or maximum value of stack items to the stack"); + Output.printColorln(Ansi.Color.WHITE, " rand [L] [H] Random integer between L and H inclusive. Default is 1-100"); + Output.printColorln(Ansi.Color.WHITE, " dice XdY Roll a Y sided die X times. Default is 1d6"); Output.printColorln(Ansi.Color.YELLOW, "\nConversions:"); - Output.printColorln(Ansi.Color.WHITE, " frac [base] Display as a fraction with min provided base. Default base is 64th"); - Output.printColorln(Ansi.Color.WHITE, " in2mm Convert line1 from inches into millimeters"); - Output.printColorln(Ansi.Color.WHITE, " mm2in Convert line1 from millimeters to inches"); - Output.printColorln(Ansi.Color.WHITE, " rad2deg Convert line1 from raidans to degrees"); - Output.printColorln(Ansi.Color.WHITE, " deg2rad Convert line1 from degrees to radians"); + Output.printColorln(Ansi.Color.WHITE, " frac [base] Display as a fraction with min provided base. Default base is 64th"); + Output.printColorln(Ansi.Color.WHITE, " in2mm Convert line1 from inches into millimeters"); + Output.printColorln(Ansi.Color.WHITE, " mm2in Convert line1 from millimeters to inches"); + Output.printColorln(Ansi.Color.WHITE, " rad2deg Convert line1 from raidans to degrees"); + Output.printColorln(Ansi.Color.WHITE, " deg2rad Convert line1 from degrees to radians"); Output.printColorln(Ansi.Color.YELLOW, "\nTrigonometry Functions:"); Output.printColorln(Ansi.Color.WHITE, " sin|cos|tan [rad] Trig Functions: Angle in degrees unless rad is provided"); @@ -100,41 +100,41 @@ public static void Display() { Output.printColorln(Ansi.Color.WHITE, " hypot Returns the hypotenuse using line1 and line2 as the legs"); Output.printColorln(Ansi.Color.YELLOW, "\nMemory Commands:"); - Output.printColorln(Ansi.Color.WHITE, " mem [X] add Add line1 to memory slot X. Default slot is 0"); - Output.printColorln(Ansi.Color.WHITE, " mem [X] copy Copy number from memory slot X. Default slot is 0"); - Output.printColorln(Ansi.Color.WHITE, " mem [X] clr Clear memory from slot X. Default slot0"); - Output.printColorln(Ansi.Color.WHITE, " mem clearall Clear all memory slots"); - Output.printColorln(Ansi.Color.WHITE, " mem copyall Copy all memory items onto the stack"); - Output.printColorln(Ansi.Color.WHITE, " mem addall Add all stack items to memory slots"); + Output.printColorln(Ansi.Color.WHITE, " mem [X] add Add line1 to memory slot X. Default slot is 0"); + Output.printColorln(Ansi.Color.WHITE, " mem [X] copy Copy number from memory slot X. Default slot is 0"); + Output.printColorln(Ansi.Color.WHITE, " mem [X] clr Clear memory from slot X. Default slot0"); + Output.printColorln(Ansi.Color.WHITE, " mem clearall Clear all memory slots"); + Output.printColorln(Ansi.Color.WHITE, " mem copyall Copy all memory items onto the stack"); + Output.printColorln(Ansi.Color.WHITE, " mem addall Add all stack items to memory slots"); Output.printColorln(Ansi.Color.YELLOW, "\nConstants:"); - Output.printColorln(Ansi.Color.WHITE, " pi Add Archimede's constant (PI)"); - Output.printColorln(Ansi.Color.WHITE, " phi Add the Golden Ratio (phi)"); - Output.printColorln(Ansi.Color.WHITE, " euler Add Euler's exponential growth constant (e)"); - Output.printColorln(Ansi.Color.WHITE, " sol Add the Speed of Light (c)"); + Output.printColorln(Ansi.Color.WHITE, " pi Add Archimede's constant (PI)"); + Output.printColorln(Ansi.Color.WHITE, " phi Add the Golden Ratio (phi)"); + Output.printColorln(Ansi.Color.WHITE, " euler Add Euler's exponential growth constant (e)"); + Output.printColorln(Ansi.Color.WHITE, " sol Add the Speed of Light (c)"); Output.printColorln(Ansi.Color.YELLOW, "\nUser Defined Functions:"); - Output.printColorln(Ansi.Color.WHITE, " record on Turn on command recording"); - Output.printColorln(Ansi.Color.WHITE, " record off Disable recording"); - Output.printColorln(Ansi.Color.WHITE, " func del NAME Delete named user defined function"); - Output.printColorln(Ansi.Color.WHITE, " func delall Delete all user defined functions"); + Output.printColorln(Ansi.Color.WHITE, " record on Turn on command recording"); + Output.printColorln(Ansi.Color.WHITE, " record off Disable recording"); + Output.printColorln(Ansi.Color.WHITE, " func del NAME Delete named user defined function"); + Output.printColorln(Ansi.Color.WHITE, " func delall Delete all user defined functions"); Output.printColorln(Ansi.Color.YELLOW, "\nOperational Commands:"); - Output.printColorln(Ansi.Color.WHITE, " list stacks Show the list of saved stacks"); - Output.printColorln(Ansi.Color.WHITE, " list mem Display contents of the memory slots"); - Output.printColorln(Ansi.Color.WHITE, " list undo Show the current undo stack"); - Output.printColorln(Ansi.Color.WHITE, " list func Display the detailed user defined functions"); - Output.printColorln(Ansi.Color.WHITE, " ss Swap primary and secondary stack"); - Output.printColorln(Ansi.Color.WHITE, " load NAME Load (or create if needed) a named stack"); - Output.printColorln(Ansi.Color.WHITE, " import FILE Replace current stack with file contents (one number per line)"); + Output.printColorln(Ansi.Color.WHITE, " list stacks Show the list of saved stacks"); + Output.printColorln(Ansi.Color.WHITE, " list mem Display contents of the memory slots"); + Output.printColorln(Ansi.Color.WHITE, " list undo Show the current undo stack"); + Output.printColorln(Ansi.Color.WHITE, " list func Display the detailed user defined functions"); + Output.printColorln(Ansi.Color.WHITE, " ss Swap primary and secondary stack"); + Output.printColorln(Ansi.Color.WHITE, " load NAME Load (or create if needed) a named stack"); + Output.printColorln(Ansi.Color.WHITE, " import FILE Replace current stack with file contents (one number per line)"); Output.printColorln(Ansi.Color.WHITE, " set align l|d|r Set alignment of the stack display to 'l'eft, 'd'ecimal, or 'r'ight"); Output.printColorln(Ansi.Color.WHITE, " set width num Set the width of the display to num"); Output.printColorln(Ansi.Color.WHITE, " set memslots num Set the number of memory slots"); - Output.printColorln(Ansi.Color.WHITE, " reset Resets configurations set with 'set' back to defaults"); - Output.printColorln(Ansi.Color.WHITE, " debug Toggle DEBUG mode on/off"); - Output.printColorln(Ansi.Color.WHITE, " ver Display the current version"); - Output.printColorln(Ansi.Color.WHITE, " h|? Show this help information. Either key will work."); - Output.printColorln(Ansi.Color.WHITE, " cx|x|exit Exit Calculator. 'cx' will clear before exiting"); + Output.printColorln(Ansi.Color.WHITE, " reset Resets configurations set with 'set' back to defaults"); + Output.printColorln(Ansi.Color.WHITE, " debug Toggle DEBUG mode on/off"); + Output.printColorln(Ansi.Color.WHITE, " ver Display the current version"); + Output.printColorln(Ansi.Color.WHITE, " h|? Show this help information. Either key will work."); + Output.printColorln(Ansi.Color.WHITE, " cx|x|exit Exit Calculator. 'cx' will clear before exiting"); } } diff --git a/src/main/java/org/fross/rpncalc/Main.java b/src/main/java/org/fross/rpncalc/Main.java index e121e4f..9436fd1 100644 --- a/src/main/java/org/fross/rpncalc/Main.java +++ b/src/main/java/org/fross/rpncalc/Main.java @@ -63,9 +63,9 @@ public class Main { static StackObj calcStack2 = new StackObj(); // Configuration Values - static int configProgramWidth = 80; - static int configMemorySlots = 10; - static String configAlignment = "l"; + static int configProgramWidth = CONFIG_DEFAULT_PROGRAM_WIDTH; + static int configMemorySlots = CONFIG_DEFAULT_MEMORY_SLOTS; + static String configAlignment = CONFIG_DEFAULT_ALIGNMENT; /** * Display Version(): Show the program version, copyright, and latest GitHub release @@ -163,11 +163,11 @@ public static void main(String[] args) { // Display some useful information about the environment if in Debug Mode Debug.displaySysInfo(); Output.debugPrint("Command Line Options"); - Output.debugPrint(" -D: " + Debug.query()); - Output.debugPrint(" -l: " + calcStack.queryStackName()); - Output.debugPrint(" -w: " + configProgramWidth); - Output.debugPrint(" -m: " + configMemorySlots); - Output.debugPrint(" Color Enabled: " + Output.queryColorEnabled()); + Output.debugPrint(" - DebugModeOn: " + Debug.query()); + Output.debugPrint(" - StackName: " + calcStack.queryStackName()); + Output.debugPrint(" - Program Width: " + configProgramWidth); + Output.debugPrint(" - Memory Slots: " + configMemorySlots); + Output.debugPrint(" - Color Enabled: " + Output.queryColorEnabled()); // Restore the items in the memory slots during startup StackMemory.RestoreMemSlots(); @@ -255,7 +255,7 @@ public static void main(String[] args) { continue; } } - Output.debugPrint("Complete Input: '" + cmdInput + "' | InputCommand '" + cmdInputCmd + "' | InputParameter: '" + cmdInputParam + "'"); + Output.debugPrint("Complete Input: '" + cmdInput + "' | InputCommand: '" + cmdInputCmd + "' | InputParameter: '" + cmdInputParam + "'"); // If recording is enabled, send the user input to be recorded if (UserFunctions.recordingIsEnabled() == true) { diff --git a/src/main/java/org/fross/rpncalc/UserFunctions.java b/src/main/java/org/fross/rpncalc/UserFunctions.java index 30711bb..fe2f55d 100644 --- a/src/main/java/org/fross/rpncalc/UserFunctions.java +++ b/src/main/java/org/fross/rpncalc/UserFunctions.java @@ -130,7 +130,8 @@ public static boolean recordingIsEnabled() { */ public static void RecordCommand(String arg) { // Ignore the following commands from recording - String[] ignore = { "frac", "list", "debug", "ver", "version", "h", "help", "?", "record", "rec", "function", "func", "cx", "x", "exit" }; + String[] ignore = { "frac", "list", "debug", "ver", "version", "h", "help", "?", "record", "rec", "function", "func", "set", "reset", "cx", "x", "exit", + "quit" }; // If the command starts with an ignored item, just return before adding it to the recording for (int i = 0; i < ignore.length; i++) {