tanuki_emoji 0.5.0 → 0.6.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
  SHA256:
3
- metadata.gz: fe0dc4ae27d764f4f8e197ab0736035eb6cb082f3f3c7e365a7242af4fcc895c
4
- data.tar.gz: 63306c6bfebf28a9ec7f762132d12370094f8d6121f441e621adec62e76d6563
3
+ metadata.gz: 80827a5454f2eb6ed96102851f315c04215bda544c83892570e6b035ce43cbdd
4
+ data.tar.gz: c3a97c5c042b909a8544173865f8921e23093333b465fc47ee4f6e306df9480f
5
5
  SHA512:
6
- metadata.gz: 8da28b3ee32bbadba7c28581c840f2cb80e16a7f978fb8d14117204642324da8341868fc76f56ae47e51f50f179113ae007cec5c33f8965eeb8cd7608ab2abca
7
- data.tar.gz: 1d4a177f172eeb488bd0016abfa5710a7154132c9a95882e802d6ee796334b485db611dc69233ad5b18befe02c83603902914a5169aab919c9313bb7394b969a
6
+ metadata.gz: b5d4fa24f4a0a954df5000d6a04f5c7f8621f6e1b9c2aa5fcb448b3e15af4df927f7033f57c125d9d1b0e11132175cf7351b631c19fe05aa4678c07f402e7636
7
+ data.tar.gz: 59439b83f98f62e9ace8756accfa327499182309b777864ad87847e567ddfe157b5056844a9033b50548784dec78d51b3d6ab358ef9b0c0a78ffff0e2fe20a67
data/.gitlab-ci.yml CHANGED
@@ -47,3 +47,6 @@ include:
47
47
  - template: Dependency-Scanning.gitlab-ci.yml
48
48
  - template: Security/License-Scanning.gitlab-ci.yml
49
49
  - template: Code-Quality.gitlab-ci.yml
50
+ - project: 'gitlab-org/quality/pipeline-common'
51
+ file:
52
+ - '/ci/danger-review.yml'
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.4
1
+ 2.7.5
data/CHANGELOG.md CHANGED
@@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.6.0] - 2022-02-16
10
+ ### Added
11
+ - `Character` responds to `ascii_aliases` which contain ASCII aliases from Gemojione
12
+
13
+ ### Fixed
14
+ - Fixed `TanukiEmoji.add` command, which should now require `category:` to be provided
15
+ - Fixed issue where `TanukiEmoji::Index#codepoints_pattern` would split apart emoji-modifier pairs
16
+
9
17
  ## [0.5.0] - 2021-09-16
10
18
  ### Added
11
19
  - Add Category information into `Character`
@@ -49,3 +57,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
49
57
  [0.3.0]:https://gitlab.com/gitlab-org/tanuki_emoji/-/releases/v0.3.0
50
58
  [0.4.0]:https://gitlab.com/gitlab-org/tanuki_emoji/-/releases/v0.4.0
51
59
  [0.5.0]:https://gitlab.com/gitlab-org/tanuki_emoji/-/releases/v0.5.0
