slacken 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/examples/out.txt +4 -4
- data/examples/source.html +3 -3
- data/lib/slacken/filters/elim_blanks.rb +1 -1
- data/lib/slacken/rendering.rb +37 -5
- data/lib/slacken/version.rb +1 -1
- data/spec/slacken_spec.rb +4 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2833570db817e35c80edc5c2ec84657903c82a64
|
4
|
+
data.tar.gz: 3aa4ed03460af012db8137f15bc321df3426e1da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52f1fc76598107f24e40e19aa76efe0fc8caa71ab87b552d6a70db3acbfc275fbd5b056d0add4fe7cd7f08b73aa31cddfc7f440aeb520272b183d7541314a9f9
|
7
|
+
data.tar.gz: 7d4884483a55ea08247ce1f586dfd0699ef10179c89f71aeba6e7ac1005f98944a0d6d87da9aaae31d6418a2cd7e55a3dd0ab415ac26470ca6af9dfbfddb3930
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@ Official description of Slack message formatting is [here](https://api.slack.com
|
|
7
7
|
|
8
8
|
## Examples
|
9
9
|
|
10
|
-
|
10
|
+
The following code translates [a html source](https://github.com/increments/slacken/blob/master/examples/source.html) to [a markup text](https://github.com/increments/slacken/blob/master/examples/out.txt) for Slack
|
11
11
|
|
12
12
|
```
|
13
13
|
> require 'slacken'
|
@@ -15,7 +15,7 @@ Sample input source and output texts are in `examples/`.
|
|
15
15
|
# *Slacken*
|
16
16
|
#
|
17
17
|
# This gem translates a html source into *a markup text for Slack*.
|
18
|
-
# <
|
18
|
+
# <https://teams.qiita.com|Qiita:Team> uses this gem to decorate notification messages to Slack :trollface:.
|
19
19
|
#
|
20
20
|
# *Examples*
|
21
21
|
#
|
@@ -32,7 +32,7 @@ Sample input source and output texts are in `examples/`.
|
|
32
32
|
# *Citation*
|
33
33
|
#
|
34
34
|
# > Qiita is a technical information sharing site for programmers.
|
35
|
-
# >
|
35
|
+
# > Kobito is an application for technical information recording.
|
36
36
|
#
|
37
37
|
# *Source Code*
|
38
38
|
#
|
@@ -43,12 +43,12 @@ Sample input source and output texts are in `examples/`.
|
|
43
43
|
# end
|
44
44
|
# ```
|
45
45
|
#
|
46
|
+
# -----------
|
47
|
+
#
|
46
48
|
# *Image*
|
47
49
|
#
|
48
50
|
# This is a Qiita logo.
|
49
51
|
#
|
50
|
-
# -----------
|
51
|
-
#
|
52
52
|
# <http://cdn.qiita.com/assets/siteid-reverse-1949e989f9d8b2f6fad65a57292b2b01.png|Qiita logo>
|
53
53
|
```
|
54
54
|
|
data/examples/out.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
*Slacken*
|
2
2
|
|
3
3
|
This gem translates a html source into *a markup text for Slack*.
|
4
|
-
<
|
4
|
+
<https://teams.qiita.com|Qiita:Team> uses this gem to decorate notification messages to Slack :trollface:.
|
5
5
|
|
6
6
|
*Examples*
|
7
7
|
|
@@ -18,7 +18,7 @@ This gem translates a html source into *a markup text for Slack*.
|
|
18
18
|
*Citation*
|
19
19
|
|
20
20
|
> Qiita is a technical information sharing site for programmers.
|
21
|
-
>
|
21
|
+
> Kobito is an application for technical information recording.
|
22
22
|
|
23
23
|
*Source Code*
|
24
24
|
|
@@ -29,10 +29,10 @@ This gem translates a html source into *a markup text for Slack*.
|
|
29
29
|
end
|
30
30
|
```
|
31
31
|
|
32
|
+
-----------
|
33
|
+
|
32
34
|
*Image*
|
33
35
|
|
34
36
|
This is a Qiita logo.
|
35
37
|
|
36
|
-
-----------
|
37
|
-
|
38
38
|
<http://cdn.qiita.com/assets/siteid-reverse-1949e989f9d8b2f6fad65a57292b2b01.png|Qiita logo>
|
data/examples/source.html
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
<h1>Slacken</h1>
|
3
3
|
|
4
4
|
<p>This gem translates a html source into <strong>a markup text for Slack</strong>.<br>
|
5
|
-
<a href="
|
5
|
+
<a href="https://teams.qiita.com">Qiita:Team</a> uses this gem to decorate notification messages to Slack <img class="emoji" title=":trollface:" alt=":trollface:" src="https://cdn.qiita.com/emoji/trollface.png" height="20" width="20" align="absmiddle">.</p>
|
6
6
|
|
7
7
|
<h2>Examples</h2>
|
8
8
|
|
@@ -46,10 +46,10 @@ Kobito is an application for technical information recording.</p>
|
|
46
46
|
<span class="k">end</span>
|
47
47
|
</pre></div></div>
|
48
48
|
|
49
|
+
<hr>
|
50
|
+
|
49
51
|
<h3>Image</h3>
|
50
52
|
|
51
53
|
<p>This is a Qiita logo.</p>
|
52
54
|
|
53
|
-
<hr>
|
54
|
-
|
55
55
|
<p><img src="http://cdn.qiita.com/assets/siteid-reverse-1949e989f9d8b2f6fad65a57292b2b01.png" alt="Qiita logo"></p>
|
@@ -32,7 +32,7 @@ module Slacken::Filters
|
|
32
32
|
false
|
33
33
|
when :text, :emoji
|
34
34
|
content = component.attrs[:content]
|
35
|
-
content.nil? || !content.match(/\A\
|
35
|
+
content.nil? || !content.match(/\A\n*\Z/).nil?
|
36
36
|
else
|
37
37
|
component.children.empty? || component.children.all?(&method(:blank?))
|
38
38
|
end
|
data/lib/slacken/rendering.rb
CHANGED
@@ -1,10 +1,23 @@
|
|
1
1
|
module Slacken
|
2
|
+
# Internal: Contain classes calculating proper spacing to serialize RenderElement.
|
3
|
+
#
|
4
|
+
# TODO: The class and module names are vague.
|
5
|
+
# Give better names to these class and module.
|
2
6
|
module Rendering
|
3
7
|
def self.decorate(str)
|
4
8
|
DecorationWrapper.new(str)
|
5
9
|
end
|
6
10
|
|
7
|
-
#
|
11
|
+
# These StringWrapper and DecorationWrapper is to calculate spacing of
|
12
|
+
# each RenderElement's string representation.
|
13
|
+
#
|
14
|
+
# Most formatting expression in Slack messages should have distances from neighbor strings.
|
15
|
+
# For example, Slack does not make the following text `*should-be-bold*` bold.
|
16
|
+
#
|
17
|
+
# previous-string-*should-be-bold*-next-string
|
18
|
+
#
|
19
|
+
|
20
|
+
# Internal: A string which may adjoin previous and next strings.
|
8
21
|
class StringWrapper
|
9
22
|
def self.wrap(str)
|
10
23
|
str.kind_of?(StringWrapper) ? str : new(str)
|
@@ -18,18 +31,18 @@ module Slacken
|
|
18
31
|
@str.to_s
|
19
32
|
end
|
20
33
|
|
21
|
-
#
|
34
|
+
# Internal: Append another string to self.
|
22
35
|
def append(other)
|
23
36
|
other.concat_head(self)
|
24
37
|
end
|
25
38
|
|
26
|
-
#
|
39
|
+
# Internal: prepend another string to self.
|
27
40
|
def concat_head(other)
|
28
41
|
StringWrapper.new(other.to_s + to_s)
|
29
42
|
end
|
30
43
|
end
|
31
44
|
|
32
|
-
#
|
45
|
+
# Internal: A string which should put distances from previous and next strings.
|
33
46
|
class DecorationWrapper < StringWrapper
|
34
47
|
|
35
48
|
# Public: Append another string to self.
|
@@ -59,7 +72,25 @@ module Slacken
|
|
59
72
|
end
|
60
73
|
end
|
61
74
|
|
62
|
-
#
|
75
|
+
# These classes represents gruop of strings and they concat their strings with
|
76
|
+
# their own separator.
|
77
|
+
# They also works with StringWrapper and DecorationWrapper to avoid
|
78
|
+
# bad or unnecessary spacing.
|
79
|
+
#
|
80
|
+
# For example, Slack does not make the following text `* should-be-bold *` bold
|
81
|
+
# because there are spaces after the first asterisk and before the last asterisk.
|
82
|
+
#
|
83
|
+
# * should-be-bold *
|
84
|
+
#
|
85
|
+
# Besides, for such the formatting expressions, it is unnecessary to put space on
|
86
|
+
# the beginning of each new line. Unnecessary spacing does not look good.
|
87
|
+
#
|
88
|
+
# This is the first line.
|
89
|
+
# *This* is the second line.
|
90
|
+
# This is the third line.
|
91
|
+
#
|
92
|
+
|
93
|
+
# Internal: an intermediate object to stringfy RenderElements.
|
63
94
|
class RenderingGroup
|
64
95
|
attr_reader :children
|
65
96
|
def initialize(children)
|
@@ -70,6 +101,7 @@ module Slacken
|
|
70
101
|
fail NotImplementedError
|
71
102
|
end
|
72
103
|
|
104
|
+
# Internal: Return Array of Strings, where there are separators between each string.
|
73
105
|
def to_a
|
74
106
|
extracted_children = children.map { |c| c.respond_to?(:to_a) ? c.to_a : c }
|
75
107
|
extracted_children.zip(Array.new(children.length, separator)).flatten[0..-2]
|
data/lib/slacken/version.rb
CHANGED
data/spec/slacken_spec.rb
CHANGED
@@ -319,11 +319,11 @@ describe Slacken do
|
|
319
319
|
end
|
320
320
|
end
|
321
321
|
|
322
|
-
context 'when
|
323
|
-
let(:source) { '<p><a href="
|
322
|
+
context 'when space-separated links are given' do
|
323
|
+
let(:source) { '<p><a href="/alice">@alice</a> <a href="/bob">@bob</a></p>' }
|
324
324
|
|
325
|
-
it '
|
326
|
-
should eq "
|
325
|
+
it 'preserves the space' do
|
326
|
+
should eq "@alice @bob"
|
327
327
|
end
|
328
328
|
end
|
329
329
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slacken
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomoya Chiba
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-09-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -200,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
200
200
|
version: '0'
|
201
201
|
requirements: []
|
202
202
|
rubyforge_project:
|
203
|
-
rubygems_version: 2.
|
203
|
+
rubygems_version: 2.4.5.1
|
204
204
|
signing_key:
|
205
205
|
specification_version: 4
|
206
206
|
summary: Translate HTML sources to markup texts for slack
|