middleman-gemoji 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 06f50f6f055ce328d71bf7eab706157e5f9efbc6
4
- data.tar.gz: f5132e6faf7da809f7abca27cd731e51123bdd32
3
+ metadata.gz: f1e4c131cc9751f78169b7f188d43aed54a88e57
4
+ data.tar.gz: e36f0ffdd9878424bfbb44504c4387015fa1fa3b
5
5
  SHA512:
6
- metadata.gz: 6f24c540b99bfa279fdbd0d5c0e7fa720b2769b5511a548aafcf2d262436a0fd789bb44012dd588a5158328565ea4f10fee205e5bb5e63419650c298733dfd17
7
- data.tar.gz: 633244ec0e09f0ae3de98fa67a2517e465215c19566699b2f30e5fa60b8d850911438693f070f288c0301cd1d900ac186d8cec5670d41a32f8b3f4a18fe1848d
6
+ metadata.gz: 05bdcddd6c01bb1fa99b1f86f822975a4f8b85dfab110a9989b7fcaf2e5d5f8dd231926bc0f4d479991694665afa8cf34178b47db4aee248f52bf54a31e9a7e6
7
+ data.tar.gz: b960acfbfac95f60a9c4255bc0ee77768d9c51d88bef0363fcbba50cceed5b51a9009b143754e1832ba8531a441b8813c2bf918db9b624724859f08669133b7c
data/Rakefile CHANGED
@@ -1,2 +1,14 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
2
3
 
