Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kaz-utashiro/getopt-ex-rpn

RPN calculation module for Getopt::EX command option
https://github.com/kaz-utashiro/getopt-ex-rpn

Last synced: 8 days ago
JSON representation

RPN calculation module for Getopt::EX command option

Awesome Lists containing this project

README

        

[![Actions Status](https://github.com/kaz-utashiro/Getopt-EX-RPN/actions/workflows/test.yml/badge.svg)](https://github.com/kaz-utashiro/Getopt-EX-RPN/actions)
# NAME

Getopt::EX::RPN - RPN calculation module for Getopt::EX command option

# SYNOPSIS

use Getopt::EX::RPN qw(rpn_calc);

# DESCRIPTION

Getopt::EX::RPN is a wrapper for [Math::RPN](https://metacpan.org/pod/Math%3A%3ARPN) package which implement
Reverse Polish Notation calculation. **rpn\_calc** function in this
package takes additional `HEIGHT` and `WIDTH` token which describe
terminal height and width.

**rpn\_calc** recognize following tokens (case-insensitive) and numbers,
and ignore anything else. So you can use any other character as a
delimiter. Delimiter is not necessary if token boundary is clear.

HEIGHT WIDTH
{ }
+,ADD ++,INCR -,SUB --,DECR *,MUL /,DIV %,MOD POW SQRT
SIN COS TAN
LOG EXP
ABS INT
&,AND |,OR !,NOT XOR ~
<,LT <=,LE =,==,EQ >,GT >=,GE !=,NE
IF
DUP EXCH POP
MIN MAX
TIME
RAND LRAND

Since module [Getopt::EX::Func](https://metacpan.org/pod/Getopt%3A%3AEX%3A%3AFunc) uses comma to separate parameters,
you can't use comma as a token separator in RPN expression. This
package accept expression like this:

&set(width=WIDTH:2/,height=HEIGHT:DUP:2%-2/)

# AUTHOR

Kazumasa Utashiro

# LICENSE

Copyright 2022 Kazumasa Utashiro.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.