emojidex 0.3.5 → 0.4.0

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: 3a4fe5b07ba97a8446a72ba1472aec77755938a5
4
- data.tar.gz: f7c10750a8e941a070bb99ae732a8bdc3651a3cd
3
+ metadata.gz: 2e959579357aeba554ee22e943695350f4e8531e
4
+ data.tar.gz: 2a35e42c90834d6324fef0beabd2fbebfc728d09
5
5
  SHA512:
6
- metadata.gz: 9430016328967b61b6dd6d96ea9f461ed39e41d0b7c1aa82843d2e3e61ac329594eb4d346454cb159f6dbd606b4c55fefd9c3f31d5bd8079cabdfe23d0ee3a83
7
- data.tar.gz: 6a3e95ae8f0a5cd2c5d3dda012e2a01a40539cc0a6b5302deb09d1447d0325a64c46835f10ada71f5ec91c979d909a940ee565a6e13a2a1489162d28829a9723
6
+ metadata.gz: 47764eda85a0f7fbb57db70dddbd267b377b7db322bb04c9f10d652bc3883d585467cf45ee7059cb144731787441c4a6f02dab6253becac0c443be4734ac6427
7
+ data.tar.gz: 2349ecb35576c0b56026905657c017848ee764cdf508bc4f89789905184998a138327e383c960272c320cf91da44ca2b1eee165a4cd1b267283bfc445bcd78f5
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'emojidex'
3
- s.version = '0.3.5'
3
+ s.version = '0.4.0'
4
4
  s.license = 'emojiOL'
5
5
  s.summary = 'emojidex Ruby tools'
6
6
  s.description = 'emojidex emoji handling, search and lookup, listing and caching functionality' \
@@ -128,6 +128,7 @@ module Emojidex
128
128
  _add_list(list)
129
129
  categorize
130
130
  associate_variants
131
+ associate_customizations
131
132
  condense_moji_code_data
132
133
  @emoji
133
134
  end
@@ -174,6 +175,14 @@ module Emojidex
174
175
  end
175
176
  end
176
177
 
178
+ def associate_customizations
179
+ @emoji.values.each do |emoji_obj|
180
+ emoji_obj.combinations.each do |combo|
181
+ @emoji[combo.base.to_sym].add_customization(combo)
182
+ end
183
+ end
184
+ end
185
+
177
186
  def _sub_search(list, criteria = {})
178
187
  cr = criteria.shift
179
188
  return list if cr.nil?
@@ -9,6 +9,9 @@ module Emojidex
9
9
  sizes = Emojidex::Defaults.sizes)
10
10
  @emoji.values.each do |moji|
11
11
  moji.checksums = get_checksums(moji, formats, sizes)
12
+ moji.combinations.each do |combo|
13
+ combo.checksums = get_combo_checksums(moji, combo, formats, sizes)
14
+ end
12
15
  end
13
16
  end
14
17
 
@@ -25,9 +28,34 @@ module Emojidex
25
28
  sums
26
29
  end
27
30
 
31
+ def get_combo_checksums(moji, combo, formats = Emojidex::Defaults.formats,
32
+ sizes = Emojidex::Defaults.sizes)
33
+ sums = combo.generate_blank_entry_set
34
+ if formats.include? :svg
35
+ for i in 0..(combo.components.length - 1)
36
+ combo.components[i].each do |component|
37
+ sums[i][component][:svg] = _checksum_for_file("#{@vector_source_path}/#{combo.base}/#{i}/#{component}.svg")
38
+ end
39
+ end
40
+ end
41
+ if formats.include? :png
42
+ sizes.keys.each do |size|
43
+ for i in 0..(combo.components.length - 1)
44
+ combo.components[i].each do |component|
45
+ sums[i][component][:png] = _checksum_for_file("#{@raster_source_path}/#{size}/#{combo.base}/#{i}/#{component}.png")
46
+ end
47
+ end
48
+ end
49
+ end
50
+ sums
51
+ end
52
+
28
53
  def generate_paths(formats = Emojidex::Defaults.formats, sizes = Emojidex::Defaults.sizes)
29
54
  @emoji.values.each do |moji|
30
55
  moji.paths = get_paths(moji, formats, sizes)
56
+ moji.combinations.each do |combo|
57
+ combo.paths = get_combo_paths(moji, combo, formats, sizes)
58
+ end
31
59
  end
32
60
  end
33
61
 
@@ -58,6 +86,18 @@ module Emojidex
58
86
  paths
59
87
  end
60
88
 
89
+ def get_combo_paths(moji, combo, formats = Emojidex::Defaults.formats,
90
+ sizes = Emojidex::Defaults.sizes)
91
+ paths = combo.generate_blank_path_set
92
+ paths[:svg] = "#{@vector_source_path}/#{moji.code}"
93
+ if formats.include? :png
94
+ sizes.keys.each do |size|
95
+ paths[:png][size] = "#{@raster_source_path}/#{size}/#{moji.code}"
96
+ end
97
+ end
98
+ paths
99
+ end
100
+
61
101
  private
