Module: Gemojione

Defined in:
lib/gemojione.rb,
lib/gemojione/index.rb,
lib/gemojione/railtie.rb,
lib/gemojione/version.rb,
lib/gemojione/categories.rb

Defined Under Namespace

Classes: Categories, Index, Railtie

Constant Summary collapse

VERSION =
"4.3.2"

Class Method Summary collapse

Class Method Details

.asset_hostObject



26
27
28
# File 'lib/gemojione.rb', line 26

def self.asset_host
  @asset_host || 'http://localhost:3000'
end

.asset_host=(host) ⇒ Object



30
31
32
# File 'lib/gemojione.rb', line 30

def self.asset_host=(host)
  @asset_host = host
end

.asset_pathObject



34
35
36
# File 'lib/gemojione.rb', line 34

def self.asset_path
  @asset_path || '/'
end

.asset_path=(path) ⇒ Object



38
39
40
# File 'lib/gemojione.rb', line 38

def self.asset_path=(path)
  @asset_path = path
end

.default_sizeObject



42
43
44
# File 'lib/gemojione.rb', line 42

def self.default_size
  @default_size
end

.default_size=(size) ⇒ Object



46
47
48
# File 'lib/gemojione.rb', line 46

def self.default_size=(size)
  @default_size = size
end

.escape_html(string) ⇒ Object



187
188
189
# File 'lib/gemojione.rb', line 187

def self.escape_html(string)
  @escaper.escape_html(string)
end

.image_tag_for_moji(moji) ⇒ Object



77
78
79
80
81
82
83
84
# File 'lib/gemojione.rb', line 77

