mirror of
https://codeberg.org/scip/rpnc.git
synced 2025-12-17 04:21:01 +01:00
17
calc.go
17
calc.go
@@ -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]
|
||||
}
|
||||
|
||||
7
main.go
7
main.go
@@ -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
14
rpn.go
@@ -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
|
||||
|
||||
5
rpn.pod
5
rpn.pod
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user