62
102
 
63
103
  def _checksum_for_file(path)
@@ -1,19 +1,33 @@
1
1
  require_relative '../../emojidex'
2
+ require_relative 'emoji/combination_information'
2
3
  require_relative 'emoji/asset_information'
3
4
 
4
5
  module Emojidex
5
6
  module Data
6
7
  # emoji base class
7
8
  class Emoji
9
+ # Attribute Definitions:
10
+ # * moji: the actual character code associated with this emoji (if any)
11
+ # * category: category this emoji belongs to (usually as defined by Unicode)
12
+ # * code: the "short code" for the emoji
13
+ # * code_ja: the Japanese version of the "short code"
14
+ # * unicode: a string representing the hex of the unicode characters with - between multiples
15
+ # * tags: the tags registered to this emoji (usually only from the service)
16
+ # * emoticon: the emoticon that maps to this emoji (rarely used/not recommended)
17
+ # * variants: different (variants) of the emoji EG: racial modifiers
18
+ # * base: the base variant EG: the base emoji without modifiers
19
+ # * r18: flag indicating adult content
8
20
  attr_accessor :moji, :category, :code, :code_ja,
9
21
  :unicode, :tags, :emoticon, :variants, :base,
10
22
  :r18
11
23
 
24
+ include Emojidex::Data::EmojiCombinationInformation
12
25
  include Emojidex::Data::EmojiAssetInformation
13
26
 
14
27
  def initialize(details = {})
15
28
  _init_identifier_info(details)
16
29
  _init_descriptor_info(details)
30
+ init_combination_info(details)
17
31
  init_asset_info(details)
18
32
  end
19
33
 
@@ -22,7 +36,12 @@ module Emojidex
22
36
  end
23
37
 
24
38
  def to_json(*args)
25
- to_hash.to_json(*args)
39
+ hash = to_hash
40
+ hash.each do |key, val|
41
+ hash.delete(key) if (val.instance_of?(Array) && val.length == 0)
42
+ hash.delete(key) if (val.instance_of?(String) && val == "")
43
+ end
44
+ hash.to_json(*args)
26
45
  end
27
46
 
28
47
  def to_hash
@@ -63,6 +63,7 @@ module Emojidex
63
63
  Emojidex::Defaults.sizes.keys.each do |size|
64
64
  @paths[:png][size] = paths[:png][size] if paths[:png].include? size
65
65
  end
66
+ @combinations.each { |combo| combo.fill_paths(paths) }
66
67
  @paths
67
68
  end
68
69
 
@@ -112,6 +113,7 @@ module Emojidex
112
113
  @paths[:png].keys.each do |size|
113
114
  @checksums[:png][size] = _checksum_for_file(@paths[:png][size])
114
115
  end
116
+ @combinations.each { |combo| combo.generate_checksums }
115
117
  @checksums
116
118
  end
117
119
 
