bare-script
Project description
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 Python (this package) and BareScript for JavaScript. 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.
Links
Executing BareScript
To execute a BareScript script, parse the script using the parse_script function. Then execute the script using the execute_script function. For example:
>>> from bare_script import execute_script, parse_script ... >>> # Parse the script ... script = parse_script('''\ ... # Double a number ... function double(n): ... return n * 2 ... endfunction ... ... return N + ' times 2 is ' + double(N) ... ''') ... >>> # Execute the script ... globals = {'N': 10} >>> print(execute_script(script, {'globals': globals})) 10 times 2 is 20
The BareScript Library
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.
>>> import urllib.request ... >>> from bare_script import execute_script, fetch_http, parse_script ... >>> # Parse the script ... script = parse_script('''\ ... # Fetch the BareScript library documentation JSON ... docs = jsonParse(systemFetch('https://craigahobbs.github.io/bare-script-py/library/library.json')) ... ... # Return the number of library functions ... return 'The BareScript Library has ' + arrayLength(objectGet(docs, 'functions')) + ' functions' ... ''') ... >>> # Execute the script ... print(execute_script(script, {'fetchFn': fetch_http})) The BareScript Library has 105 functions
Evaluating BareScript Expressions
To evaluate a BareScript expression, parse the expression using the parse_expression function. Then evaluate the expression using the evaluate_expression function.
Expression evaluation includes the BareScript Expression Library, a set of built-in, spreadsheet-like functions.
For example:
>>> from bare_script import evaluate_expression, parse_expression ... >>> # Parse the expression ... expr = parse_expression('2 * max(a, b, c)') ... >>> # Evaluate the expression ... variables = {'a': 1, 'b': 2, 'c': 3} >>> print(evaluate_expression(expr, None, variables)) 6.0
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. MarkdownUp extends its standard library with 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 python-build. It was started using python-template as follows:
template-specialize python-template/template/ bare-script-py/ -k package bare-script -k name 'Craig A. Hobbs' -k email 'craigahobbs@gmail.com' -k github 'craigahobbs'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bare_script-3.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77d22749e1496284270efb4e597ddcef4637d4592c82a76ecb7610800a9b0f86 |
|
MD5 | 272009b66e3f5f7711bb4b055a50ed67 |
|
BLAKE2b-256 | 4f8294f2a39881dfe0309889602ed36d369d463b1dea6f44e31b8a8a1d578f21 |