gemojione 2.5.0 → 2.6.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.
data/lib/gemojione.rb CHANGED
@@ -15,6 +15,8 @@ require "gemojione/railtie" if defined?(Rails)
15
15
  module Gemojione
16
16
  @asset_host = nil
17
17
  @asset_path = nil
18
+ @default_size = nil
19
+
18
20
  @escaper = defined?(EscapeUtils) ? EscapeUtils : CGI
19
21
 
20
22
  def self.asset_host
@@ -33,6 +35,14 @@ module Gemojione
33
35
  @asset_path = path
34
36
  end
35
37
 
38
+ def self.default_size
39
+ @default_size
40
+ end
41
+
42
+ def self.default_size=(size)
43
+ @default_size = size
44
+ end
45
+
36
46
  def self.image_url_for_name(name)
37
47
  emoji = index.find_by_name(name)
38
48
  "#{asset_host}#{ File.join(asset_path, emoji['unicode']) }.png"
@@ -43,6 +53,10 @@ module Gemojione
43
53
  image_url_for_name(emoji['name'])
44
54
  end
45
55
 
56
+ def self.image_tag_for_moji(moji)
57
+ %Q{<img alt="#{moji}" class="emoji" src="#{ image_url_for_unicode_moji(moji) }"#{ default_size ? ' style="width: '+default_size+';"' : '' }>}
58
+ end
59
+
46
60
  def self.replace_unicode_moji_with_images(string)
47
61
  return string unless string
48
62
  unless string.match(index.unicode_moji_regex)
@@ -51,7 +65,7 @@ module Gemojione
51
65
 
52
66
  safe_string = safe_string(string.dup)
53
67
  safe_string.gsub!(index.unicode_moji_regex) do |moji|
54
- %Q{<img alt="#{moji}" class="emoji" src="#{ image_url_for_unicode_moji(moji) }">}
68
+ Gemojione.image_tag_for_moji(moji)
55
69
  end
56
70
  safe_string = safe_string.html_safe if safe_string.respond_to?(:html_safe)
57
71
 
@@ -68,7 +82,7 @@ module Gemojione
68
82
  safe_string.gsub!(index.shortname_moji_regex) do |code|
69
83
  name = code.tr(':','')
70
84
  moji = index.find_by_name(name)['moji']
71
- %Q{<img alt="#{moji}" class="emoji" src="#{ image_url_for_name(name) }">}
85
+ Gemojione.image_tag_for_moji(moji)
72
86
  end
73
87
  safe_string = safe_string.html_safe if safe_string.respond_to?(:html_safe)
74
88
 
@@ -33,8 +33,8 @@ module Gemojione
33
33
  @emoji_by_moji[moji] = emoji_hash if moji
34
34
  end
35
35
 
36
- @emoji_code_regex = /#{@emoji_by_code.keys.join('|')}/
37
- @emoji_moji_regex = /#{@emoji_by_moji.keys.join('|')}/
36
+ @emoji_code_regex = /#{@emoji_by_code.keys.map{|ec| Regexp.escape(ec)}.join('|')}/
37
+ @emoji_moji_regex = /#{@emoji_by_moji.keys.map{|ec| Regexp.escape(ec)}.join('|')}/
38
38
  end
39
39
 
40
40
  def find_by_moji(moji)
@@ -1,3 +1,3 @@
1
1
  module Gemojione
2
- VERSION = "2.5.0"
2
+ VERSION = "2.6.0"
3
3
  end
@@ -43,6 +43,30 @@ describe Gemojione do
43
43
  end
44
44
  end
45
45
 
46
+ describe 'default size' do
47
+ it 'should default to nil' do
48
+ assert_equal nil, Gemojione.default_size
49
+ end
50
+
51
+ it 'should be configurable' do
52
+ with_emoji_config(:default_size, '32px') do
53
+ assert_equal '32px', Gemojione.default_size
54
+ end
55
+ end
56
+ end
57
+
58
+ describe 'image_tag_for_moji' do
59
+ it 'should generate a clean img tag if default_size undefined' do
60
+ assert_equal '<img alt="🌀" class="emoji" src="http://localhost:3000/1F300.png">', Gemojione.image_tag_for_moji('🌀')
61
+ end
62
+
63
+ it 'should generate a img tag with style tag if default_size is defined' do
64
+ Gemojione.default_size='42px'
65
+ assert_equal '<img alt="🌀" class="emoji" src="http://localhost:3000/1F300.png" style="width: 42px;">', Gemojione.image_tag_for_moji('🌀')
66
+ Gemojione.default_size=nil
67
+ end
68
+ end
69
+
46
70
  describe "replace_unicode_moji_with_images" do
47
71
  it 'should return original string without emoji' do
48
72
  assert_equal "foo", Gemojione.replace_unicode_moji_with_images('foo')
@@ -59,6 +83,10 @@ describe Gemojione do
59
83
  assert_equal "I <img alt=\"❤\" class=\"emoji\" src=\"http://localhost:3000/2764.png\"> Emoji", replaced_string
60
84
  end
61
85
 
86
+ it 'should escape regex breaker mojis' do
87
+ assert_equal "<img alt=\"*⃣\" class=\"emoji\" src=\"http://localhost:3000/002A-20E3.png\">", Gemojione.replace_unicode_moji_with_images('*⃣')
88
+ end
89
+
62
90
  it 'should handle nil string' do
63
91
  assert_equal nil, Gemojione.replace_unicode_moji_with_images(nil)
64
92
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemojione
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Klabnik
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-06-14 00:00:00.000000000 Z
13
+ date: 2016-06-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json