README.md in hairaito-0.0.2 vs README.md in hairaito-0.0.3
- old
+ new
@@ -1,7 +1,9 @@
# Hairaito
+Extends Nokogiri with text snippets highlighting. It looks like jquery-highlight plugin, but for ruby and nokogiri.
+
## Installation
Add this line to your application's Gemfile:
gem 'hairaito'
@@ -13,9 +15,71 @@
Or install it yourself as:
$ gem install hairaito
## Usage
+
+Hairaito adds to Nokogiri::XML::Document _highlight_ method.
+
+Example:
+
+```
+doc = Nokogiri::XML('<body>abc def ghi</body>')
+doc.highlight(['def'])
+doc.to_html # => '<body>abc <span class="snippet-part snippet-start" data-snippet-id="0">def</span> ghi</body>'
+```
+
+There are several options for highlighting customization:
+
+```
+{
+ highlight_base: {
+ selector: 'body', # Highlighting will be launched at this selector
+ content_wrapper: '', # Highlighting base content can be wrapped by this tag
+ content_wrapper_class: 'highlighting-base', # Class for wrapper above
+ },
+ snippet: {
+ part_wrapper: 'span', # Found snippet parts will be wrapped with this tag
+ part_wrapper_class: 'snippet-part', # Class for wrapper above
+ starting_part_class: 'snippet-start', # Class for wrapper above, is added only for first part per found snippet
+ },
+ numeration: {
+ attr: 'data-snippet-id', # Snippet parts of single snippet will have same numeration value in this attribute
+ prefix: '', # Prefix, that will be added to each numeration value
+ suffix: '', # Suffix, that will be added to each numeration value
+ start_with: 0, # Starting point for numeration increment
+ },
+ boundaries: {
+ whole_words_only: true, # If true, only whole words will be found
+ inline_tags: %w(a b i s u basefont big em font img label small span strike strong sub sup tt), # Tags, that aren't considered as word boundary
+ word_parts: '[а-яА-ЯёЁa-zA-Z\d]', # Characters, that are considered as word part
+ },
+}
+```
+
+Example:
+
+```
+doc = Nokogiri::XML('<body>abc def ghi abcdefghi</body>')
+options = {
+ highlight_base: {
+ content_wrapper: 'div',
+ },
+ snippet: {
+ starting_part_class: 'start',
+ part_wrapper_class: 'part',
+ },
+ numeration: {
+ attr: 'data-id',
+ prefix: 'snippet_'
+ },
+ boundaries: {
+ whole_words_only: false,
+ }
+}
+doc.highlight(['abc'], options)
+doc.to_html # => '<body><div class="highlighting-base"><span class="part start" data-id="snippet_0">abc</span> def ghi <span class="part start" data-id="snippet_1">abc</span>defghi</div></body>'
+```
## Contributing
1. Fork it ( https://github.com/dmazilov/hairaito/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)