slack_mrkdwn 1.0.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/slack_mrkdwn.rb +168 -18
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6db671a28f9f0c8c3e77012cea38905cf27003c8fdc4243ff5664b3836bd4821
|
4
|
+
data.tar.gz: 4ff4a22b0d87b506f73d8d6319a3f324be804788d4d49b32f3959dd304c203a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 296704690f4465026227dddb26a61484416c7f3fc6fa62210402c06cd012ff9d721d21901671943f2e045abf320f4227b025b3ea93dd16f18af2d0e67f1732ac
|
7
|
+
data.tar.gz: a68a10db9e03a24d0de7a75c23b99f4ca43eeb9a3ddef30dff615683b1faec3b6626632118b8ef8726fdb5f5b448e287e294c81d51ccc9b9476632e48b63471e
|
data/lib/slack_mrkdwn.rb
CHANGED
@@ -1,18 +1,168 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
.
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'redcarpet'
|
3
|
+
|
4
|
+
class SlackMrkdwn < Redcarpet::Render::Base
|
5
|
+
class << self
|
6
|
+
def from(markdown)
|
7
|
+
renderer = SlackMrkdwn.new
|
8
|
+
Redcarpet::Markdown.new(renderer, strikethrough: true, underline: true, fenced_code_blocks: true).render(markdown)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# Methods where the first argument is the text content
|
13
|
+
[
|
14
|
+
# block-level calls
|
15
|
+
:block_html,
|
16
|
+
|
17
|
+
:autolink,
|
18
|
+
:raw_html,
|
19
|
+
|
20
|
+
:table, :table_row, :table_cell,
|
21
|
+
|
22
|
+
:superscript, :highlight,
|
23
|
+
|
24
|
+
# footnotes
|
25
|
+
:footnotes, :footnote_def, :footnote_ref,
|
26
|
+
|
27
|
+
:hrule,
|
28
|
+
|
29
|
+
# low level rendering
|
30
|
+
:entity, :normal_text,
|
31
|
+
|
32
|
+
:doc_header, :doc_footer,
|
33
|
+
].each do |method|
|
34
|
+
define_method method do |*args|
|
35
|
+
args.first
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Encode Slack restricted characters
|
40
|
+
def preprocess(content)
|
41
|
+
content.gsub('&', '&').gsub('<', '<').gsub('>', '>')
|
42
|
+
end
|
43
|
+
|
44
|
+
def postprocess(content)
|
45
|
+
content.rstrip
|
46
|
+
end
|
47
|
+
|
48
|
+
# ~~strikethrough~~
|
49
|
+
def strikethrough(content)
|
50
|
+
"~#{content}~"
|
51
|
+
end
|
52
|
+
|
53
|
+
# _italic_
|
54
|
+
def underline(content)
|
55
|
+
"_#{content}_"
|
56
|
+
end
|
57
|
+
|
58
|
+
# *italic*
|
59
|
+
def emphasis(content)
|
60
|
+
"_#{content}_"
|
61
|
+
end
|
62
|
+
|
63
|
+
# **bold**
|
64
|
+
def double_emphasis(content)
|
65
|
+
"*#{content}*"
|
66
|
+
end
|
67
|
+
|
68
|
+
# ***bold and italic***
|
69
|
+
def triple_emphasis(content)
|
70
|
+
"*_#{content}_*"
|
71
|
+
end
|
72
|
+
|
73
|
+
# ``` code block ```
|
74
|
+
def block_code(content, _language)
|
75
|
+
"```\n#{content}```\n\n"
|
76
|
+
end
|
77
|
+
|
78
|
+
# > quote
|
79
|
+
def block_quote(content)
|
80
|
+
"> #{content}"
|
81
|
+
end
|
82
|
+
|
83
|
+
# `code`
|
84
|
+
def codespan(content)
|
85
|
+
"`#{content}`"
|
86
|
+
end
|
87
|
+
|
88
|
+
# links
|
89
|
+
def link(link, _title, content)
|
90
|
+
"<#{link}|#{content}>"
|
91
|
+
end
|
92
|
+
|
93
|
+
# list. Called when all list items have been consumed
|
94
|
+
def list(entries, style)
|
95
|
+
entries = format_list(entries, style)
|
96
|
+
remember_last_list_entries(entries)
|
97
|
+
entries
|
98
|
+
end
|
99
|
+
|
100
|
+
# list item
|
101
|
+
def list_item(entry, _style)
|
102
|
+
if @last_entries && entry.end_with?(@last_entries)
|
103
|
+
entry = indent_list_items(entry)
|
104
|
+
@last_entries = nil
|
105
|
+
end
|
106
|
+
entry
|
107
|
+
end
|
108
|
+
|
109
|
+
# 
|
110
|
+
def image(link, _title, _content)
|
111
|
+
link
|
112
|
+
end
|
113
|
+
|
114
|
+
def paragraph(text)
|
115
|
+
pre_spacing = @last_entries ? "\n" : nil
|
116
|
+
clear_last_list_entries
|
117
|
+
"#{pre_spacing}#{text}\n\n"
|
118
|
+
end
|
119
|
+
|
120
|
+
# # Header
|
121
|
+
def header(text, _header_level)
|
122
|
+
"*#{text}*\n"
|
123
|
+
end
|
124
|
+
|
125
|
+
def linebreak()
|
126
|
+
"\n"
|
127
|
+
end
|
128
|
+
|
129
|
+
private
|
130
|
+
|
131
|
+
def format_list(entries, style)
|
132
|
+
case style
|
133
|
+
when :ordered
|
134
|
+
number_list(entries)
|
135
|
+
when :unordered
|
136
|
+
add_dashes(entries)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def add_dashes(entries)
|
141
|
+
entries.gsub(/^(\S+.*)$/, '- \1')
|
142
|
+
end
|
143
|
+
|
144
|
+
def number_list(entries)
|
145
|
+
count = 0
|
146
|
+
entries.gsub(/^(\S+.*)$/) do
|
147
|
+
match = Regexp.last_match
|
148
|
+
count += 1
|
149
|
+
"#{count}. #{match[0]}"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def remember_last_list_entries(entries)
|
154
|
+
@last_entries = entries
|
155
|
+
end
|
156
|
+
|
157
|
+
def clear_last_list_entries
|
158
|
+
@last_entries = nil
|
159
|
+
end
|
160
|
+
|
161
|
+
def nest_list_entries(entries)
|
162
|
+
entries.gsub(/^(.+)$/, ' \1')
|
163
|
+
end
|
164
|
+
|
165
|
+
def indent_list_items(entry)
|
166
|
+
entry.gsub(@last_entries, nest_list_entries(@last_entries))
|
167
|
+
end
|
168
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slack_mrkdwn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Cousineau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-08-
|
11
|
+
date: 2019-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: redcarpet
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.5.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.5.1
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,7 +85,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
71
85
|
requirements:
|
72
86
|
- - ">="
|
73
87
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
88
|
+
version: 1.9.2
|
75
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
90
|
requirements:
|
77
91
|
- - ">="
|