builder-js
v0.0.1-dev
Published
Builder language implementation
Downloads
4
Readme
Builder language combines a preprocessor with an expression language and advanced imports.
Please note that the works is in-progress and published for preview purposes only.
Syntax
Directives
Directives start with @ symbol.
@set
Assigns a value of an expression to a variable.
Variables are defined in a global context.
Example:
Sets SOMEVAR
to 1:
@macro
@endmacro can be replaced with @end.
Declares a block of code that can take parameters and can be used with an @include statement. Once declared, macros are available from anywhere.
Variables declared as macro argumentys are only available within the macro scope and override global variables with the same name (but do not change them).
Example:
Then some_macro can be used as:
which will produce:
Hello, username!
Roses are red,
And violets are of undefiend color.
@if – @elseif – @else
Conditional directive.
@endif can be replaced with @end.
Example:
@{...} (inline expressions)
Inserts the value of the enclosed expression.
Example:
results in the following output:
Hello, Someone, the result is: 56088.
@error
Emits an error.
Example:
@include
Includes local file, external source or a macro.
Macro
Local Files
Remote Files
From Git Repository
For example, importing file from GitHub looks like:
Head of the default branch
Head of the master branch
Tag v1.2.3:
Latest available tag
Expressions
Directives that have parameters allow usage of expression syntax.
For example:
- @include <source:expression>
- @set <variable:identifier> <value:expression>
- @if <condition:expression>
- @elseif <condition:expression>
- @{<expression>} (inline expressions)
Types
The following types are supported in expressions:
- numbers (eg:
1
,1E6
,1e-6
,1.567
) - strings (eg:
"abc"
,'abc'
) null
true
false
Operators
Binary
|| && == != < > <= >= + - * / %
Unary
+ - !
Member Expressions
somevar.member
somevar["member"]
([1, 2, 3])[1]
Conditional Expressions
test ? consequent : alternate
Variables
- Variables defined by
<b>@set</b>
statements are available in expressions. - Undefined variables are evaluated as
null
. - Variable names can contain
$
,_
, latin letters and digits and can start only with a non-digit.
__LINE__
Line number (relative to the file in which this variable appears).
Example:
__FILE__
Name of the file in which this variable appears.
Example:
Functions
- min(<numbers>)
- max(<numbers>)
- abs(<number>)
- defined(<variable_name>) – returns
true
if a variable is defined,false
otherwise.
Comments
Lines starting with @
followed by space or a line break are treated as comments and not added to the output.
Example:
License
MIT
Author
Mikhail Yurasov [email protected]