suppress intermediate results unless -i, addresses #11, fix man (#13)

This commit is contained in:
T.v.Dein
2023-11-08 14:43:34 +01:00
committed by GitHub
parent 64e66e9d7b
commit fa5f8dcb3b
4 changed files with 56 additions and 23 deletions

17
calc.go
View File

@@ -33,6 +33,8 @@ type Calc struct {
batch bool
stdin bool
showstack bool
intermediate bool
notdone bool // set to true as long as there are items left in the eval loop
stack *Stack
history []string
completer readline.AutoCompleter
@@ -198,7 +200,15 @@ func (c *Calc) Eval(line string) {
return
}
for _, item := range c.Space.Split(line, -1) {
items := c.Space.Split(line, -1)
for pos, item := range items {
if pos+1 < len(items) {
c.notdone = true
} else {
c.notdone = false
}
num, err := strconv.ParseFloat(item, 64)
if err == nil {
@@ -379,11 +389,16 @@ func (c *Calc) History(format string, args ...any) {
// print the result
func (c *Calc) Result() float64 {
// we only print the result if it's either a final result or
// (if it is intermediate) if -i has been given
if c.intermediate || !c.notdone {
// only needed in repl
if !c.stdin {
fmt.Print("= ")
}
fmt.Println(c.stack.Last()[0])
}
return c.stack.Last()[0]
}

View File

@@ -30,7 +30,7 @@ import (
lua "github.com/yuin/gopher-lua"
)
const VERSION string = "2.0.4"
const VERSION string = "2.0.5"
const Usage string = `This is rpn, a reverse polish notation calculator cli.
@@ -40,6 +40,7 @@ Options:
-b, --batchmode enable batch mode
-d, --debug enable debug mode
-s, --stack show last 5 items of the stack (off by default)
-i --intermediate print intermediate results
-m, --manual show manual
-v, --version show version
-h, --help show help
@@ -59,7 +60,9 @@ func main() {
configfile := ""
flag.BoolVarP(&calc.batch, "batchmode", "b", false, "batch mode")
flag.BoolVarP(&calc.showstack, "showstack", "s", false, "show stack")
flag.BoolVarP(&calc.showstack, "show-stack", "s", false, "show stack")
flag.BoolVarP(&calc.intermediate, "showin-termediate", "i", false,
"show intermediate results")
flag.BoolVarP(&enabledebug, "debug", "d", false, "debug mode")
flag.BoolVarP(&showversion, "version", "v", false, "show version")
flag.BoolVarP(&showhelp, "help", "h", false, "show usage")

14
rpn.go
View File

@@ -2,7 +2,7 @@ package main
var manpage = `
NAME
rpn - Reverse Polish Notation Calculator for the commandline
rpn - Programmable command-line calculator using reverse polish notation
SYNOPSIS
Usage: rpn [-bdvh] [<operator>]
@@ -10,6 +10,9 @@ SYNOPSIS
Options:
-b, --batchmode enable batch mode
-d, --debug enable debug mode
-s, --stack show last 5 items of the stack (off by default)
-i --intermediate print intermediate results
-m, --manual show manual
-v, --version show version
-h, --help show help
@@ -193,6 +196,15 @@ INTERACTIVE REPL
ctrl-r
Search through history.
COMMENTS
Lines starting with "#" are being ignored as comments. You can also
append comments to rpn input, e.g.:
# a comment
123 # another comment
In this case only 123 will be added to the stack.
EXTENDING RPN USING LUA
You can use a lua script with lua functions to extend the calculator. By
default the tool looks for "~/.rpn.lua". You can also specify a script

View File

@@ -1,6 +1,6 @@
=head1 NAME
rpn - Reverse Polish Notation Calculator for the commandline
rpn - Programmable command-line calculator using reverse polish notation
=head1 SYNOPSIS
@@ -9,6 +9,9 @@ rpn - Reverse Polish Notation Calculator for the commandline
Options:
-b, --batchmode enable batch mode
-d, --debug enable debug mode
-s, --stack show last 5 items of the stack (off by default)
-i --intermediate print intermediate results
-m, --manual show manual
-v, --version show version
-h, --help show help