60
+ [0.6.0]:https://gitlab.com/gitlab-org/tanuki_emoji/-/releases/v0.6.0
data/Dangerfile ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'gitlab-dangerfiles'
4
+
5
+ Gitlab::Dangerfiles.for_project(self, &:import_defaults)
data/Gemfile.lock CHANGED
@@ -1,19 +1,98 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tanuki_emoji (0.5.0)
4
+ tanuki_emoji (0.6.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ addressable (2.8.0)
10
+ public_suffix (>= 2.0.2, < 5.0)
9
11
  ast (2.4.2)
12
+ claide (1.1.0)
13
+ claide-plugins (0.9.2)
14
+ cork
15
+ nap
16
+ open4 (~> 1.3)
17
+ colored2 (3.1.2)
18
+ cork (0.3.0)
19
+ colored2 (~> 3.1)
20
+ danger (8.4.2)
21
+ claide (~> 1.0)
22
+ claide-plugins (>= 0.9.2)
23
+ colored2 (~> 3.1)
24
+ cork (~> 0.1)
25
+ faraday (>= 0.9.0, < 2.0)
26
+ faraday-http-cache (~> 2.0)
27
+ git (~> 1.7)
28
+ kramdown (~> 2.3)
29
+ kramdown-parser-gfm (~> 1.0)
30
+ no_proxy_fix
31
+ octokit (~> 4.7)
32
+ terminal-table (>= 1, < 4)
33
+ danger-gitlab (8.0.0)
34
+ danger
35
+ gitlab (~> 4.2, >= 4.2.0)
10
36
  diff-lcs (1.4.4)
11
37
  docile (1.4.0)
38
+ faraday (1.9.3)
39
+ faraday-em_http (~> 1.0)
40
+ faraday-em_synchrony (~> 1.0)
41
+ faraday-excon (~> 1.1)
42
+ faraday-httpclient (~> 1.0)
43
+ faraday-multipart (~> 1.0)
44
+ faraday-net_http (~> 1.0)
45
+ faraday-net_http_persistent (~> 1.0)
46
+ faraday-patron (~> 1.0)
47
+ faraday-rack (~> 1.0)
48
+ faraday-retry (~> 1.0)
49
+ ruby2_keywords (>= 0.0.4)
50
+ faraday-em_http (1.0.0)
51
+ faraday-em_synchrony (1.0.0)
52
+ faraday-excon (1.1.0)
53
+ faraday-http-cache (2.2.0)
54
+ faraday (>= 0.8)
55
+ faraday-httpclient (1.0.1)
56
+ faraday-multipart (1.0.3)
57
+ multipart-post (>= 1.2, < 3)
58
+ faraday-net_http (1.0.1)
59
+ faraday-net_http_persistent (1.2.0)
60
+ faraday-patron (1.0.0)
61
+ faraday-rack (1.0.0)
62
+ faraday-retry (1.0.3)
63
+ git (1.10.2)
64
+ rchardet (~> 1.8)
65
+ gitlab (4.18.0)
66
+ httparty (~> 0.18)
67
+ terminal-table (>= 1.5.1)
68
+ gitlab-dangerfiles (2.8.0)
69
+ danger (>= 8.3.1)
70
+ danger-gitlab (>= 8.0.0)
71
+ httparty (0.20.0)
72
+ mime-types (~> 3.0)
73
+ multi_xml (>= 0.5.2)
74
+ kramdown (2.3.1)
75
+ rexml
76
+ kramdown-parser-gfm (1.1.0)
77
+ kramdown (~> 2.0)
78
+ mime-types (3.4.1)
79
+ mime-types-data (~> 3.2015)
80
+ mime-types-data (3.2022.0105)
81
+ multi_xml (0.6.0)
82
+ multipart-post (2.1.1)
83
+ nap (1.1.0)
84
+ no_proxy_fix (0.1.2)
85
+ octokit (4.22.0)
86
+ faraday (>= 0.9)
87
+ sawyer (~> 0.8.0, >= 0.5.3)
88
+ open4 (1.3.4)
12
89
  parallel (1.20.1)
13
90
  parser (3.0.2.0)
14
91
  ast (~> 2.4.1)
92
+ public_suffix (4.0.6)
15
93
  rainbow (3.0.0)
16
94
  rake (13.0.6)
95
+ rchardet (1.8.0)
17
96
  regexp_parser (2.1.1)
18
97
  rexml (3.2.5)
19
98
  rspec (3.10.0)
@@ -43,6 +122,10 @@ GEM
43
122
  rubocop-ast (1.8.0)
44
123
  parser (>= 3.0.1.1)
45
124
  ruby-progressbar (1.11.0)
125
+ ruby2_keywords (0.0.5)
126
+ sawyer (0.8.2)
127
+ addressable (>= 2.3.5)
128
+ faraday (> 0.8, < 2.0)
46
129
  simplecov (0.21.2)
47
130
  docile (~> 1.1)
48
131
  simplecov-html (~> 0.11)
@@ -51,6 +134,8 @@ GEM
51
134
  simplecov (~> 0.8)
52
135
  simplecov-html (0.12.3)
53
136
  simplecov_json_formatter (0.1.3)
137
+ terminal-table (3.0.2)
138
+ unicode-display_width (>= 1.1.1, < 3)
54
139
  unicode-display_width (2.0.0)
55
140
 
56
141
  PLATFORMS
@@ -59,6 +144,7 @@ PLATFORMS
59
144
  x86_64-linux
60
145
 
61
146
  DEPENDENCIES
147
+ gitlab-dangerfiles (~> 2.8.0)
62
148
  rake (~> 13.0)
63
149
  rspec (~> 3.0)
64
150
  rspec_junit_formatter (~> 0.4.0)
data/README.md CHANGED
@@ -70,17 +70,36 @@ File.join(TanukiEmoji.images_path, c.image_name)
70
70
 
71
71
  ## Development
72
72
 
73
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
74
- You can also run `bin/console` for an interactive prompt that will allow you to experiment.
73
+ In order to contribute to TanukiEmoji gem, you need to:
75
74
 
76
- To install this gem onto your local machine, run `bundle exec rake install`.
77
- To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`,
78
- which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to
75
+ 1. Clone the repository to your local machine.
76
+ 1. Run `bin/setup` to initialize `git submodules` and install ruby dependencies.
77
+
78
+ Many workflow tasks are available as Rake tasks:
79
+
80
+ - `bundle exec rake spec` can be used to run tests.
81
+ - `bundle exec rake install` will build and install the gem on your local machine.
82
+
83
+ To load an interactive console with the gem you can use `bin/console`.
84
+
85
+ ### Releasing a new version
86
+
87
+ Before releasing a new gem, create a MR with the following changes:
88
+
89
+ - Update `CHANGELOG.md` by adding a version section and moving any changes from `[Unreleased]` to it.
90
+ - Update the version number in `lib/tanuki_emoji/version.rb`.
91
+
92
+ With that MR approved and merged, pull the changes to your `main` branch and run `bundle exec rake release`.
93
+ This command will create a git tag for the version and push it, generate a new `.gem` file and publish into
79
94
  [rubygems.org](https://rubygems.org).
80
95
 
81
96
  ## Contributing
82
97
 
83
- See [CONTRIBUTING.md](CONTRIBUTING.md).
98
+ See [CONTRIBUTING.md](CONTRIBUTING.md) and [Development](#development) section.
99
+
100
+ When you create a new Merge Request, consider adding your change to the `CHANGELOG.md` if it includes a new feature, a feature change or a fix.
101
+
102
+ Please do not increase the version numbers, as this is handled by a separate process when we [release a new version](#releasing-a-new-version).
84
103
 
85
104
  ## License
86
105
 
@@ -16,11 +16,12 @@ module TanukiEmoji
16
16
 
17
17
  # This denotes a "plain" (black/white) or "textual" version
18
18
  PLAIN_VARIATION_SELECTOR = 0xFE0E
19
+ PLAIN_VARIATION_SELECTOR_STRING = PLAIN_VARIATION_SELECTOR.chr(Encoding::UTF_8)
19
20
 
20
21
  # Zero Width Joiner is used in sequences to indicate they should all be evaluated and displayed as a single thing
21
22
  ZWJ_TAG = 0x200D
22
23
 
23
- attr_reader :name, :codepoints, :codepoints_alternates, :alpha_code, :aliases, :description, :category
24
+ attr_reader :name, :codepoints, :codepoints_alternates, :alpha_code, :aliases, :ascii_aliases, :description, :category
24
25
 
25
26
  attr_accessor :unicode_version
26
27
 
@@ -35,6 +36,7 @@ module TanukiEmoji
35
36
  @codepoints_alternates = []
36
37
  @alpha_code = self.class.format_alpha_code(alpha_code)
37
38
  @aliases = []
39
+ @ascii_aliases = []
38
40
  @description = description
39
41
  @category = category
40
42
  end
@@ -53,6 +55,13 @@ module TanukiEmoji
53
55
  aliases << self.class.format_alpha_code(alpha_code)
54
56
  end
55
57
 
58
+ # Add alternative ASCII aliases to this character
59
+ #
60
+ # @param [String] ascii_string
61
+ def add_ascii_alias(ascii_string)
62
+ ascii_aliases << ascii_string
63
+ end
64
+
56
65
  # Return a Hex formatted version of the Unicode code points
57
66
  #
58
67
  # @return [String] Hex formatted version of the unicode
@@ -94,6 +103,7 @@ module TanukiEmoji
94
103
  codepoints_alternates == other.codepoints_alternates &&
95
104
  alpha_code == other.alpha_code &&
96
105
  aliases == other.aliases &&
106
+ ascii_aliases == other.ascii_aliases &&
97
107
  description == other.description
98
108
  end
99
109
 
@@ -41,6 +41,10 @@ module TanukiEmoji
41
41
  emoji.add_alias(alpha_code)
42
42
  end
43
43
 
44
+ emoji_data[:aliases_ascii].each do |ascii_string|
45
+ emoji.add_ascii_alias(ascii_string)
46
+ end
47
+
44
48
  @index.add(emoji)
45
49
  end
46
50
  end
@@ -14,6 +14,7 @@ module TanukiEmoji
14
14
  # Add a new Emoji to the index
15
15
  #
16
16
  # @param [TanukiEmoji::Character] emoji
17
+ # @return [TanukiEmoji::Character]
17
18
  def add(emoji)
18
19
  @name_index ||= {}
19
20
  @alpha_code_index ||= {}
@@ -88,9 +89,14 @@ module TanukiEmoji
88
89
 
89
90
  # Return a regular expression that can be used to search for emoji codepoints
90
91
  #
92
+ # @param [Boolean] exclude_text_presentation exclude codepoints and sequences with text presentation selector
91
93
  # @return [Regexp] regular expression that matches indexed emoji codepoints
92
- def codepoints_pattern
93
- /(#{@codepoints_index.keys.map { |moji| Regexp.escape(moji) }.join('|')})/
94
+ def codepoints_pattern(exclude_text_presentation: false)
95
+ possible_codepoints = sorted_codepoints.map { |moji, _| Regexp.escape(moji) }.join('|')
96
+ variation_selector = ""
97
+ variation_selector = /(?!#{TanukiEmoji::Character::PLAIN_VARIATION_SELECTOR_STRING})/ if exclude_text_presentation
98
+
99
+ /(#{possible_codepoints})#{variation_selector}/
94
100
  end
95
101
 
96
102
  private
@@ -109,5 +115,11 @@ module TanukiEmoji
109
115
  Db::Gemojione.new(index: self).load!
110
116
  Db::UnicodeVersion.new(index: self).load!
111
117
  end
118
+
119
+ # Order the codepoints to match the most specific (longest) sequences first,
120
+ # so #gsub doesn't unintentionally split an emoji from its modifier(s).
121
+ def sorted_codepoints
122
+ @sorted_codepoints ||= @codepoints_index.dup.sort_by { |_, v| -v.hex.length }
123
+ end
112
124
  end
113
125
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TanukiEmoji
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.0"
5
5
  end
data/lib/tanuki_emoji.rb CHANGED
@@ -38,8 +38,15 @@ module TanukiEmoji
38
38
  # @param [String] name
39
39
  # @param [String] codepoints
40
40
  # @param [String] alpha_code
41
- def self.add(name, codepoints:, alpha_code:, description:)
42
- emoji = Character.new(name, codepoints: codepoints, alpha_code: alpha_code, description: description)
41
+ # @param [String] description
42
+ # @param [String] category
43
+ # @return [TanukiEmoji::Character]
44
+ def self.add(name, codepoints:, alpha_code:, description:, category:)
45
+ emoji = Character.new(name,
46
+ codepoints: codepoints,
47
+ alpha_code: alpha_code,
48
+ description: description,
49
+ category: category)
43
50
 
44
51
  index.add(emoji)
45
52
  end
data/tanuki_emoji.gemspec CHANGED
@@ -15,8 +15,9 @@ Gem::Specification.new do |spec|
15
15
  spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
16
16
 
17
17
  spec.metadata['homepage_uri'] = spec.homepage
18
- spec.metadata['source_code_uri'] = 'https://gitlab.com/gitlab-org/tanuki_emoji'
19
- spec.metadata['changelog_uri'] = 'https://gitlab.com/gitlab-org/tanuki_emoji/-/blob/main/CHANGELOG.md'
18
+ spec.metadata['source_code_uri'] = spec.homepage
19
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/-/blob/main/CHANGELOG.md"
20
+ spec.metadata['bug_tracker_uri'] = "#{spec.homepage}/-/issues"
20
21
 
21
22
  # Specify which files should be added to the gem when it is released.
22
23
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -27,4 +28,6 @@ Gem::Specification.new do |spec|
27
28
  git_files + asset_files
28
29
  end
29
30
  spec.require_paths = ['lib']
31
+
32
+ spec.add_development_dependency 'gitlab-dangerfiles', '~> 2.8.0'
30
33
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tanuki_emoji
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Mazetto
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-15 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2022-02-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: gitlab-dangerfiles
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.8.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.8.0
13
27
  description: Tanuki Emoji provides Emoji character information and metadata with support
14
28
  for Noto Emoji resources as fallback
15
29
  email:
@@ -27,6 +41,7 @@ files:
27
41
  - ".ruby-version"
28
42
  - CHANGELOG.md
29
43
  - CONTRIBUTING.md
44
+ - Dangerfile
30
45
  - Gemfile
31
46
  - Gemfile.lock
32
47
  - LICENSE.txt
@@ -1860,7 +1875,8 @@ metadata:
1860
1875
  homepage_uri: https://gitlab.com/gitlab-org/tanuki_emoji
1861
1876
  source_code_uri: https://gitlab.com/gitlab-org/tanuki_emoji
1862
1877
  changelog_uri: https://gitlab.com/gitlab-org/tanuki_emoji/-/blob/main/CHANGELOG.md
1863
- post_install_message:
1878
+ bug_tracker_uri: https://gitlab.com/gitlab-org/tanuki_emoji/-/issues
1879
+ post_install_message:
1864
1880
  rdoc_options: []
1865
1881
  require_paths:
1866
1882
  - lib
@@ -1876,7 +1892,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1876
1892
  version: '0'
1877
1893
  requirements: []
1878
1894
  rubygems_version: 3.1.6
1879
- signing_key:
1895
+ signing_key:
1880
1896
  specification_version: 4
1881
1897
  summary: Tanuki Emoji
1882
1898
  test_files: []