require 'banzai' require 'html/pipeline/filter' require 'uri' module Banzai module Filter # HTML Filter for auto-linking URLs in HTML. # # Based on HTML::Pipeline::AutolinkFilter # # Context options: # :autolink - Boolean, skips all processing done by this filter when false # :link_attr - Hash of attributes for the generated links # class AutolinkFilter < HTML::Pipeline::Filter include ActionView::Helpers::TagHelper # Pattern to match text that should be autolinked. # # A URI scheme begins with a letter and may contain letters, numbers, # plus, period and hyphen. Schemes are case-insensitive but we're being # picky here and allowing only lowercase for autolinks. # # See http://en.wikipedia.org/wiki/URI_scheme # # The negative lookbehind ensures that users can paste a URL followed by a # period or comma for punctuation without those characters being included # in the generated link. # # Rubular: http://rubular.com/r/cxjPyZc7Sb LINK_PATTERN = %r{([a-z][a-z0-9\+\.-]+://\S+)(?