- Many Ari functions were written with scalar use-cases in mind, but many of them would be more powerful if they supported both scalar and array arguments. Such pervasive/broadcasting behavior has been added to the following functions:
time.format
(also swapped arg order)time.parse
- Corrects the version of itself that Ari reports to Goal, surfaced via
rt.get"v"
- (Dev) Adds
./script/release
(written in Goal) to better automate releases of Ari
- Latest Goal version integrated, including latest
lib/*.goal
files and help content. I neglected to upgrade to the latest before cutting v0.1.2. - Removed
rtnames
because Goal'srt.get
now has everything needed forac
. This change removed adding verbs to the auto-complete, because except for::
they're all single characters and thus not something people would be trying to auto-complete on.
- Removed Ari's
glob
andabspath
now that Goal has them. - Made
help
use Goal's updated help, while also adding a dyadic arity that allows adding/overriding help entries in Goal code. - Added
rtnames
which is a dictionary, the values of which are all globals, keywords, and syntax characters defined in the Goal environment - Added
ac
function (mnemonic "auto-complete") which relies onrtnames
to match names based on glob (if arg is string) or regex (if arg is regex). pp.tbl
andpp.dict
which invokefmt.tbl
andfmt.dict
with default values (all rows/columns;"%.2f"
float format)time.utc
to set location of a time value to UTCtime.format
to format a time with a given format. Format constants from Go'stime
package are already defined.time.date
to create a time object given the year, month, day, hour, minute, second, nanosecond, and location. Accepts 1 to 8 arguments, defaulting to 0 values and UTC for those omitted.time.*
functions to extract parts of a time objecttime.loadlocation
to create a location object given a canonical IANA name (and given the system has IANA data)time.fixedzone
to create an ad hoc location object given a name and offset-in-seconds-from-UTCtime.locationstring
to get a string representation of a location objecturl.encode
monad to escape either a path (if arg is string) or query parameters (if arg is dictionary)http.serve
dyad to run an HTTP server. See implementation for details.- Bug Fix: Raw REPL would not properly ignore comment content. Fix ported from anaseto's fix in the Goal repo here.
- Upgrades to go-resty and go-duckdb dependencies.
- Goal version from commit fa948e4ad6cb7c9d5d8d1b0d6b95e5128d600087
- Test framework. See usage in the
testing/
folder and the test scripts in thescript/
folder. - Raw REPL. The default REPL provides a rich editing experience with history, auto-complete, etc.
However, that rich REPL is not ideal for evaluating code that is sent from an editor to the REPL,
since it is both slow and doesn't allow for more than one complete multi-line expression at a time.
Running with
ari -r
provides a much simpler REPL similar to Goal's which is more performant and allows for an arbitrary amount of input. - Output format supported in Goal and SQL modes. See
ari --help
or)output.
at the REPL for options. Initial output formats supported are CSV/TSV, Markdown, LaTeX, and JSON (both compact and indented). glob
andabspath
functions, which wrap Go'spath/filepath.Glob
andpath/filepath.Abs
functions respectively.FILE
is bound to the absolute path to the current source file when invokingari
for one-off execution of a script. TBD whether this will remain absolute path or be changed to relative.csv.tbl
andjson.tbl
functions for creating Goal tables from output ofcsv
andjson
respectively. JSON payload is expected to be a JSON array of JSON objects with common keys.tui.style
,tui.color
, andtui.render
functions for creating colorized/stylized output at the terminal.
- Initial release
- Goal language with HTTP, SQL, and nascent date/time extensions.
- Custom CLI with auto-completion and feature-rich line editing with bubbline library.
- Starting to use ari for load-bearing scripting and data analysis, so it's time to cut an initial release.