https://github.com/busyloop/cythara
A small collection of String helpers
https://github.com/busyloop/cythara
Last synced: about 1 year ago
JSON representation
A small collection of String helpers
- Host: GitHub
- URL: https://github.com/busyloop/cythara
- Owner: busyloop
- License: mit
- Created: 2023-09-10T13:45:52.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-09-10T14:37:44.000Z (almost 3 years ago)
- Last Synced: 2025-06-20T10:13:36.548Z (about 1 year ago)
- Language: Crystal
- Size: 474 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Cythara
[](https://github.com/busyloop/cythara/actions/workflows/ci.yml?query=branch%3Amaster) [](https://en.wikipedia.org/wiki/MIT_License) [](https://github.com/busyloop/cythara/releases)
A small collection of String helpers.
## Features
##### Text formatting
* `linewrap` - Wrap a String at a given width
* `wordwrap` - Wrap a String to a given width at word boundaries
##### ANSI
* `contains_ansi?` - Detect ANSI escape codes
* `strip_ansi` - Strip ANSI escape codes
## Installation
1. Add the dependency to your `shard.yml`:
```yaml
dependencies:
cythara:
github: busyloop/cythara
```
2. Run `shards install`
## API
* 📚 [API Documentation](https://busyloop.github.io/cythara/Cythara.html)

## Usage
```crystal
require "cythara/wrap"
Cythara.wordwrap("The quick brown fox", 12) # => ["The quick", "brown fox"]
Cythara.linewrap("The quick brown fox", 12) # => ["The quick br", "own fox"]
require "cythara/ansi"
Cythara.contains_ansi?("\e[31;1mRed Fox") # => true
Cythara.strip_ansi("\e[31;1mRed Fox") # => "Red Fox"
```
## Usage for lazy monkeys 🐒
```crystal
require "cythara/string"
"The quick brown fox".wordwrap(12) # => ["The quick", "brown fox"]
"The quick brown fox".linewrap(12) # => ["The quick br", "own fox"]
"\e[31;1mRed Fox".contains_ansi? # => true
"\e[31;1mRed Fox".strip_ansi # => "Red Fox"
```
## Credits
The `strip_ansi` and `contains_ansi?` methods were ported
from the [strings-ansi](https://github.com/piotrmurach/strings-ansi) Ruby gem by Piotr Murach.
## 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