329 lines
11 KiB
Plaintext
329 lines
11 KiB
Plaintext
|
!1 Evaluator of expressions: $!--!{= =}
|
||
|
!2 Syntax
|
||
|
'''{{{ $!--!{= [format:] expression =} }}}'''
|
||
|
!3 Expression
|
||
|
An expression may be a combination of constants, variables, and opertors. All internal calculations use the Java ''double'' numeric type.
|
||
|
!3 Format
|
||
|
A format is a specifier that describes the rendering of the numeric result. The format specifier is described by the Java 5 String class's .format() method:
|
||
|
{{{ %[flags][width][.precision]conversion}}} *!note N.B., The ''[argument_index$]'' specifier is not permitted.
|
||
|
|
||
|
Additionally, a formatting locale can be defined by setting the variable ''FORMAT_LOCALE'' to override the default JVM locale.
|
||
|
!3 Links
|
||
|
* [[format string][http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax]]
|
||
|
* [[String.format()][http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#format(java.util.Locale,%20java.lang.String,%20java.lang.Object...)]]
|
||
|
* [[String class][http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html]]
|
||
|
!3 Examples
|
||
|
{{{ $!--!{= 12 + 23 =} renders (sand brackets) as [35]
|
||
|
$!--!{=%5.4f:1.414=} : [1.4140]
|
||
|
$!--!{=%05X:14+14=} : [0001C]
|
||
|
$!--!{= %-10s : 123 =} : [123 ]}}}
|
||
|
|
||
|
And when specifying a formatting locale:
|
||
|
{{{ !define FORMAT_LOCALE {fr}
|
||
|
$!--!{=%5.4f:1.414=} : [1,4140]}}}
|
||
|
!3 Operators supported
|
||
|
|Comment |!note Spaces between items are optional |
|
||
|
|'''Operator'''|'''Argument''' |'''Description''' |
|
||
|
|!c ''arg'' |''constant or variable'' |Examples: 3, 12.4, 4E+8, $!--!{VALUE}, $!--!{some.var} |
|
||
|
|!c ''expr'' |!c ''expression'' |Any valid combination of arguments and optional operations and parentheses|
|
||
|
|!c '''+''' |!c ''expr'' + ''expr'' |Addition |
|
||
|
|!c '''-''' |!c -''expr'' |Unary negation |
|
||
|
|!c '''-''' |!c ''expr'' - ''expr'' |Subtraction |
|
||
|
|!c '''!-*-!'''|!c ''expr'' !-*-! ''expr''|Multiplication |
|
||
|
|!c '''/''' |!c ''expr'' / ''expr'' |Division |
|
||
|
|!c '''^''' |!c ''expr'' ^ ''expr'' |Exponentiation |
|
||
|
|!c '''sin''' |!c sin ''expr'' |Radian Sine of ''expr'' |
|
||
|
|!c '''cos''' |!c cos ''expr'' |Radian Cosine of ''expr'' |
|
||
|
|!c '''tan ''' |!c cos ''expr'' |Radian Tangent of ''expr'' |
|
||
|
|!c '''( )''' |!c ( ''expr'' ) |Parenthetical grouping of an expression |
|
||
|
#-----------------------------------------------------------------
|
||
|
-----
|
||
|
!3 Test Blank Expressions
|
||
|
''' Build blank expression page '''
|
||
|
!|script |
|
||
|
|start|Page Builder |
|
||
|
|line |~1a:${==}~ |
|
||
|
|line |~1b:${= =}~ |
|
||
|
|line |~1c:${= =}~|
|
||
|
|page |ExpressionPage |
|
||
|
|
||
|
''' Render it '''
|
||
|
!|Response Requester |
|
||
|
|uri |valid?|
|
||
|
|ExpressionPage|true |
|
||
|
|
||
|
!**> Contents
|
||
|
!|Response Examiner|
|
||
|
|type |string? |
|
||
|
|contents | |
|
||
|
|
||
|
!|Response Examiner |
|
||
|
|type |wrapped html?|
|
||
|
|contents| |
|
||
|
|
||
|
***!
|
||
|
|
||
|
''' Verify results '''
|
||
|
!|Response Examiner |
|
||
|
|type |pattern|matches?|
|
||
|
|contents|~1a:~ |true |
|
||
|
|contents|~1b:~ |true |
|
||
|
|contents|~1c:~ |true |
|
||
|
|
||
|
#-----------------------------------------------------------------
|
||
|
-----
|
||
|
!3 Test Single Argument Expressions
|
||
|
''' Build expression page '''
|
||
|
!|script |
|
||
|
|start|Page Builder |
|
||
|
|line |!- ~2a:${=3=}~ -! |
|
||
|
|line |!- ~2b:${= 4.2 =}~ -! |
|
||
|
|line |!- ~2c:${= 2E+1 =}~ -! |
|
||
|
|line |!- ~2d:${= 2.3E+42 =}~ -! |
|
||
|
|line |!- ~2e:${= 4.2E + 24 =}~ -!|
|
||
|
|page |ExpressionPage |
|
||
|
|
||
|
''' Render it '''
|
||
|
!|Response Requester |
|
||
|
|uri |valid?|
|
||
|
|ExpressionPage|true |
|
||
|
|
||
|
!**> Contents
|
||
|
!|Response Examiner|
|
||
|
|type |string? |
|
||
|
|contents | |
|
||
|
|
||
|
!|Response Examiner |
|
||
|
|type |wrapped html?|
|
||
|
|contents| |
|
||
|
|
||
|
***!
|
||
|
|
||
|
''' Verify results '''
|
||
|
!|Response Examiner |
|
||
|
|type |pattern |matches?|
|
||
|
|contents|~2a:3~ |true |
|
||
|
|contents|~2b:4.2~ |true |
|
||
|
|contents|~2c:20~ |true |
|
||
|
|contents|~2d:2.3E+42~|true |
|
||
|
|contents|~2e:4.2E+24~|true |
|
||
|
|
||
|
#-----------------------------------------------------------------
|
||
|
-----
|
||
|
!3 Test spaces around experssions
|
||
|
''' Build expression page '''
|
||
|
!|script |
|
||
|
|start|Page Builder |
|
||
|
|line |!- ~3a:${=1+1=}~ -! |
|
||
|
|line |!- ~3b:${=2 + 2=}~ -! |
|
||
|
|line |!- ~3c:${= 3 + 3=}~ -!|
|
||
|
|line |!- ~3d:${=4 + 4 =}~ -!|
|
||
|
|line |!- ~3e:${=5 +5 =}~ -! |
|
||
|
|page |ExpressionPage |
|
||
|
|
||
|
''' Render it '''
|
||
|
!|Response Requester |
|
||
|
|uri |valid?|
|
||
|
|ExpressionPage|true |
|
||
|
|
||
|
!**> Contents
|
||
|
!|Response Examiner|
|
||
|
|type |string? |
|
||
|
|contents | |
|
||
|
|
||
|
!|Response Examiner |
|
||
|
|type |wrapped html?|
|
||
|
|contents| |
|
||
|
|
||
|
***!
|
||
|
|
||
|
''' Verify results '''
|
||
|
!|Response Examiner |
|
||
|
|type |pattern|matches?|
|
||
|
|contents|~3a:2~ |true |
|
||
|
|contents|~3b:4~ |true |
|
||
|
|contents|~3c:6~ |true |
|
||
|
|contents|~3d:8~ |true |
|
||
|
|contents|~3e:10~|true |
|
||
|
|
||
|
#-----------------------------------------------------------------
|
||
|
-----
|
||
|
!3 Test each operator
|
||
|
''' Build expression page '''
|
||
|
!|script |
|
||
|
|start|Page Builder |
|
||
|
|line |!- ~4plus:${= 1 + 2 =}~ -! |
|
||
|
|line |!- ~4minus:${= 2 - 3 =}~ -! |
|
||
|
|line |!- ~4unary:${= -12 =}~ -! |
|
||
|
|line |!- ~4mult:${= 3 * 4 =}~ -! |
|
||
|
|line |!- ~4div:${= 4 / 5 =}~ -! |
|
||
|
|line |!- ~4exp:${=%2d: 5 ^ 6 =}~ -! |
|
||
|
|line |!- ~4sin1:${=%5.4f: sin0.39269875 =}~ -!|
|
||
|
|line |!- ~4sin2:${=%5.4f: sin 0.39269875 =}~ -!|
|
||
|
|line |!- ~4sin3:${=%5.4f: sin(0.39269875) =}~ -!|
|
||
|
|line |!- ~4sin4:${=%5.4f: sin(3.14159/8) =}~ -!|
|
||
|
|line |!- ~4sin5:${=%5.4f: sin (3.14159/8) =}~ -!|
|
||
|
|line |!- ~4cos:${=%5.4f: cos(3.14159 / 8) =}~ -!|
|
||
|
|line |!- ~4tan:${=%5.4f: tan(3.14159 / 8) =}~ -!|
|
||
|
|page |ExpressionPage |
|
||
|
|
||
|
''' Render it '''
|
||
|
!|Response Requester |
|
||
|
|uri |valid?|
|
||
|
|ExpressionPage|true |
|
||
|
|
||
|
!**> Contents
|
||
|
!|Response Examiner|
|
||
|
|type |string? |
|
||
|
|contents | |
|
||
|
|
||
|
!|Response Examiner |
|
||
|
|type |wrapped html?|
|
||
|
|contents| |
|
||
|
|
||
|
***!
|
||
|
|
||
|
''' Verify results '''
|
||
|
!|Response Examiner |
|
||
|
|type |pattern |matches?|
|
||
|
|contents|~4plus:3~ |true |
|
||
|
|contents|~4minus:-1~ |true |
|
||
|
|contents|~4unary:-12~ |true |
|
||
|
|contents|~4mult:12~ |true |
|
||
|
|contents|~4div:0.8~ |true |
|
||
|
|contents|~4exp:15625~ |true |
|
||
|
|contents|~4sin1:0.3827~|true |
|
||
|
|contents|~4sin2:0.3827~|true |
|
||
|
|contents|~4sin3:0.3827~|true |
|
||
|
|contents|~4sin4:0.3827~|true |
|
||
|
|contents|~4sin5:0.3827~|true |
|
||
|
|contents|~4cos:0.9239~ |true |
|
||
|
|contents|~4tan:0.4142~ |true |
|
||
|
|
||
|
#-----------------------------------------------------------------
|
||
|
-----
|
||
|
!3 Test parentheses
|
||
|
''' Build expression page '''
|
||
|
!|script |
|
||
|
|start|Page Builder |
|
||
|
|line |!- ~5a:${= 2 * 3 + 4 / 2 - 3 =}~ -!|
|
||
|
|line |!- ~5b:${= 2 * ( 3 + 4 ) / 2 - 3 =}~ -!|
|
||
|
|line |!- ~5c:${= 2 * ( 3 + 4 ) / ( 2 - 3 ) =}~ -!|
|
||
|
|line |!- ~5d:${= 2 * ( 3 + ( 4 / ( 2 - 3 ) ) ) =}~ -!|
|
||
|
|page |ExpressionPage |
|
||
|
|
||
|
''' Render it '''
|
||
|
!|Response Requester |
|
||
|
|uri |valid?|
|
||
|
|ExpressionPage|true |
|
||
|
|
||
|
!**> Contents
|
||
|
!|Response Examiner|
|
||
|
|type |string? |
|
||
|
|contents | |
|
||
|
|
||
|
!|Response Examiner |
|
||
|
|type |wrapped html?|
|
||
|
|contents| |
|
||
|
|
||
|
***!
|
||
|
|
||
|
''' Verify results '''
|
||
|
!|Response Examiner |
|
||
|
|type |pattern |matches?|
|
||
|
|contents|~5a:5~ |true |
|
||
|
|contents|~5b:4~ |true |
|
||
|
|contents|~5c:-14~|true |
|
||
|
|contents|~5d:-2~ |true |
|
||
|
|
||
|
#-----------------------------------------------------------------
|
||
|
-----
|
||
|
!3 Test formatting
|
||
|
''' Build expression page '''
|
||
|
!|script |
|
||
|
|start|Page Builder |
|
||
|
|line |!- ~6a:${=%d:2 =}~ -!|
|
||
|
|line |!- ~6b:${= %d : 3.2 =}~ -!|
|
||
|
|line |!- ~6c:${=%02d: 2 + 1 =}~ -!|
|
||
|
|line |!- ~6d:${= %4.4f: 2.2 / 3.4 =}~ -!|
|
||
|
|line |!- ~6e:${=%03o: 16 =}~ -!|
|
||
|
|line |!- ~6f:${= %03o : 18 =}~ -!|
|
||
|
|line |!- ~6g:${=%03x: 26 =}~ -!|
|
||
|
|line |!- ~6h:${=%03X: 27 =}~ -!|
|
||
|
|line |!- ~6i:${= %-12s : 123 =}~ -!|
|
||
|
|line |!- ~6j:${=%TY: 73422123127 =}~ -!|
|
||
|
|line |!- ~6k:${=%b: 27 =}~ -!|
|
||
|
|line |!- ~6l:${=%b: 0 =}~ -!|
|
||
|
|line |!- ~6m:${=%B: 27 =}~ -!|
|
||
|
|line |!- ~6n:${=%B: 0 =}~ -!|
|
||
|
|line |!- ~6o:${= % d : 3.2 =}~ -!|
|
||
|
|page |ExpressionPage |
|
||
|
|
||
|
''' Render it '''
|
||
|
!|Response Requester |
|
||
|
|uri |valid?|
|
||
|
|ExpressionPage|true |
|
||
|
|
||
|
!**> Contents
|
||
|
!|Response Examiner|
|
||
|
|type |string? |
|
||
|
|contents | |
|
||
|
|
||
|
!|Response Examiner |
|
||
|
|type |wrapped html?|
|
||
|
|contents| |
|
||
|
|
||
|
***!
|
||
|
|
||
|
''' Verify results '''
|
||
|
!|Response Examiner |
|
||
|
|type |pattern |matches?|
|
||
|
|contents|~6a:2~ |true |
|
||
|
|contents|~6b:3~ |true |
|
||
|
|contents|~6c:03~ |true |
|
||
|
|contents|~6d:0.6471~ |true |
|
||
|
|contents|~6e:020~ |true |
|
||
|
|contents|~6f:022~ |true |
|
||
|
|contents|~6g:01a~ |true |
|
||
|
|contents|~6h:01B~ |true |
|
||
|
|contents|~6i:123 ~|true |
|
||
|
|contents|~6j:1972~ |true |
|
||
|
|contents|~6k:true~ |true |
|
||
|
|contents|~6l:false~ |true |
|
||
|
|contents|~6m:true~ |true |
|
||
|
|contents|~6n:false~ |true |
|
||
|
|contents|~6o: 3~ |true |
|
||
|
|
||
|
#-----------------------------------------------------------------
|
||
|
-----
|
||
|
!3 Test formatting with specific locale
|
||
|
''' Build expression page '''
|
||
|
!|script |
|
||
|
|start|Page Builder |
|
||
|
|line |!-!define FORMAT_LOCALE {fr}-! |
|
||
|
|line |!- ~7a:${= %4.4f: 2.2 / 3.4 =}~ -!|
|
||
|
|page |ExpressionPage |
|
||
|
|
||
|
''' Render it '''
|
||
|
!|Response Requester |
|
||
|
|uri |valid?|
|
||
|
|ExpressionPage|true |
|
||
|
|
||
|
!**> Contents
|
||
|
!|Response Examiner|
|
||
|
|type |string? |
|
||
|
|contents | |
|
||
|
|
||
|
!|Response Examiner |
|
||
|
|type |wrapped html?|
|
||
|
|contents| |
|
||
|
|
||
|
***!
|
||
|
|
||
|
''' Verify results '''
|
||
|
!|Response Examiner |
|
||
|
|type |pattern |matches?|
|
||
|
|contents|~7a:0,6471~|true |
|
||
|
|
||
|
#---[EOT]---
|