Class: Slack::Messenger::Util::LinkFormatter
- Inherits:
-
Object
- Object
- Slack::Messenger::Util::LinkFormatter
- Defined in:
- lib/slack-messenger/util/link_formatter.rb
Constant Summary collapse
- HTML_PATTERN =
%r{ <a (?:.*?) href=['"](.+?)['"] (?:.*?)> (.+?) </a> }x
- VALID_URI_CHARS =
'\w\-\.\~\:\/\?\#\[\]\@\!\$\&\'\*\+\,\;\='
- MARKDOWN_PATTERN =
Attempt at only matching pairs of parens per the markdown spec spec.commonmark.org/0.27/#links
%r{ \[ ([^\[\]]*?) \] \( ( (?:https?:\/\/|mailto:) (?:[#{VALID_URI_CHARS}]*?|[#{VALID_URI_CHARS}]*?\([#{VALID_URI_CHARS}]*?\)[#{VALID_URI_CHARS}]*?) ) \) }x
Instance Attribute Summary collapse
-
#formats ⇒ Object
readonly
Returns the value of attribute formats.
Class Method Summary collapse
Instance Method Summary collapse
-
#formatted ⇒ Object
rubocop:disable Lint/RescueWithoutErrorClass.
-
#initialize(string, formats: %i[html markdown]) ⇒ LinkFormatter
constructor
A new instance of LinkFormatter.
Constructor Details
#initialize(string, formats: %i[html markdown]) ⇒ LinkFormatter
Returns a new instance of LinkFormatter.
39 40 41 42 |
# File 'lib/slack-messenger/util/link_formatter.rb', line 39 def initialize string, formats: %i[html markdown] @formats = formats @orig = string.respond_to?(:scrub) ? string.scrub : string end |
Instance Attribute Details
#formats ⇒ Object (readonly)
Returns the value of attribute formats.
37 38 39 |
# File 'lib/slack-messenger/util/link_formatter.rb', line 37 def formats @formats end |
Class Method Details
.format(string, opts = {}) ⇒ Object
32 33 34 |
# File 'lib/slack-messenger/util/link_formatter.rb', line 32 def format string, opts={} LinkFormatter.new(string, opts).formatted end |
Instance Method Details
#formatted ⇒ Object
rubocop:disable Lint/RescueWithoutErrorClass
45 46 47 48 49 50 51 52 |
# File 'lib/slack-messenger/util/link_formatter.rb', line 45 def formatted return @orig unless @orig.respond_to?(:gsub) sub_markdown_links(sub_html_links(@orig)) rescue => e raise e unless RUBY_VERSION < "2.1" && e..include?("invalid byte sequence") raise e, "#{e.}. Consider including the 'string-scrub' gem to strip invalid characters" end |