https://github.com/crystal-lang/crystal-readline
Crystal bindings to GNU Readline Library
https://github.com/crystal-lang/crystal-readline
Last synced: 3 months ago
JSON representation
Crystal bindings to GNU Readline Library
- Host: GitHub
- URL: https://github.com/crystal-lang/crystal-readline
- Owner: crystal-lang
- License: mit
- Created: 2019-10-22T17:30:36.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-02-22T21:27:21.000Z (over 1 year ago)
- Last Synced: 2024-10-08T12:46:14.484Z (8 months ago)
- Language: Crystal
- Size: 17.6 KB
- Stars: 21
- Watchers: 12
- Forks: 9
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# readline
Crystal bindings to [GNU Readline Library](https://www.gnu.org/software/readline).
## Installation
1. Add the dependency to your `shard.yml`:
```yaml
dependencies:
readline:
github: crystal-lang/crystal-readline
```2. Run `shards install`
## Usage
```crystal
require "readline"user_input = Readline.readline("> ")
```## Troubleshooting
### Static linking
If you build your binary with `crystal build --static` you might encounter errors like these:
```
(.text+0x678): undefined reference to `PC'
(.text+0x687): undefined reference to `BC'
(.text+0x68e): undefined reference to `UP'
(.text+0x728): undefined reference to `tgetent'
(.text+0x76f): undefined reference to `tgetstr'
(.text+0x799): undefined reference to `PC'
(.text+0x7af): undefined reference to `BC'
(.text+0x7bd): undefined reference to `UP'
(.text+0x7cf): undefined reference to `tgetflag'
(.text+0x81e): undefined reference to `tgetflag'
(.text+0x938): undefined reference to `tgetflag'
```In this case you may need to explicitly link to `libtermcap`. Crystal offers the
`--link-flags` option but it doesn't let you specify where to insert the new
flags, and this is order dependent. Luckily, the linker doesn't complain about
duplicate flags, so you can link `libtermcap` like so:```sh-session
$ crystal build --static --link-flags "-rdynamic -static -lreadline -ltermcap" main.cr
```## Contributing
1. Fork it ()
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request