Joe Bellus
3b6f7cdbf4
continuous-integration/drone/push Build is passing
Details
Change word forward and backward were implemented in the editor_data and bound in the editor to "cw" and "cb" respectively. Scan word forward and scan word backward now utilize a shared function that gets the scan position. This is now also used for delete word forward/backward, so they can share logic Updated keybinds in README |
||
---|---|---|
.cargo | ||
abacus-core | ||
abacus-ui | ||
.drone.yml | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.org | ||
abacus_demo.png | ||
frame |
README.org
Abacus
A scratch pad for calcualtions.
Abacus is a lightweight scratch pad for making quick calculations. It is programatic by nature and employs a simple custom scripting language designed around calculating. The scripting lanugage is fully features and supports functions, closures, variable assignment, dataframes, sereis, primitive data types, arrays, maps, etc.
Abacus is similar to a very lightweight version of Jupyter, runs as a single binary, and using only a dozen megs of ram.
The following prebuilt binaries are provided:
- amd64 Linux Binary (tar.gz)
- Windows Executable (exe)
- Linux Debian Package (.deb)
For information on the UI application visit Abacus UI For a scripting reference see Abacus Core
Building the project from source
This project is broken into two projects:
- Abacus Core - Which contains the scirpt processing and calculation engine.
- Abacus UI - The desktop application
Rust
Download and install the rust toolkit: https://rustup.rs.
Linux
General Dependencies
This is a GTK3 application and as such the GTK3 development library needs to be installed:
sudo apt-get install libgtk-3-dev
You may also need lib-shape and lib-xfixes:
apt-get -y install libxcb-shape0-dev libxcb-xfixes0-dev
Launching
Run and build via cargo
cargo run
Project Status
Abacus is currently in early development. It employs a custom built editor which can be slightly odd at times. A primary focus currently is improving the editing experience and adding additional scripting functionality.
Road map
Editor basicsScripting basics - Scripting functionality provided by extending the Rhai scripting languageDataframe support - Pandas style dataframe support via the Polars frameworkCSV Support - Importing and processing large CSV files- Editor improvements - Improve editor to mirror basic VIM functionality and fix text/cursor related bugs
- Math functions - Implement common mathmatical functions and constants into the scripting language
- Dataframe performance - Reduce the performance cost of converting from the scripting engine to polars
- Web/JSON support - Add HTTP requesting functionality and JSON parsing/processing to the scripting engine
Shoulders of giants
Dependencies and technology credits:
- Druid UI kit - The UI for Abacus is built with the Druid UI kit for rust
- Polars - Dataframes are processed through the Polars data frame library
- Rhai - The scirpting language for Abacus is derrived by extending the Rhai embedded language