auto_html alternatives and similar gems
Based on the "Misc" category.
Alternatively, view auto_html alternatives based on common mentions on social networks and blogs.
-
Guard
Guard is a command line tool to easily handle events on file system modifications. -
Betty
Friendly English-like interface for your command line. Don't remember a command? Ask Betty. -
Clipboard
Ruby access to the clipboard on Windows, Linux, macOS, Java, Cygwin, and WSL 📋︎ -
DeepPluck
Allow you to pluck attributes from nested associations without loading a bunch of records. -
Ruby Operators
Webpage to show interesting names of different Ruby operators. -
PluggableJs
Page-specific javascript for Rails applications with the ability of passing data. -
SmartTruncate
smart_truncate is a simple Rails gem that truncates text like a human.
Static code analysis for 29 languages.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of auto_html or a related project?
README
AutoHtml
AutoHtml is a collection of filters that transforms plain text into HTML code.
Installation
Add this line to your application's Gemfile:
gem 'auto_html'
And then execute:
$ bundle
Or install it yourself as:
$ gem install auto_html
Abstract
AutoHtml uses concepts found in "Pipes and Filters" processing design pattern:
Filter
- transforms an input. In AutoHtml context, this is any object that does the transformation through#call(String)
method. Filter options should be passed in initializer. AutoHtml provides some filters already, ie Link, Image, Markdown, etc.Pipeline
- a composition of filters that transforms input by passing the output of one filter as input for the next filter in line. In AutoHtml context, this is theAutoHtml::Pipeline
class. Since the same interface (method#call
) is used to pass input, we can say that Pipeline is just another Filter, which means it can be used as a building block for other Pipelines, in a mix with other filters.
Examples
link_filter = AutoHtml::Link.new(target: '_blank')
link_filter.call('Checkout out my blog: http://rors.org')
# => 'Checkout out my blog: <a target="blank" href="http://rors.org">http://rors.org</a>'
emoji_filter = AutoHtml::Emoji.new
emoji_filter.call(':point_left: yo!')
# => '<img src="/images/emoji/unicode/1f448.png" class="emoji" title=":point_left:" alt=":point_left:" height="20" witdh="20" align="absmiddle" /> yo!'
# Use Pipeline to combine filters
base_format = AutoHtml::Pipeline.new(link_filter, emoji_filter)
base_format.call('Checkout out my blog: http://rors.org :point_left: yo!')
# => 'Checkout out my blog: <a href="http://rors.org">http://rors.org</a> <img src="/images/emoji/unicode/1f448.png" class="emoji" title=":point_left:" alt=":point_left:" height="20" witdh="20" align="absmiddle" /> yo!'
# A pipeline can be reused in another pipeline. Note that the order of filters is important - ie you want
# `Image` before `Link` filter so that URL of the image gets transformed to `img` tag and not `a` tag.
comment_format = AutoHtml::Pipeline.new(AutoHtml::Markdown.new, AutoHtml::Image.new, base_format)
comment_format.call("Hello!\n\n Checkout out my blog: http://rors.org :point_left: yo! \n\n http://gifs.joelglovier.com/boom/booyah.gif")
# => "<p>Hello!</p>\n\n<p>Checkout out my blog: <a href="<img src="http://rors.org" target="_blank">http://rors.org</a> <img src="/images/emoji/unicode/1f448.png" />" class="emoji" title=":point_left:" alt=":point_left:" height="20" witdh="20" align="absmiddle" /> yo! </p>\n\n<p><a href="<img src="http://gifs.joelglovier.com/boom/booyah.gif" />" target="_blank"><img src="http://gifs.joelglovier.com/boom/booyah.gif" /></a></p>\n"
Bundled filters
Bellow is the list of bundled filters along with their optional arguments on initialization and their default values.
AutoHtml::Emoji
, width: 20, height: 20, asset_root: '/images'AutoHtml::HtmlEscape
AutoHtml::Image
, proxy: nil, alt: nilAutoHtml::Link
, target: nil, rel: nilAutoHtml::Markdown
AutoHtml::SimpleFormat
Using AutoHtml with ActiveRecord
For performance reasons it's a good idea to store the formated output in the database, in a separate column, to avoid generating the same content on each access. This can be acomplished simply by overriding the attribute writter:
class Comment < ActiveRecord::Base
FORMAT = AutoHtml::Pipeline.new(
AutoHtml::HtmlEscape.new,
AutoHtml::Markdown.new
)
def text=(t)
super(t)
self[:text_html] = FORMAT.call(t)
end
end
Now, every time text
attribute is set, text_html
will be set as well:
comment = Comment.new(text: 'Hey!')
comment.text_html # => '<p>Hey!</p>'
Licence
AutoHtml is released under the MIT License.
*Note that all licence references and agreements mentioned in the auto_html README section above
are relevant to that project's source code only.