middleman-gemoji 0.0.8 → 0.1.0
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/CHANGELOG.md +5 -0
- data/features/emoji_build.feature +5 -1
- data/features/emoji_server.feature +9 -1
- data/features/haml.feature +9 -0
- data/features/markdown.feature +12 -2
- data/features/slim.feature +12 -2
- data/fixtures/gemoji-app/source/layouts/layout.erb +20 -0
- data/fixtures/gemoji-app/source/no-emoji.html.erb +1 -1
- data/fixtures/haml-app/source/layouts/layout.erb +20 -0
- data/fixtures/markdown-app/source/index.html.md +0 -1
- data/fixtures/markdown-app/source/layouts/layout.erb +20 -0
- data/fixtures/slim-app/source/layouts/layout.erb +20 -0
- data/lib/middleman-gemoji/converter.rb +20 -0
- data/lib/middleman-gemoji/extension.rb +1 -1
- data/lib/middleman-gemoji/version.rb +1 -1
- data/test/test_converter.rb +59 -10
- data/test/test_helper.rb +1 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 182decec0a717e2365be5ef8b312b7cc09a104b7
|
4
|
+
data.tar.gz: 90a52cfb6fc2c390f1a4a33024d5fbc411e7dd8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c12e825805d09bd3472ce76c306a4b1038c50afd1ded7ce65f8f6c32cfc8e9279d9efcad80d8b64b34bbfae8f87fc0d08b1e5f06f4c1276a0d79cdc8d5f8b14e
|
7
|
+
data.tar.gz: d0d50b426b9e6fb4eaf3095c94ab155f818e1fadb017053791613ac8ac8bc4c519b835a0a193eda8701633c8470c22ce64130dea0369b166d1b631e88bf2d6ec
|
data/CHANGELOG.md
ADDED
@@ -12,6 +12,10 @@ Feature: Emoji convert when build
|
|
12
12
|
When I run `middleman build`
|
13
13
|
Then the exit status should be 0
|
14
14
|
And the file "build/index.html" should not contain "<p>:+1:</p>"
|
15
|
+
And the file "build/index.html" should contain:
|
16
|
+
"""
|
17
|
+
<title>something title :+1:</title>
|
18
|
+
"""
|
15
19
|
And the file "build/index.html" should contain:
|
16
20
|
"""
|
17
21
|
<p><img class="gemoji" alt="+1" src="/images/emoji/unicode/1f44d.png" /></p>
|
@@ -21,7 +25,7 @@ Feature: Emoji convert when build
|
|
21
25
|
Given a fixture app "gemoji-app"
|
22
26
|
When I run `middleman build`
|
23
27
|
Then the exit status should be 0
|
24
|
-
And the file "build/no-emoji.html" should contain "hoge"
|
28
|
+
And the file "build/no-emoji.html" should contain "<p>hoge</p>"
|
25
29
|
|
26
30
|
Scenario: Convert ":+1+" to emoji with :size option
|
27
31
|
Given a fixture app "gemoji-app"
|
@@ -4,6 +4,10 @@ Feature: Emoji convert under `middleman server`
|
|
4
4
|
Given the Server is running at "gemoji-app"
|
5
5
|
When I go to "/index.html"
|
6
6
|
Then I should see:
|
7
|
+
"""
|
8
|
+
<title>something title :+1:</title>
|
9
|
+
"""
|
10
|
+
And I should see:
|
7
11
|
"""
|
8
12
|
<p><img class="gemoji" alt="+1" src="/images/emoji/unicode/1f44d.png" /></p>
|
9
13
|
|
@@ -14,5 +18,9 @@ Feature: Emoji convert under `middleman server`
|
|
14
18
|
When I go to "/no-emoji.html"
|
15
19
|
Then I should see:
|
16
20
|
"""
|
17
|
-
|
21
|
+
<title>something title :+1:</title>
|
22
|
+
"""
|
23
|
+
And I should see:
|
24
|
+
"""
|
25
|
+
<p>hoge</p>
|
18
26
|
"""
|
data/features/haml.feature
CHANGED
@@ -5,15 +5,24 @@ Feature: Emoji convert in Markdown
|
|
5
5
|
When I run `middleman build`
|
6
6
|
Then the exit status should be 0
|
7
7
|
And the file "build/index.html" should not contain "<p>:+1:</p>"
|
8
|
+
And the file "build/index.html" should contain:
|
9
|
+
"""
|
10
|
+
<title>something title :+1:</title>
|
11
|
+
"""
|
8
12
|
And the file "build/index.html" should contain:
|
9
13
|
"""
|
10
14
|
<p><img class="gemoji" alt="+1" src="/images/emoji/unicode/1f44d.png" /></p>
|
15
|
+
|
11
16
|
"""
|
12
17
|
|
13
18
|
Scenario: Convert content that doesn't have :emoji:
|
14
19
|
Given a fixture app "haml-app"
|
15
20
|
When I run `middleman build`
|
16
21
|
Then the exit status should be 0
|
22
|
+
And the file "build/index.html" should contain:
|
23
|
+
"""
|
24
|
+
<title>something title :+1:</title>
|
25
|
+
"""
|
17
26
|
And the file "build/no-emoji.html" should contain:
|
18
27
|
"""
|
19
28
|
<p>hoge</p>
|
data/features/markdown.feature
CHANGED
@@ -5,6 +5,10 @@ Feature: Emoji convert in Markdown
|
|
5
5
|
When I run `middleman build`
|
6
6
|
Then the exit status should be 0
|
7
7
|
And the file "build/index.html" should not contain "<p>:+1:</p>"
|
8
|
+
And the file "build/index.html" should contain:
|
9
|
+
"""
|
10
|
+
<title>something title :+1:</title>
|
11
|
+
"""
|
8
12
|
And the file "build/index.html" should contain:
|
9
13
|
"""
|
10
14
|
<p><img class="gemoji" alt="+1" src="/images/emoji/unicode/1f44d.png" /></p>
|
@@ -15,6 +19,10 @@ Feature: Emoji convert in Markdown
|
|
15
19
|
Given a fixture app "markdown-app"
|
16
20
|
When I run `middleman build`
|
17
21
|
Then the exit status should be 0
|
22
|
+
And the file "build/index.html" should contain:
|
23
|
+
"""
|
24
|
+
<title>something title :+1:</title>
|
25
|
+
"""
|
18
26
|
And the file "build/no-emoji.html" should contain:
|
19
27
|
"""
|
20
28
|
<p>hoge</p>
|
@@ -23,9 +31,11 @@ Feature: Emoji convert in Markdown
|
|
23
31
|
Scenario: Convert ":+1+" to emoji under `middleman server`
|
24
32
|
Given the Server is running at "markdown-app"
|
25
33
|
When I go to "/index.html"
|
26
|
-
Then I should see '<
|
34
|
+
Then I should see '<title>something title :+1:</title>'
|
35
|
+
And I should see '<p><img class="gemoji" alt="+1" src="/images/emoji/unicode/1f44d.png" /></p>'
|
27
36
|
|
28
37
|
Scenario: Convert content that doesn't have :emoji: under `middleman server`
|
29
38
|
Given the Server is running at "markdown-app"
|
30
39
|
When I go to "/no-emoji.html"
|
31
|
-
Then I should see '<
|
40
|
+
Then I should see '<title>something title :+1:</title>'
|
41
|
+
And I should see '<p>hoge</p>'
|
data/features/slim.feature
CHANGED
@@ -5,20 +5,30 @@ Feature: Emoji convert in Markdown
|
|
5
5
|
When I run `middleman build`
|
6
6
|
Then the exit status should be 0
|
7
7
|
And the file "build/index.html" should not contain "<p>:+1:</p>"
|
8
|
+
And the file "build/index.html" should contain:
|
9
|
+
"""
|
10
|
+
<title>something title :+1:</title>
|
11
|
+
"""
|
8
12
|
And the file "build/index.html" should contain '<p><img class="gemoji" alt="+1" src="/images/emoji/unicode/1f44d.png" /></p>'
|
9
13
|
|
10
14
|
Scenario: Convert content that doesn't have :emoji:
|
11
15
|
Given a fixture app "slim-app"
|
12
16
|
When I run `middleman build`
|
13
17
|
Then the exit status should be 0
|
18
|
+
And the file "build/index.html" should contain:
|
19
|
+
"""
|
20
|
+
<title>something title :+1:</title>
|
21
|
+
"""
|
14
22
|
And the file "build/no-emoji.html" should contain '<p>hoge</p>'
|
15
23
|
|
16
24
|
Scenario: Convert ":+1+" to emoji under `middleman server`
|
17
25
|
Given the Server is running at "slim-app"
|
18
26
|
When I go to "/index.html"
|
19
|
-
Then I should see '<
|
27
|
+
Then I should see '<title>something title :+1:</title>'
|
28
|
+
And I should see '<p><img class="gemoji" alt="+1" src="/images/emoji/unicode/1f44d.png" /></p>'
|
20
29
|
|
21
30
|
Scenario: Convert content that doesn't have :emoji: under `middleman server`
|
22
31
|
Given the Server is running at "slim-app"
|
23
32
|
When I go to "/no-emoji.html"
|
24
|
-
Then I should see '<
|
33
|
+
Then I should see '<title>something title :+1:</title>'
|
34
|
+
And I should see '<p>hoge</p>'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta content="IE=edge" http-equiv="X-UA-Compatible">
|
5
|
+
<meta charset="utf-8">
|
6
|
+
<meta content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
|
7
|
+
|
8
|
+
<!-- Use title if it's in the page YAML frontmatter -->
|
9
|
+
<title>something title :+1:</title>
|
10
|
+
|
11
|
+
<link href='//fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'>
|
12
|
+
|
13
|
+
<%= stylesheet_link_tag :site %>
|
14
|
+
<%= javascript_include_tag :all %>
|
15
|
+
</head>
|
16
|
+
|
17
|
+
<body class="<%= page_classes %>">
|
18
|
+
<%= yield %>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -1 +1 @@
|
|
1
|
-
hoge
|
1
|
+
<p>hoge</p>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta content="IE=edge" http-equiv="X-UA-Compatible">
|
5
|
+
<meta charset="utf-8">
|
6
|
+
<meta content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
|
7
|
+
|
8
|
+
<!-- Use title if it's in the page YAML frontmatter -->
|
9
|
+
<title>something title :+1:</title>
|
10
|
+
|
11
|
+
<link href='//fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'>
|
12
|
+
|
13
|
+
<%= stylesheet_link_tag :site %>
|
14
|
+
<%= javascript_include_tag :all %>
|
15
|
+
</head>
|
16
|
+
|
17
|
+
<body class="<%= page_classes %>">
|
18
|
+
<%= yield %>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta content="IE=edge" http-equiv="X-UA-Compatible">
|
5
|
+
<meta charset="utf-8">
|
6
|
+
<meta content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
|
7
|
+
|
8
|
+
<!-- Use title if it's in the page YAML frontmatter -->
|
9
|
+
<title>something title :+1:</title>
|
10
|
+
|
11
|
+
<link href='//fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'>
|
12
|
+
|
13
|
+
<%= stylesheet_link_tag :site %>
|
14
|
+
<%= javascript_include_tag :all %>
|
15
|
+
</head>
|
16
|
+
|
17
|
+
<body class="<%= page_classes %>">
|
18
|
+
<%= yield %>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta content="IE=edge" http-equiv="X-UA-Compatible">
|
5
|
+
<meta charset="utf-8">
|
6
|
+
<meta content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
|
7
|
+
|
8
|
+
<!-- Use title if it's in the page YAML frontmatter -->
|
9
|
+
<title>something title :+1:</title>
|
10
|
+
|
11
|
+
<link href='//fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'>
|
12
|
+
|
13
|
+
<%= stylesheet_link_tag :site %>
|
14
|
+
<%= javascript_include_tag :all %>
|
15
|
+
</head>
|
16
|
+
|
17
|
+
<body class="<%= page_classes %>">
|
18
|
+
<%= yield %>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -18,6 +18,14 @@ module Middleman
|
|
18
18
|
def convert(content)
|
19
19
|
return content if content.blank?
|
20
20
|
|
21
|
+
if has_body?(content)
|
22
|
+
emojify_inner_body(content)
|
23
|
+
else
|
24
|
+
emojify(content)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def emojify(content)
|
21
29
|
content.to_str.gsub(/:([\w+-]+):/) do |match|
|
22
30
|
emoji = Emoji.find_by_alias($1)
|
23
31
|
if emoji
|
@@ -34,6 +42,18 @@ module Middleman
|
|
34
42
|
end
|
35
43
|
end
|
36
44
|
|
45
|
+
# emojify only in the body tag
|
46
|
+
def emojify_inner_body(content)
|
47
|
+
pattern = /<body.+?>(.+?)<\/body>/m
|
48
|
+
content.to_str.gsub(pattern) do |html|
|
49
|
+
emojify(html).gsub(pattern, '\1')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def has_body?(content)
|
54
|
+
!(/<body.+?>.+?<\/body>/m =~ content.to_str).nil?
|
55
|
+
end
|
56
|
+
|
37
57
|
def src(path)
|
38
58
|
%(src="#{File.join(@base_path, path)}")
|
39
59
|
end
|
data/test/test_converter.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require './test/test_helper'
|
2
|
-
require 'middleman'
|
3
2
|
require './lib/middleman-gemoji/converter'
|
4
3
|
|
5
4
|
class TestConverter < Minitest::Test
|
@@ -27,20 +26,70 @@ class TestConverter < Minitest::Test
|
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
30
|
-
def test_convert
|
31
|
-
assert_equal(
|
32
|
-
'<img class="gemoji" alt="+1" src="/images/emoji/unicode/1f44d.png" />',
|
33
|
-
@converter.convert(':+1:')
|
34
|
-
);
|
35
|
-
end
|
36
|
-
|
37
29
|
def test_convert_received_blank
|
38
30
|
assert_equal('', @converter.convert(''))
|
39
31
|
assert_equal(nil, @converter.convert(nil))
|
40
32
|
end
|
41
33
|
|
42
|
-
def
|
43
|
-
assert_equal(
|
34
|
+
def test_emojify
|
35
|
+
assert_equal(
|
36
|
+
'<img class="gemoji" alt="+1" src="/images/emoji/unicode/1f44d.png" />',
|
37
|
+
@converter.emojify(':+1:')
|
38
|
+
);
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_emojify_received_normal_string
|
42
|
+
html = '<p>hoge</p>'
|
43
|
+
assert_equal(html, @converter.emojify(html));
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_emojify_inner_body
|
47
|
+
html = "<html><head><title>something title :+1:</title></head><body>\n<p>somethig emoji :+1:</p>\n</body></html>"
|
48
|
+
result = @converter.emojify_inner_body(html)
|
49
|
+
assert_match(/1f44d.png/, result)
|
50
|
+
assert_match(/something title :\+1:/, result)
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_emojify_inner_body_received_normal_string
|
54
|
+
html = '<p>hoge</p>'
|
55
|
+
assert_equal(html, @converter.emojify_inner_body(html))
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_has_body_return_true
|
59
|
+
html = <<-'HTML'
|
60
|
+
<!doctype html>
|
61
|
+
<html>
|
62
|
+
<head>
|
63
|
+
<meta charset="utf-8">
|
64
|
+
<title>something title :+1:</title>
|
65
|
+
</head>
|
66
|
+
<body>
|
67
|
+
<p>:+1:</p>
|
68
|
+
</body>
|
69
|
+
</html>
|
70
|
+
HTML
|
71
|
+
assert_equal(true, @converter.has_body?(html))
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_has_body_return_true__body_has_class
|
75
|
+
html = <<-'HTML'
|
76
|
+
<!doctype html>
|
77
|
+
<html>
|
78
|
+
<head>
|
79
|
+
<meta charset="utf-8">
|
80
|
+
<title>something title :+1:</title>
|
81
|
+
</head>
|
82
|
+
<body class="index">
|
83
|
+
<p>:+1:</p>
|
84
|
+
</body>
|
85
|
+
</html>
|
86
|
+
HTML
|
87
|
+
assert_equal(true, @converter.has_body?(html))
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_has_body_return_false
|
91
|
+
html = '<p>somethig emoji :+1:</p>'
|
92
|
+
assert_equal(false, @converter.has_body?(html))
|
44
93
|
end
|
45
94
|
|
46
95
|
def test_src
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-gemoji
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuya Terajima
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: middleman
|
@@ -159,6 +159,7 @@ extra_rdoc_files: []
|
|
159
159
|
files:
|
160
160
|
- .gitignore
|
161
161
|
- .travis.yml
|
162
|
+
- CHANGELOG.md
|
162
163
|
- Gemfile
|
163
164
|
- LICENSE.txt
|
164
165
|
- README.md
|
@@ -177,6 +178,7 @@ files:
|
|
177
178
|
- fixtures/gemoji-app/source/images/emoji/unicode/.gitkeep
|
178
179
|
- fixtures/gemoji-app/source/img/emoji/unicode/.gitkeep
|
179
180
|
- fixtures/gemoji-app/source/index.html.erb
|
181
|
+
- fixtures/gemoji-app/source/layouts/layout.erb
|
180
182
|
- fixtures/gemoji-app/source/no-emoji.html.erb
|
181
183
|
- fixtures/gemoji-empty-app/config.rb
|
182
184
|
- fixtures/gemoji-empty-app/source/images/.gitkeep
|
@@ -186,14 +188,17 @@ files:
|
|
186
188
|
- fixtures/haml-app/config.rb
|
187
189
|
- fixtures/haml-app/source/images/emoji/unicode/.gitkeep
|
188
190
|
- fixtures/haml-app/source/index.html.haml
|
191
|
+
- fixtures/haml-app/source/layouts/layout.erb
|
189
192
|
- fixtures/haml-app/source/no-emoji.html.haml
|
190
193
|
- fixtures/markdown-app/config.rb
|
191
194
|
- fixtures/markdown-app/source/images/emoji/unicode/.gitkeep
|
192
195
|
- fixtures/markdown-app/source/index.html.md
|
196
|
+
- fixtures/markdown-app/source/layouts/layout.erb
|
193
197
|
- fixtures/markdown-app/source/no-emoji.html.md
|
194
198
|
- fixtures/slim-app/config.rb
|
195
199
|
- fixtures/slim-app/source/images/emoji/unicode/.gitkeep
|
196
200
|
- fixtures/slim-app/source/index.html.slim
|
201
|
+
- fixtures/slim-app/source/layouts/layout.erb
|
197
202
|
- fixtures/slim-app/source/no-emoji.html.slim
|
198
203
|
- lib/middleman-gemoji.rb
|
199
204
|
- lib/middleman-gemoji/command.rb
|