def self.image_tag_for_moji(moji)
  emoji = index.find_by_moji(moji)
  if use_sprite
    %Q{<span class="emojione emojione-#{emoji['unicode'].to_s.downcase}" alt="#{ emoji['name'] }" title="#{ emoji['shortname'] }">#{ moji }</span>}
  else
    %Q{<img alt="#{emoji['moji']}" class="emoji" src="#{ image_url_for_unicode_moji(moji) }"#{ default_size ? ' style="width: '+default_size+';"' : '' }>}
  end
end

.image_tag_for_unicode(unicode) ⇒ Object



86
87
88
89
90
91
92
93
# File 'lib/gemojione.rb', line 86

def self.image_tag_for_unicode(unicode)
  emoji = index.find_by_unicode(unicode)
  if use_sprite
    %Q{<span class="emojione emojione-#{emoji['unicode'].to_s.downcase}" alt="#{ emoji['name'] }" title="#{ emoji['shortname'] }">#{ emoji['moji'] }</span>}
  else
    %Q{<img alt="#{emoji['name']}" class="emoji" src="#{ image_url_for_unicode_moji(emoji['moji']) }"#{ default_size ? ' style="width: '+default_size+';"' : '' }>}
  end
end

.image_url_for_name(name) ⇒ Object



66
67
68
69
70
# File 'lib/gemojione.rb', line 66

def self.image_url_for_name(name)
  emoji = index.find_by_name(name)
  unicode = use_svg ? emoji['unicode'].upcase : emoji['unicode'].downcase
  "#{asset_host}#{ File.join(asset_path, unicode) }.#{ use_svg ? 'svg' : 'png' }"
end

.image_url_for_unicode_moji(moji) ⇒ Object



72
73
74
75
# File 'lib/gemojione.rb', line 72

def self.image_url_for_unicode_moji(moji)
  emoji = index.find_by_moji(moji)
  image_url_for_name(emoji['name'])
end

.images_pathObject



195
196
197
# File 'lib/gemojione.rb', line 195

def self.images_path
  File.expand_path("../assets/#{ use_svg ? 'svg' : 'png' }", File.dirname(__FILE__))
end

.indexObject



191
192
193
# File 'lib/gemojione.rb', line 191

def self.index
  @index ||= Index.new
end

.replace_ascii_moji_with_images(string) ⇒ Object



145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/gemojione.rb', line 145

def self.replace_ascii_moji_with_images(string)
  return string unless string
  unless string.match(index.ascii_moji_regex)
    return safe_string(string)
  end

  string.gsub!(index.ascii_moji_regex) do |code|
    moji = index.find_by_ascii(code)['moji']
    Gemojione.image_tag_for_moji(moji)
  end

  unless string.respond_to?(:html_safe?) && string.html_safe?
    safe_string = CGI::unescapeElement(CGI.escape_html(string), %w[span img])
  end
  safe_string = safe_string.html_safe if safe_string.respond_to?(:html_safe)

  safe_string
end

.replace_named_moji_with_images(string) ⇒ Object



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/gemojione.rb', line 110

def self.replace_named_moji_with_images(string)
  return string unless string
  unless string.match(index.shortname_moji_regex)
    return safe_string(string)
  end

  safe_string = safe_string(string.dup)
  safe_string.gsub!(index.shortname_moji_regex) do |code|
    name = code.tr(':','')
    moji = index.find_by_name(name)
    Gemojione.image_tag_for_unicode(moji['unicode'])
  end
  safe_string = safe_string.html_safe if safe_string.respond_to?(:html_safe)

  safe_string
end

.replace_named_moji_with_unicode_moji(string) ⇒ Object



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/gemojione.rb', line 127

def self.replace_named_moji_with_unicode_moji(string)
  return string unless string
  unless string.match(index.shortname_moji_regex)
    return safe_string(string)
  end

  safe_string = safe_string(string.dup)
  safe_string.gsub!(index.shortname_moji_regex) do |code|
    name = code.tr(':','')
    moji = index.find_by_name(name)
    moji['moji']
  end

  safe_string = safe_string.html_safe if safe_string.respond_to?(:html_safe)

  safe_string
end

.replace_unicode_moji_with_images(string) ⇒ Object



95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/gemojione.rb', line 95

def self.replace_unicode_moji_with_images(string)
  return string unless string
  unless string.match(index.unicode_moji_regex)
    return safe_string(string)
  end

  safe_string = safe_string(string.dup)
  safe_string.gsub!(index.unicode_moji_regex) do |moji|
    Gemojione.image_tag_for_moji(moji)
  end
  safe_string = safe_string.html_safe if safe_string.respond_to?(:html_safe)

  safe_string
end

.replace_unicode_moji_with_names(string) ⇒ Object



164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/gemojione.rb', line 164

def self.replace_unicode_moji_with_names(string)
  return string unless string
  unless string.match(index.unicode_moji_regex)
    return safe_string(string)
  end

    safe_string = safe_string(string.dup)
    safe_string.gsub!(index.unicode_moji_regex) do |moji|
      index.find_by_moji(moji)['shortname']
    end
    safe_string = safe_string.html_safe if safe_string.respond_to?(:html_safe)

    safe_string
end

.safe_string(string) ⇒ Object



179
180
181
182
183
184
185
# File 'lib/gemojione.rb', line 179

def self.safe_string(string)
  if string.respond_to?(:html_safe?) && string.html_safe?
    string
  else
    escape_html(string)
  end
end

.sprites_pathObject



199
200
201
# File 'lib/gemojione.rb', line 199

def self.sprites_path
  File.expand_path("../assets/sprites", File.dirname(__FILE__))
end

.use_spriteObject



58
59
60
# File 'lib/gemojione.rb', line 58

def self.use_sprite
  @use_sprite
end

.use_sprite=(useit) ⇒ Object



62
63
64
# File 'lib/gemojione.rb', line 62

def self.use_sprite=(useit)
  @use_sprite = useit
end

.use_svgObject



50
51
52
# File 'lib/gemojione.rb', line 50

def self.use_svg
  @use_svg
end

.use_svg=(useit) ⇒ Object



54
55
56
# File 'lib/gemojione.rb', line 54

def self.use_svg=(useit)
  @use_svg = useit
end