emoja 0.1.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.
- checksums.yaml +7 -0
- data/.github/workflows/test.yml +23 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +35 -0
- data/LICENSE.txt +21 -0
- data/README.md +17 -0
- data/Rakefile +8 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/emoja.gemspec +38 -0
- data/lib/data/emoji_ja.json +18403 -0
- data/lib/emoja.rb +67 -0
- data/lib/emoja/version.rb +3 -0
- data/tasks/data.rake +17 -0
- metadata +104 -0
data/lib/emoja.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'emoja/version'
|
3
|
+
|
4
|
+
module Emoja
|
5
|
+
Meta = Struct.new(:emoji, :keywords, :short_name, :group, :subgroup)
|
6
|
+
|
7
|
+
class Dictionary
|
8
|
+
def find(emoji)
|
9
|
+
data[emoji]
|
10
|
+
end
|
11
|
+
|
12
|
+
def search(keyword)
|
13
|
+
keyword_data[keyword] || []
|
14
|
+
end
|
15
|
+
|
16
|
+
def emoji_list
|
17
|
+
data.keys
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def data
|
23
|
+
@data ||= JSON.load(File.open('lib/data/emoji_ja.json')).map do |emoji, meta|
|
24
|
+
[emoji, Meta.new(emoji, meta['keywords'], meta['short_name'], meta['group'], meta['subgroup'])]
|
25
|
+
end.to_h
|
26
|
+
end
|
27
|
+
|
28
|
+
def keyword_data
|
29
|
+
return @keyword_data if @keyword_data
|
30
|
+
@keyword_data = {}
|
31
|
+
data.each do |emoji, meta|
|
32
|
+
meta.keywords.each do |k|
|
33
|
+
@keyword_data[k] ||= []
|
34
|
+
@keyword_data[k] << meta
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@keyword_data
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class << self
|
42
|
+
|
43
|
+
# @param text [String]
|
44
|
+
def translate(text)
|
45
|
+
text.chars.map do |c|
|
46
|
+
meta = dictionary.find(c)
|
47
|
+
meta ? meta.short_name : c
|
48
|
+
end.join
|
49
|
+
end
|
50
|
+
|
51
|
+
# @param keyword [String]
|
52
|
+
def search(keyword)
|
53
|
+
dictionary.search(keyword).map(&:emoji)
|
54
|
+
end
|
55
|
+
|
56
|
+
# @param text [String]
|
57
|
+
def include_emoji?(text)
|
58
|
+
!(text.chars & dictionary.emoji_list).empty?
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
def dictionary
|
64
|
+
@dictionary ||= Dictionary.new
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/tasks/data.rake
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
namespace :data do
|
4
|
+
desc 'Fetch emoji dictionaries'
|
5
|
+
task :fetch do
|
6
|
+
base_uri = URI('https://raw.githubusercontent.com/yagays/emoji-ja/master/data/')
|
7
|
+
[
|
8
|
+
'emoji_ja.json',
|
9
|
+
# 'group2emoji_ja.json',
|
10
|
+
# 'keyword2emoji_ja.json',
|
11
|
+
].each do |file|
|
12
|
+
File.open("lib/data/#{file}", 'w') do |f|
|
13
|
+
f.write Net::HTTP.get(base_uri + file)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: emoja
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Daiki Matoba
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-02-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.17'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.17'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
description: ''
|
56
|
+
email:
|
57
|
+
- telnetstat@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".github/workflows/test.yml"
|
63
|
+
- ".gitignore"
|
64
|
+
- ".rspec"
|
65
|
+
- ".travis.yml"
|
66
|
+
- Gemfile
|
67
|
+
- Gemfile.lock
|
68
|
+
- LICENSE.txt
|
69
|
+
- README.md
|
70
|
+
- Rakefile
|
71
|
+
- bin/console
|
72
|
+
- bin/setup
|
73
|
+
- emoja.gemspec
|
74
|
+
- lib/data/emoji_ja.json
|
75
|
+
- lib/emoja.rb
|
76
|
+
- lib/emoja/version.rb
|
77
|
+
- tasks/data.rake
|
78
|
+
homepage: https://github.com/d-mato/emoja
|
79
|
+
licenses:
|
80
|
+
- MIT
|
81
|
+
metadata:
|
82
|
+
homepage_uri: https://github.com/d-mato/emoja
|
83
|
+
source_code_uri: https://github.com/d-mato/emoja
|
84
|
+
changelog_uri: https://github.com/d-mato/emoja
|
85
|
+
post_install_message:
|
86
|
+
rdoc_options: []
|
87
|
+
require_paths:
|
88
|
+
- lib
|
89
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
requirements: []
|
100
|
+
rubygems_version: 3.0.3
|
101
|
+
signing_key:
|
102
|
+
specification_version: 4
|
103
|
+
summary: ''
|
104
|
+
test_files: []
|