[manual] add doc about expressions in the shell
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/4aeed786 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/4aeed786 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/4aeed786 Branch: refs/heads/master Commit: 4aeed7861244fb9d0548f7ad3987968d47fdf491 Parents: 9b65560 Author: Guillaume Nodet <[email protected]> Authored: Thu Apr 30 09:49:50 2015 +0200 Committer: Guillaume Nodet <[email protected]> Committed: Thu Apr 30 09:50:17 2015 +0200 ---------------------------------------------------------------------- .../main/webapp/developers-guide/scripting.conf | 75 ++++++++++++++++++++ manual/src/main/webapp/users-guide/console.conf | 11 +++ 2 files changed, 86 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/4aeed786/manual/src/main/webapp/developers-guide/scripting.conf ---------------------------------------------------------------------- diff --git a/manual/src/main/webapp/developers-guide/scripting.conf b/manual/src/main/webapp/developers-guide/scripting.conf index afe2135..9fce440 100644 --- a/manual/src/main/webapp/developers-guide/scripting.conf +++ b/manual/src/main/webapp/developers-guide/scripting.conf @@ -36,6 +36,79 @@ The {{$.context}} access the context variables in the current session. We access to the {{bundle}} variable (an array containing all bundles), and we want to display the bundle location for the bundle at the index 1 in the bundle array. +h2. Expressions + +The shell has a built-in expression parser. Expressions must be enclosed with the {{%(...)}} syntax. + +Examples: +{code} +karaf@root()> %(1+2) +3 +karaf@root()> a = 0 +0 +karaf@root()> %(a+=1) +1 +karaf@root()> %(a+=1) +2 +karaf@root()> b=1 +1 +karaf@root()> %(SQRT(a^2 + b^2)) +1.7320508 +{code} + +h3. Mathematical Operators +|| Operator || Description || +| + | Additive operator | +| - | Subtraction operator | +| * | Multiplication operator | +| / | Division operator | +| % | Remainder operator (Modulo) | +| ^ | Power operator | + +h3. Boolean Operators +|| Operator || Description || +| = | Equals | +| == | Equals | +| != | Not equals | +| <> | Not equals | +| < | Less than | +| <= | Less than or equal to | +| > | Greater than | +| >= | Greater than or equal to | +| && | Boolean and | +| \|\| | Boolean or | + +h3. Supported Functions +|| Function || Description || +| NOT(_expression_) | Boolean negation, 1 (means true) if the expression is not zero | +| IF(_condition_,_value_if_true_,_value_if_false_) | Returns one value if the condition evaluates to true or the other if it evaluates to false | +| RANDOM() | Produces a random number between 0 and 1 | +| MIN(_e1_,_e2_) | Returns the smaller of both expressions | +| MAX(_e1_,_e2_) | Returns the bigger of both expressions | +| ABS(_expression_) | Returns the absolute (non-negative) value of the expression | +| ROUND(_expression_,precision) | Rounds a value to a certain number of digits, uses the current rounding mode | +| FLOOR(_expression_) | Rounds the value down to the nearest integer | +| CEILING(_expression_) | Rounds the value up to the nearest integer | +| LOG(_expression_) | Returns the natural logarithm (base e) of an expression | +| SQRT(_expression_) | Returns the square root of an expression | +| SIN(_expression_) | Returns the trigonometric sine of an angle (in degrees) | +| COS(_expression_) | Returns the trigonometric cosine of an angle (in degrees) | +| TAN(_expression_) | Returns the trigonometric tangens of an angle (in degrees) | +| SINH(_expression_) | Returns the hyperbolic sine of a value | +| COSH(_expression_) | Returns the hyperbolic cosine of a value | +| TANH(_expression_) | Returns the hyperbolic tangens of a value | +| RAD(_expression_) | Converts an angle measured in degrees to an approximately equivalent angle measured in radians | +| DEG(_expression_) | Converts an angle measured in radians to an approximately equivalent angle measured in degrees | + +Functions names are case insensitive. + +h3. Supported Constants + +|| Constant || Description || +| PI | The value of _PI_, exact to 100 digits | +| TRUE | The value one | +| FALSE | The value zero | + h2. List, maps, pipes and closures Using [], you can define array variable: @@ -119,6 +192,8 @@ Apache Karaf console provides commands for scripting: * {{shell:each}} * ... +See the [full list of {{shell}} commands|/commands/commands]. + h2. Leveraging existing Java capabilities (via reflection) Apache Karaf console supports loading and execution of Java classes. http://git-wip-us.apache.org/repos/asf/karaf/blob/4aeed786/manual/src/main/webapp/users-guide/console.conf ---------------------------------------------------------------------- diff --git a/manual/src/main/webapp/users-guide/console.conf b/manual/src/main/webapp/users-guide/console.conf index 5191a5e..d386b78 100644 --- a/manual/src/main/webapp/users-guide/console.conf +++ b/manual/src/main/webapp/users-guide/console.conf @@ -315,6 +315,17 @@ karaf@root()> list = [1 2 3]; each ($list) { echo $it } 3 {code} +{tip} +The same loop could be written with the {{shell:while}} command: + +{code} +karaf@root()> a = 0 ; while { %((a+=1) <= 3) } { echo $a } +1 +2 +3 +{code} +{tip} + You can create the list yourself (as in the previous example), or some commands can return a list too. We can note that the console created a "session" variable with the name {{list}} that you can access with {{$list}}.
