middleman-gemoji 0.0.8 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|