class SlackMrkdwn
Public Class Methods
from(markdown)
click to toggle source
# File lib/slack_mrkdwn.rb, line 6 def from(markdown) renderer = SlackMrkdwn.new Redcarpet::Markdown.new(renderer, strikethrough: true, underline: true, fenced_code_blocks: true).render(markdown) end
Public Instance Methods
block_code(content, _language)
click to toggle source
“` code block “`
# File lib/slack_mrkdwn.rb, line 74 def block_code(content, _language) "```\n#{content}```\n\n" end
block_quote(content)
click to toggle source
> quote
# File lib/slack_mrkdwn.rb, line 79 def block_quote(content) "> #{content}" end
codespan(content)
click to toggle source
`code`
# File lib/slack_mrkdwn.rb, line 84 def codespan(content) "`#{content}`" end
double_emphasis(content)
click to toggle source
bold
# File lib/slack_mrkdwn.rb, line 64 def double_emphasis(content) "*#{content}*" end
emphasis(content)
click to toggle source
italic
# File lib/slack_mrkdwn.rb, line 59 def emphasis(content) "_#{content}_" end
header(text, _header_level)
click to toggle source
Header
# File lib/slack_mrkdwn.rb, line 121 def header(text, _header_level) "*#{text}*\n" end
image(link, _title, _content)
click to toggle source

# File lib/slack_mrkdwn.rb, line 110 def image(link, _title, _content) link end
linebreak()
click to toggle source
# File lib/slack_mrkdwn.rb, line 125 def linebreak() "\n" end
link(link, _title, content)
click to toggle source
links
# File lib/slack_mrkdwn.rb, line 89 def link(link, _title, content) "<#{link}|#{content}>" end
list(entries, style)
click to toggle source
list. Called when all list items have been consumed
# File lib/slack_mrkdwn.rb, line 94 def list(entries, style) entries = format_list(entries, style) remember_last_list_entries(entries) entries end
list_item(entry, _style)
click to toggle source
list item
# File lib/slack_mrkdwn.rb, line 101 def list_item(entry, _style) if @last_entries && entry.end_with?(@last_entries) entry = indent_list_items(entry) @last_entries = nil end entry end
paragraph(text)
click to toggle source
# File lib/slack_mrkdwn.rb, line 114 def paragraph(text) pre_spacing = @last_entries ? "\n" : nil clear_last_list_entries "#{pre_spacing}#{text}\n\n" end
postprocess(content)
click to toggle source
# File lib/slack_mrkdwn.rb, line 44 def postprocess(content) content.rstrip end
preprocess(content)
click to toggle source
Encode Slack restricted characters
# File lib/slack_mrkdwn.rb, line 40 def preprocess(content) content.gsub('&', '&').gsub('<', '<').gsub('>', '>') end
strikethrough(content)
click to toggle source
~~strikethrough~~
# File lib/slack_mrkdwn.rb, line 49 def strikethrough(content) "~#{content}~" end
triple_emphasis(content)
click to toggle source
***bold and italic***
# File lib/slack_mrkdwn.rb, line 69 def triple_emphasis(content) "*_#{content}_*" end
underline(content)
click to toggle source
italic
# File lib/slack_mrkdwn.rb, line 54 def underline(content) "_#{content}_" end
Private Instance Methods
add_dashes(entries)
click to toggle source
# File lib/slack_mrkdwn.rb, line 140 def add_dashes(entries) entries.gsub(/^(\S+.*)$/, '- \1') end
clear_last_list_entries()
click to toggle source
# File lib/slack_mrkdwn.rb, line 157 def clear_last_list_entries @last_entries = nil end
format_list(entries, style)
click to toggle source
# File lib/slack_mrkdwn.rb, line 131 def format_list(entries, style) case style when :ordered number_list(entries) when :unordered add_dashes(entries) end end
indent_list_items(entry)
click to toggle source
# File lib/slack_mrkdwn.rb, line 165 def indent_list_items(entry) entry.gsub(@last_entries, nest_list_entries(@last_entries)) end
nest_list_entries(entries)
click to toggle source
# File lib/slack_mrkdwn.rb, line 161 def nest_list_entries(entries) entries.gsub(/^(.+)$/, ' \1') end
number_list(entries)
click to toggle source
# File lib/slack_mrkdwn.rb, line 144 def number_list(entries) count = 0 entries.gsub(/^(\S+.*)$/) do match = Regexp.last_match count += 1 "#{count}. #{match[0]}" end end
remember_last_list_entries(entries)
click to toggle source
# File lib/slack_mrkdwn.rb, line 153 def remember_last_list_entries(entries) @last_entries = entries end