@@ -0,0 +1,44 @@
1
+ require_relative 'combination_asset_information.rb'
2
+
3
+ module Emojidex
4
+ module Data
5
+ # Combination information container
6
+ class Combination
7
+ # * base: the named base that this combination belongs to
8
+ # * combinations: combinations starting with this emoji; base/components/component order
9
+ # * cutomizations: emoji which start customization of this emoji (this is combination base)
10
+ attr_accessor :base, :component_layer_order, :components
11
+
12
+ include Emojidex::Data::EmojiCombinationAssetInformation
13
+
14
+ def initialize(code, combination_info, details = {})
15
+ @base = combination_info[:base]
16
+
17
+ @components = []
18
+ @components << [Emojidex.escape_code(code.to_s)]
19
+ combination_info[:components].each { |component_set| @components << component_set }
20
+ if combination_info.include? :component_layer_order
21
+ @component_layer_order = combination_info[:component_layer_order]
22
+ else
23
+ @component_layer_order = []
24
+ for i in 0..(@components.length - 1)
25
+ @component_layer_order << i
26
+ end
27
+ end
28
+
29
+ init_asset_info(details)
30
+ end
31
+
32
+ def to_json(options = {})
33
+ truncated_components = @components.dup
34
+ truncated_components.shift
35
+ {
36
+ base: @base,
37
+ component_layer_order: @component_layer_order,
38
+ components: truncated_components,
39
+ checksums: @checksums
40
+ }.to_json
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,92 @@
1
+ require 'digest/md5'
2
+ require_relative '../../defaults'
3
+
4
+ module Emojidex
5
+ module Data
6
+ # Asset information for emoji
7
+ module EmojiCombinationAssetInformation
8
+ attr_accessor :checksums, :paths, :remote_checksums
9
+
10
+ def init_asset_info(details = {})
11
+ blank_paths
12
+ blank_checksums
13
+ fill_remote_checksums(details[:checksums]) if details.include? :checksums
14
+ end
15
+
16
+ def generate_blank_entry_set
17
+ entry_set = []
18
+ @components.each do |component_set|
19
+ component_group = {}
20
+ component_set.each do |single_component|
21
+ component_group[single_component] = {}
22
+ component_group[single_component][:svg] = nil
23
+ component_group[single_component][:png] = {}
24
+ Emojidex::Defaults.sizes.keys.each do |size|
25
+ component_group[single_component][:png][size] = nil
26
+ end
27
+ end
28
+ entry_set << component_group
29
+ end
30
+ entry_set
31
+ end
32
+
33
+ def blank_paths
34
+ @paths = generate_blank_path_set
35
+ end
36
+
37
+ def generate_blank_path_set
38
+ paths = {}
39
+ paths[:svg] = nil
40
+ paths[:png] = {}
41
+ Emojidex::Defaults.sizes.keys.each do |size|
42
+ paths[:png][size] = nil
43
+ end
44
+ paths
45
+ end
46
+
47
+ def fill_paths(paths)
48
+ @paths = paths
49
+ @paths[:svg].slice!(/\.svg$/)
50
+ @paths[:png].each { |png| png.slice!(/\.png$/) }
51
+ end
52
+
53
+ def blank_checksums
54
+ @checksums = generate_blank_entry_set
55
+ @remote_checksums = generate_blank_entry_set
56
+ end
57
+
58
+ def generate_checksum(component_set_num, component_name, format, size = nil)
59
+ case format
60
+ when :png
61
+ return @checksums[component_set_num][component_name][:png][size] =
62
+ _checksum_for_file("#{@paths[:png][size]}/#{component_set_num}/#{component_name}.png")
63
+ when :svg
64
+ return @checksums[component_set_num][component_name][:svg] =
65
+ _checksum_for_file("#{@paths[:svg]}/#{component_set_num}/#{component_name}.svg")
66
+ end
67
+ nil
68
+ end
69
+
70
+ def generate_checksums
71
+ @components.each_with_index do |component_set, i|
72
+ component_set.each do |component_name|
73
+ generate_checksum(i, component_name, :svg)
74
+ @checksums[i][component_name][:png].keys.each do |size_key|
75
+ generate_checksum(i, component_name, :png, size_key)
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ def fill_remote_checksums(checksums)
82
+ #todo once implemented in API
83
+ end
84
+
85
+ private
86
+
87
+ def _checksum_for_file(path)
88
+ (File.exist? path) ? Digest::MD5.file(path).hexdigest : nil
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,40 @@
1
+ require_relative '../../defaults'
2
+ require_relative 'combination'
3
+
4
+ module Emojidex
5
+ module Data
6
+ # Combination information for emoji
7
+ module EmojiCombinationInformation
8
+ attr_accessor :combinations, :customizations
9
+
10
+ def init_combination_info(details)
11
+ _check_and_init_combinations
12
+ fill_combinations(details[:combinations]) if details.include? :combinations
13
+ end
14
+
15
+ def fill_combinations(combinations)
16
+ _check_and_init_combinations
17
+ combinations.each do |combination|
18
+ add_combination(combination)
19
+ end
20
+ end
21
+
22
+ def add_combination(combination_info)
23
+ _check_and_init_combinations
24
+ @combinations << Combination.new(@code, combination_info)
25
+ end
26
+
27
+ def add_customization(combo)
28
+ _check_and_init_combinations
29
+ @customizations << combo
30
+ @customizations.uniq!
31
+ end
32
+
33
+ private
34
+ def _check_and_init_combinations
35
+ @combinations = [] if @combinations.nil?
36
+ @customizations = [] if @customizations.nil?
37
+ end
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emojidex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rei Kagetsuki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-06 00:00:00.000000000 Z
11
+ date: 2017-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -90,6 +90,9 @@ files:
90
90
  - lib/emojidex/data/collection/static_collection.rb
91
91
  - lib/emojidex/data/emoji.rb
92
92
  - lib/emojidex/data/emoji/asset_information.rb
93
+ - lib/emojidex/data/emoji/combination.rb
94
+ - lib/emojidex/data/emoji/combination_asset_information.rb
95
+ - lib/emojidex/data/emoji/combination_information.rb
93
96
  - lib/emojidex/data/extended.rb
94
97
  - lib/emojidex/data/utf.rb
95
98
  - lib/emojidex/defaults.rb
@@ -122,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
125
  version: '0'
123
126
  requirements: []
124
127
  rubyforge_project:
125
- rubygems_version: 2.5.2
128
+ rubygems_version: 2.6.8
126
129
  signing_key:
127
130
  specification_version: 4
128
131
  summary: emojidex Ruby tools