0.13.0 • Published 10 months ago

@onlabsorg/swan-js v0.13.0

Weekly downloads
70
License
MIT
Repository
github
Last release
10 months ago

SwanJS

SwanJS is an expression language that runs in any JavaScript environment.

swan = require('swan-js');              // load the library
evaluate = swan.parse( "3 * x" );       // compile an expression
context = swan.createContext({x:10});   // create an expression context
value = await evaluate(context);        // evaluate expression in context: 30

You can install SwanJS via npm:

npm install @onlabsorg/swan-js

Syntax

A Swan expression is simply a sequence of binary operations (operand operator operand operator operand ...), eventually grouped with parentheses (...), square braces ... or curly braces {...}.

The available binary operations are:

  • Arithmetic operations: x + y, x - y, x * y, x / y, x % y, x ^ y
  • Comparison operations: x == y, x != y, x > y, x >= y, x < y, x <= y
  • Logic operations: x & y, x | y
  • Conditional and alternative operations: x ? y, x ; y, or combined x ? y ; z
  • Pairing operation: x , y
  • Application (function call): x y
  • Function definition: x -> y
  • Composition operations: g << f, f >> g
  • Mapping operation: x => f
  • Assignment operations: name = x, name: x
  • Sub-contexting operation: x.y

The types of grouping available are:

  • Parentheses to alter evaluation precedence: (expr)
  • Square braces to create lists: [x1, x2, x3, ...]
  • Curly braces to create namespaces: {n1:v1, n2=v2, n3:v3, ...}

The data types defined in swan are:

  • Nothing, or empty tuple: ()
  • Bool: TRUE, FALSE
  • Numb: 123.4
  • Text: "abc", 'abc', `abc`
  • List: [a, b, c, ...]
  • Namespace: {n1:v1, n2=v2, n3=v3, ...}
  • Func: names -> expression
  • Undefined: undefined(operationName, operands)
  • Tuple: x1, x2, x3, ...

Besides these operations, Swan defines also some essential builtins, consisting in functions constants.

Learn more

License

MIT

Related projects

  • olojs is a template engine and content management system that uses swan as inline expression language
0.13.0

10 months ago

0.12.0

1 year ago

0.11.0

2 years ago

0.11.1

2 years ago

0.9.8

2 years ago

0.9.7

2 years ago

0.9.9

2 years ago

0.10.1

2 years ago

0.10.2

2 years ago

0.10.0

2 years ago

0.9.6

2 years ago

0.9.5

2 years ago

0.9.4

2 years ago

0.9.3

2 years ago

0.9.2

2 years ago

0.9.0

2 years ago

0.9.1

2 years ago

0.8.0

3 years ago

0.7.5

3 years ago

0.7.2

3 years ago

0.7.1

3 years ago

0.6.2

3 years ago

0.7.4

3 years ago

0.7.3

3 years ago

0.7.0

3 years ago

0.6.1

3 years ago

0.6.0

3 years ago

0.5.2

3 years ago

0.5.1

3 years ago

0.4.0

3 years ago

0.3.0

3 years ago

0.2.3

3 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.0

4 years ago