https://github.com/docelic/term_app
Functional term/console app environment
https://github.com/docelic/term_app
console console-application crystal crystal-lang terminal terminal-based terminal-graphics tui
Last synced: 8 months ago
JSON representation
Functional term/console app environment
- Host: GitHub
- URL: https://github.com/docelic/term_app
- Owner: docelic
- License: other
- Created: 2019-11-30T23:40:35.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-04-12T10:03:19.000Z (almost 6 years ago)
- Last Synced: 2025-05-12T23:02:12.448Z (11 months ago)
- Topics: console, console-application, crystal, crystal-lang, terminal, terminal-based, terminal-graphics, tui
- Language: Crystal
- Size: 43.9 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://travis-ci.com/crystallabs/term_app)
[](https://github.com/crystallabs/term_app/releases/latest)
[](https://github.com/crystallabs/term_app/blob/master/LICENSE)
# Term_app
Term_app is a minimal functional term/console app environment for Crystal.
It is closely related to shards [Terminfo](https://github.com/crystallabs/terminfo) and
[Tput](https://github.com/crystallabs/tput):
Terminfo parses terminfo files into instances of `Terminfo::Data` or custom classes.
Tput uses Terminfo data and additional methods to configure itself for outputting correct terminal sequences.
Term_app uses Tput and implements a completely usable term/console environment.
It sets up event handlers, keys and mouse listeners, and everything else needed to
provide a minimal working application.
It is implemented natively and does not depend on ncurses or other external library.
## Installation
Add the dependency to `shard.yml`:
```yaml
dependencies:
term_app:
github: crystallabs/term_app
version: 0.1.2
```
## Usage in a nutshell
Here is a basic example that starts the application, waits for keypresses or
pasted data, prints the received content, and then sets the cursor at screen
position x = 10, y = 10:
```crystal
require "term_app"
my = TermApp::Data.new
my.input.on(TermApp::DataEvent) { |e|
my.tput.print e.data[...e.len]
my.tput.sety 10
my.tput.setx 10
}
sleep 10
```
## API documentation
Run `crystal docs` as usual, then open file `docs/index.html`.
Also, see examples in the directory `examples/`.
## Testing
Run `crystal spec` as usual.
Also, see examples in the directory `examples/`.
## Thanks
* All the fine folks on FreeNode IRC channel #crystal-lang and on Crystal's Gitter channel https://gitter.im/crystal-lang/crystal
## Other projects
List of interesting or similar projects in no particular order:
- https://github.com/crystallabs/crysterm - Complete term/console toolkit for Crystal