BareScript; a lightweight scripting and expression language


BareScript
is a simple, lightweight, and portable programming language. Its Pythonic syntax is influenced by
JavaScript, C, and the Unix Shell. BareScript also has a library of built-in functions for common
programming operations. BareScript can be embedded within applications or used as a stand-alone
programming language using the command-line interface.
There are two implementations of BareScript:
BareScript for JavaScript
(this package) and
BareScript for Python.
Both implementations have 100% unit test coverage with identical unit test suites, so you can be
confident that BareScript will execute the same regardless of the underlying runtime environment.
- The BareScript Language
- The BareScript Library
- The BareScript Expression Library
- API Documentation
- Source code
To execute a BareScript script, parse the script using the
parseScript
function. Then execute the script using the
executeScript
function or the
executeScriptAsync
function. For example:
`` javascript
import {executeScript} from 'bare-script/lib/runtime.js';
import {parseScript} from 'bare-script/lib/parser.js';
// Parse the script
const script = parseScript(\
return N + ' times 2 is ' + double(N));
// Execute the script
const globals = {'N': 10};
console.log(executeScript(script, {globals}));
`
This outputs:
``
10 times 2 is 20
The BareScript Library
includes a set of built-in functions for mathematical operations, object manipulation, array
manipulation, regular expressions, HTTP fetch and more. The following example demonstrates the use
of the
systemFetch,
objectGet, and
arrayLength
functions.
` javascript
import {executeScriptAsync} from 'bare-script/lib/runtimeAsync.js';
import {parseScript} from 'bare-script/lib/parser.js';
// Parse the script
const script = parseScript(\
);// Execute the script
console.log(await executeScriptAsync(script, {'fetchFn': fetch}));
`This outputs:
`
The BareScript Library has 186 functions
`
Evaluating BareScript Expressions
To evaluate a
BareScript expression,
parse the expression using the
parseExpression
function. Then evaluate the expression using the
evaluateExpression
function or the
evaluateExpressionAsync
function.
Expression evaluation includes the
BareScript Expression Library,
a set of built-in, spreadsheet-like functions.
For example:
` javascript
import {evaluateExpression} from 'bare-script/lib/runtime.js';
import {parseExpression} from 'bare-script/lib/parser.js';// Parse the expression
const expr = parseExpression('2 * max(a, b, c)');
// Evaluate the expression
const variables = {'a': 1, 'b': 2, 'c': 3};
console.log(evaluateExpression(expr, null, variables))
`This outputs:
`
6
`
The BareScript Command-Line Interface (CLI)
You can run BareScript from the command line using the BareScript CLI, "bare". BareScript script
files use the ".bare" file extension.
`
bare script.bare
`Note: In the BareScript CLI, import statements and the
systemFetch
function read non-URL paths from the local file system.
systemFetch
calls with a non-URL path and a
request body
write the body to the path.
MarkdownUp, a Markdown Viewer with BareScript
MarkdownUp is a Markdown Viewer that executes
BareScript embedded within Markdown documents. The MarkdownUp runtime contains functions for
dynamically rendering Markdown text, drawing SVG images, etc. For example:
~~~
Markdown Application
This is a Markdown document with embedded BareScript:
` markdown-script
markdownPrint('Hello, Markdown!')
`
~~~
Development
This package is developed using javascript-build.
It was started using javascript-template as follows:
`
template-specialize javascript-template/template/ bare-script/ -k package bare-script -k name 'Craig A. Hobbs' -k email 'craigahobbs@gmail.com' -k github 'craigahobbs' -k noapp 1
``