readability
Version, currently 0.2.02 versions
- 0.2.0latestFeb 10, 2019
- 0.1.0not indexedOct 31, 2019
github.com/joenas/readability.cr
Port of ruby-readability's port of arc90's readability project to Crystal
13 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
readability:
github: joenas/readability.cr
version: ~> 0.2.0Then run:
shards installshard.yml
- Crystal
0.27.2- License
- MIT
- Author
- joenas <jon@jonnev.se>
Dependencies
This version declares no dependencies.
README
# readability
[](https://travis-ci.org/joenas/readability.cr)
Crystal port of @cantino's [port](https://github.com/cantino/ruby-readability) of arc90's readability project
**Still a WIP!**
`document#images` is not implemented. Specs are not passing and some parts of them are probably incorrect...
There's also a monkey patch for `LibXML` while waiting for the changes in https://github.com/crystal-lang/crystal/pull/6910) to be released.
## Installation
Add this to your application's `shard.yml`:
```yaml
dependencies:
readability:
github: joenas/readability.cr
version: 0.2.0
```
## Usage
```crystal
require "readability"
require "http/client"
response = HTTP::Client.get "http://www.example.com"
document = Readability::Document.new(response.body)
puts document.content
puts document.meta_image
# With Options
options = Readability::Options.new(
tags: %w[article p span div document b strong em h1 h2 h3 h4],
remove_empty_nodes: true,
attributes: %w[],
blacklist: %w[figcaption figure]
)
document = Readability::Document.new(response.body, options)
```
Options
-------
You may provide options to `Readability::Options.new`, including:
* `:retry_length`: how many times to retry getting the best content
* `:min_text_length`: the least number of characters in a paragraph for it to be scored
* `:tags`: the base whitelist of tags to sanitize, defaults to `%w[div p]`;
* `:attributes`: whitelist of allowed attributes for `tags`;
* `:blacklist` and `:whitelist` allow you to explicitly scope to, or remove, CSS selectors.
* `:remove_unlikely_candidates`: whether to remove unlikely candidates or not
* `:weight_classes`: whether to use `weight_classes` or not
* `:clean_conditionally`: whether to use clean conditionally or not
* `:return_nil_content`: if no decent match, return `nil` for `#content`
* `:remove_empty_nodes`: remove `<p>` tags that have no text content; also
removes `<p>` tags that contain only images;
* `:debug`: provide debugging output, defaults false;
* `:ignore_image_format`: ~~for use with .images. For example:
`:ignore_image_format => ["gif", "png"]`;~~
* `:min_image_height`: ~~set a minimum image height for `#images`;~~
* `:min_image_width`: ~~set a minimum image width for `#images`.~~
## Contributing
1. Fork it (<https://github.com/joenas/readability.cr/fork>)
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
## Contributors
- [joenas](https://github.com/joenas) joenas - creator, maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.2.0- Tagged
- Feb 10, 2019
- Commit
b8c86cdd4411- Crystal
0.27.2- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/joenas/readability.cr
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 2