4
+ task default: [:test, :cucumber]
5
+
6
+ Rake::TestTask.new do |test|
7
+ test.test_files = Dir['test/**/test_*.rb']
8
+ test.verbose = true
9
+ end
10
+
11
+ desc 'cucumber test'
12
+ task :cucumber do
13
+ sh 'cucumber --backtrace features/'
14
+ end
@@ -0,0 +1,68 @@
1
+ require 'gemoji'
2
+
3
+ module Middleman
4
+ module Gemoji
5
+ class Converter
6
+ attr_reader :app, :options, :base_path
7
+
8
+ def initialize(app, options)
9
+ if !app.is_a?(Middleman::Application)
10
+ raise "app is not Middleman::Application"
11
+ end
12
+
13
+ @app = app
14
+ @options = options
15
+ set_base_path
16
+ end
17
+
18
+ def convert(content)
19
+ return content if content.blank?
20
+
21
+ content.to_str.gsub(/:([\w+-]+):/) do |match|
22
+ emoji = Emoji.find_by_alias($1)
23
+ if emoji
24
+ image = []
25
+ image << %(alt="#{$1}")
26
+ image << src(emoji.image_filename)
27
+ image << size if size
28
+ image << style if style
29
+
30
+ %(<img class="gemoji" #{image.join(' ').strip} />)
31
+ else
32
+ match
33
+ end
34
+ end
35
+ end
36
+
37
+ def src(path)
38
+ %(src="#{File.join(@base_path, path)}")
39
+ end
40
+
41
+ def size
42
+ %(width="#{@options[:size]}" height="#{@options[:size]}") if @options[:size]
43
+ end
44
+
45
+ def style
46
+ %(style="#{@options[:style]}") if @options[:style]
47
+ end
48
+
49
+ def emoji_file_exist?
50
+ Dir.exist?(
51
+ File.join(@app.root, @app.config.source, @options[:emoji_dir], 'unicode')
52
+ )
53
+ end
54
+
55
+ def set_base_path
56
+ @base_path = 'https://assets-cdn.github.com/images/icons/emoji/'
57
+ if emoji_file_exist?
58
+ if /^http/ =~ @app.config[:http_prefix]
59
+ @base_path = File.join(app.config[:http_prefix], options[:emoji_dir])
60
+ else
61
+ @base_path = File.join('/', app.config[:http_prefix], options[:emoji_dir])
62
+ end
63
+ end
64
+ end
65
+
66
+ end
67
+ end
68
+ end
@@ -1,4 +1,4 @@
1
- require 'gemoji'
1
+ require_relative './converter'
2
2
 
3
3
  module Middleman
4
4
  module Gemoji
@@ -10,56 +10,9 @@ module Middleman
10
10
 
11
11
  def initialize(app, options_hash = {}, &block)
12
12
  super
13
- @emoji_exist = Dir.exist?(
14
- File.join(app.root, app.config.source, options[:emoji_dir], 'unicode')
15
- )
16
- extension = self
17
-
13
+ converter = Middleman::Gemoji::Converter.new(app, options)
18
14
  app.before_render do |content|
19
- extension.emojify(content)
20
- end
21
- end
22
-
23
- def emojify(content)
24
- @base_path = base_path
25
- content.to_str.gsub(/:([\w+-]+):/) do |match|
26
- emoji = Emoji.find_by_alias($1)
27
- if emoji
28
- image = []
29
- image << %(alt="#{$1}")
30
- image << src(emoji.image_filename)
31
- image << size(options[:size]) if options[:size]
32
- image << style(options[:style]) if options[:style]
33
-
34
- %(<img class="gemoji" #{image.join(' ')} />)
35
- else
36
- match
37
- end if content.present?
38
- end
39
- end
40
-
41
- def src(path)
42
- %(src="#{File.join(@base_path, path)}")
43
- end
44
-
45
- def size(size)
46
- %(width="#{size}" height="#{size}")
47
- end
48
-
49
- def style(style)
50
- %(style="#{style}")
51
- end
52
-
53
- def base_path
54
- if @emoji_exist
55
- prefix = app.config[:http_prefix]
56
- if prefix && (/^http/ =~ prefix)
57
- File.join(app.config[:http_prefix], options[:emoji_dir])
58
- else
59
- File.join('/', app.config[:http_prefix], options[:emoji_dir])
60
- end
61
- else
62
- 'https://assets-cdn.github.com/images/icons/emoji/'
15
+ converter.convert(content)
63
16
  end
64
17
  end
65
18
  end
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module Gemoji
3
- VERSION = '0.0.7'
3
+ VERSION = '0.0.8'
4
4
  end
5
5
  end
@@ -28,4 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency "bundler", ">= 1.5"
29
29
  spec.add_development_dependency "rake", ">= 10"
30
30
  spec.add_development_dependency "slim", ">= 3.0"
31
+ spec.add_development_dependency "rb-inotify", "~> 0.9"
32
+ spec.add_development_dependency "minitest"
33
+ spec.add_development_dependency "minitest-reporters"
31
34
  end
@@ -0,0 +1,108 @@
1
+ require './test/test_helper'
2
+ require 'middleman'
3
+ require './lib/middleman-gemoji/converter'
4
+
5
+ class TestConverter < Minitest::Test
6
+ def setup
7
+ @root = ENV['MM_ROOT']
8
+ ENV['MM_ROOT'] = File.join(Dir.pwd, 'fixtures', 'gemoji-file-exist')
9
+ @converter = converter
10
+ end
11
+
12
+ def teardown
13
+ ENV['MM_ROOT'] = @root
14
+ end
15
+
16
+ def converter(app: Middleman::Application.new, size: nil, style: nil, emoji_dir: 'images/emoji')
17
+ Middleman::Gemoji::Converter.new(app, {size: size, style: style, emoji_dir: emoji_dir})
18
+ end
19
+
20
+ def test_initialize
21
+ assert_instance_of(Middleman::Application, @converter.app)
22
+ end
23
+
24
+ def test_initialize_raise_runtime_error
25
+ assert_raises RuntimeError do
26
+ converter(app: nil)
27
+ end
28
+ end
29
+
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
+ def test_convert_received_blank
38
+ assert_equal('', @converter.convert(''))
39
+ assert_equal(nil, @converter.convert(nil))
40
+ end
41
+
42
+ def test_convert_received_normal_string
43
+ assert_equal('hoge', @converter.convert('hoge'));
44
+ end
45
+
46
+ def test_src
47
+ path = @converter.src('unicode/1f44d.png')
48
+ assert_equal('src="/images/emoji/unicode/1f44d.png"', path)
49
+ end
50
+
51
+ def test_src_with_cdn
52
+ ENV['MM_ROOT'] = File.join(@converter.app.root, 'fixtures', 'gemoji-file-not-exist')
53
+ @converter.set_base_path
54
+ path = @converter.src('unicode/1f44d.png')
55
+ assert_equal(
56
+ 'src="https://assets-cdn.github.com/images/icons/emoji/unicode/1f44d.png"',
57
+ path
58
+ )
59
+ end
60
+
61
+ def test_size_rerutn_nil
62
+ @converter.options[:size] = nil
63
+ assert_nil(@converter.size)
64
+ end
65
+
66
+ def test_size_return_string
67
+ @converter.options[:size] = 40
68
+ assert_equal('width="40" height="40"', @converter.size)
69
+ end
70
+
71
+ def test_style_return_nil
72
+ @converter.options[:style] = nil
73
+ assert_nil(@converter.style)
74
+ end
75
+
76
+ def test_style_return_string
77
+ @converter.options[:style] = 'padding-right: .2em'
78
+ assert_equal('style="padding-right: .2em"', @converter.style)
79
+ end
80
+
81
+ def test_emoji_file_exist_return_true
82
+ assert_equal(true, @converter.emoji_file_exist?)
83
+ end
84
+
85
+ def test_emoji_file_exist_return_false
86
+ ENV['MM_ROOT'] = File.join(@converter.app.root, 'fixtures', 'gemoji-file-not-exist')
87
+ assert_equal(false, @converter.emoji_file_exist?)
88
+ end
89
+
90
+ def test_set_base_path__cdn
91
+ ENV['MM_ROOT'] = File.join(@converter.app.root, 'fixtures', 'gemoji-file-not-exist')
92
+ @converter.set_base_path
93
+ assert_equal(
94
+ 'https://assets-cdn.github.com/images/icons/emoji/',
95
+ @converter.base_path
96
+ )
97
+ end
98
+
99
+ def test_set_base_path__relative_path
100
+ assert_equal('/images/emoji', @converter.base_path)
101
+ end
102
+
103
+ def test_set_base_path__full_path
104
+ @converter.app.config[:http_prefix] = 'http://example.com/'
105
+ @converter.set_base_path
106
+ assert_equal('http://example.com/images/emoji', @converter.base_path)
107
+ end
108
+ end
@@ -0,0 +1,3 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/reporters'
3
+ Minitest::Reporters.use!
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.7
4
+ version: 0.0.8
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-05 00:00:00.000000000 Z
11
+ date: 2016-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman
@@ -108,6 +108,48 @@ dependencies:
108
108
  - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rb-inotify
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '0.9'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: '0.9'
125
+ - !ruby/object:Gem::Dependency
126
+ name: minitest
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: minitest-reporters
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
111
153
  description: Github-flavored emoji plugin for Middleman.
112
154
  email:
113
155
  - terra@e2esound.com
@@ -140,6 +182,7 @@ files:
140
182
  - fixtures/gemoji-empty-app/source/images/.gitkeep
141
183
  - fixtures/gemoji-empty-app/source/img/.gitkeep
142
184
  - fixtures/gemoji-empty-app/source/index.html.erb
185
+ - fixtures/gemoji-file-exist/source/images/emoji/unicode/.gitkeep
143
186
  - fixtures/haml-app/config.rb
144
187
  - fixtures/haml-app/source/images/emoji/unicode/.gitkeep
145
188
  - fixtures/haml-app/source/index.html.haml
@@ -154,10 +197,13 @@ files:
154
197
  - fixtures/slim-app/source/no-emoji.html.slim
155
198
  - lib/middleman-gemoji.rb
156
199
  - lib/middleman-gemoji/command.rb
200
+ - lib/middleman-gemoji/converter.rb
157
201
  - lib/middleman-gemoji/extension.rb
158
202
  - lib/middleman-gemoji/version.rb
159
203
  - lib/middleman_extension.rb
160
204
  - middleman-gemoji.gemspec
205
+ - test/test_converter.rb
206
+ - test/test_helper.rb
161
207
  homepage: https://github.com/yterajima/middleman-gemoji
162
208
  licenses:
163
209
  - MIT
@@ -190,3 +236,5 @@ test_files:
190
236
  - features/markdown.feature
191
237
  - features/slim.feature
192
238
  - features/support/env.rb
239
+ - test/test_converter.rb
240
+ - test/test_helper.rb