All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Simple Windows GUI for compiling.
- Added
handle
function for use in OpenStudio input files.
- Added modulo operation
mod
- Added
fold
function - Added literal
* *
parsing for DOE-2 files - Added ability to pass boolean flags through CLI
- Added
exists
function for checking for boolean flags
- Added short circuit logic evaluation for
and
andor
operators
- Now targets .NET 7.
- DOE-2 support added. Can now parse input file in the Building Description Language (BDL) format.
- Release binaries are not trimmed, due to compiler warnings about possible behavior changes.
- References to 'structure' for associative arrays has been replaced with 'dictionary'.
- Added new syntax for integrating with the NREL Building Component Library.
- Now releasing executable as a single file.
- Numbers are now printing with 4 significant figures on output.
-
Added new dedicated operators for mapping, filtering, and piping. The operators are
|=
,|>
, and->
. -
Added new possible terminator for idf objects,
$
. This is important when building objects that can have arbitrary lengths, such asWall:Detailed
. There will likely be a different allowed character for aesthetic purposes in future version. -
Added range syntax. Can quickly make lists with integers like
0..10
. -
New log statement. Allows for simple debugging. Prints value of an expression to standard error.
-
Documentation is now available in HTML form. See it live at neobem.io.
-
BREAKING: The order of the parameters for the
map
andfilter
function have swapped. Old programs will have to swap the order or move to the more concise operators|=
and|>
. -
BREAKING: The order of the parameters for the
join
function has swapped. Old programs will also have to swap this.
- Vast improvements to the formatter.
- The documentation for the 'has' function was previously incorrect on the order of the parameters.
- Documentation that attempted to use a logarithm now uses the actual logarithm function.
- Ability to load in JSON data
- Ability to load in XML data
- A
print
statement is now allowed within a function. Previously it was only allowed at the root scope of a file. - Added three new built in functions:
type
,guid
, andreplace
. - Added formatting option
-f
or--fmt
, analogous togofmt
. - When loading a delimited text file, there is an option to skip a number of header rows.
-
BREAKING: The grammar for imports was updated. The
as 'name'
token has been now forced to be an identifier, not a string. All strings will need to have the quotations removed, and thename
made into a valid identifier. -
The URI portion of the
import
statement now is generalized to be an expression, instead of a string. This means that the URI for an import can now be dynamic. This is not a breaking change. -
Box characters can now be used for inline data tables. Generally, the formatter will be used to redraw the inline data tables with these box characters.
- The program now exits immediately on any errors in lexing or parsing. Previously would still try to walk the broken syntax tree.
-
BREAKING: Structures now act as true associative arrays. You can use any string expression as the key.
-
BREAKING: Because the structures can now use any string as the key, the sanitation of column headers when loading from Excel has been removed.
-
BREAKING: Inline data table headers are now strings, not identifiers.
-
String escaping is now supported for the following characters:
'\n'
for newline'\r'
for carriage return'\t'
for tab'\''
for single quote'\\'
for the backslash character itself
-
New built in functions:
keys
: returns all the current keys in a structurehas
: check whether a structure has a given key initializedinit
: return all but the last element in a listlast
: return the last element in a listjoin
: join a list of strings together with a separator string
-
Pretty print the IDF objects by default.
-
Added ability to create empty structure.
-
Added equality comparisons between booleans, empty lists (like
list == []
), and comparison of lists with different lengths. -
Trailing commas are now allowed in both lists and structures ([1, 2, 3,] is valid).
-
'+' operator is now defined for 'string + number'
-
'+' operator is now defined for two structures.
- Comments called from within functions now have replacements made.
- BREAKING: Executable is now called
nbem
instead ofbemp
.
- Vast documentation additions, including 'Getting Started' section.
- Boolean literal syntax, (i.e.
true
,false
,✓
,✗
). - Let binding syntax.
- Replacement ability in comments.
- Loading from Excel functionality.
- Grammar and functionality for exports.
- Ability to import from web location.
- Ability to read input from standard input.
- Printing of lists of lists now flattens output as expected.
- lambda expressions can now properly return values.
- Variable assignment with nested structures now works as expected.
data
syntax. Replaced withload
function.
- Everything! First working prototype of the language.