emojidex 0.0.7 → 0.0.9
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 +4 -4
- data/.gitignore +11 -10
- data/.rspec +2 -0
- data/.rubocop.yml +11 -0
- data/.travis.yml +17 -0
- data/Gemfile +16 -10
- data/Guardfile +12 -0
- data/README.md +27 -5
- data/Rakefile +6 -32
- data/emoji/categories.json +64 -0
- data/emojidex.gemspec +13 -20
- data/lib/emojidex.rb +9 -4
- data/lib/emojidex/api/categories.rb +16 -0
- data/lib/emojidex/api/emoji.rb +26 -0
- data/lib/emojidex/api/search/emoji.rb +16 -0
- data/lib/emojidex/cache.rb +69 -0
- data/lib/emojidex/categories.rb +32 -0
- data/lib/emojidex/category.rb +14 -0
- data/lib/emojidex/client.rb +60 -0
- data/lib/emojidex/collection.rb +119 -0
- data/lib/emojidex/defaults.rb +13 -0
- data/lib/emojidex/emoji.rb +74 -0
- data/lib/emojidex/error.rb +15 -0
- data/lib/emojidex/extended.rb +15 -0
- data/lib/emojidex/service.rb +32 -0
- data/lib/emojidex/utf.rb +15 -0
- data/spec/api/categories_spec.rb +49 -0
- data/spec/api/emoji_spec.rb +89 -0
- data/spec/api/search/emoji_spec.rb +30 -0
- data/spec/categories_spec.rb +18 -0
- data/spec/client_spec.rb +24 -0
- data/spec/emoji_spec.rb +63 -0
- data/spec/extended_spec.rb +107 -0
- data/spec/spec_helper.rb +64 -0
- data/spec/support/Genshin.svg +126 -0
- data/spec/support/couple_kiss/0.svg +177 -0
- data/spec/support/couple_kiss/1.svg +177 -0
- data/spec/support/couple_kiss/10.svg +293 -0
- data/spec/support/couple_kiss/11.svg +235 -0
- data/spec/support/couple_kiss/12.svg +235 -0
- data/spec/support/couple_kiss/13.svg +235 -0
- data/spec/support/couple_kiss/14.svg +177 -0
- data/spec/support/couple_kiss/15.svg +177 -0
- data/spec/support/couple_kiss/2.svg +177 -0
- data/spec/support/couple_kiss/3.svg +235 -0
- data/spec/support/couple_kiss/4.svg +235 -0
- data/spec/support/couple_kiss/5.svg +235 -0
- data/spec/support/couple_kiss/6.svg +293 -0
- data/spec/support/couple_kiss/7.svg +235 -0
- data/spec/support/couple_kiss/8.svg +235 -0
- data/spec/support/couple_kiss/9.svg +235 -0
- data/spec/support/couple_kiss/animation.json +14 -0
- data/spec/support/fixtures/categories.json +14 -0
- data/spec/support/fixtures/category.json +5 -0
- data/spec/support/fixtures/emoji.json +28 -0
- data/spec/support/fixtures/emoji_detailed.json +41 -0
- data/spec/support/fixtures/search_emoji.json +21 -0
- data/spec/support/fixtures/single_emoji.json +19 -0
- data/spec/support/fixtures/single_emoji_detailed.json +30 -0
- data/spec/support/test1/animation.json +6 -0
- data/spec/support/test2/animation.json +6 -0
- data/spec/support/test3/animation.json +5 -0
- data/spec/utf_spec.rb +66 -0
- metadata +82 -104
- data/app/assets/images/emojidex/.keep +0 -0
- data/app/assets/images/emojidex/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/emojidex/glyphicons-halflings.png +0 -0
- data/app/assets/javascripts/emojidex/application.js +0 -14
- data/app/assets/javascripts/emojidex/bootstrap.min.js +0 -7
- data/app/assets/javascripts/emojidex/cheat_sheet.js +0 -12
- data/app/assets/javascripts/emojidex/poe_pallet.js +0 -71
- data/app/assets/stylesheets/emojidex/application.css +0 -15
- data/app/assets/stylesheets/emojidex/bootstrap-responsive.min.css +0 -9
- data/app/assets/stylesheets/emojidex/bootstrap.min.css +0 -9
- data/app/assets/stylesheets/emojidex/cheat_sheet.css +0 -41
- data/app/controllers/emojidex/application_controller.rb +0 -7
- data/app/controllers/emojidex/cheat_sheet_controller.rb +0 -50
- data/app/helpers/emojidex/application_helper.rb +0 -4
- data/app/helpers/emojidex/cheat_sheet_helper.rb +0 -4
- data/app/views/emojidex/cheat_sheet/index.html.erb +0 -58
- data/app/views/layouts/emojidex/application.html.erb +0 -14
- data/bin/rails +0 -8
- data/config/routes.rb +0 -5
- data/lib/emojidex/engine.rb +0 -5
- data/lib/emojidex/version.rb +0 -3
- data/lib/generators/emojidex/install/install_generator.rb +0 -35
- data/lib/tasks/emojidex_tasks.rake +0 -4
- data/test/controllers/emojidex/cheat_sheet_controller_test.rb +0 -11
- data/test/dummy/README.rdoc +0 -28
- data/test/dummy/Rakefile +0 -6
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +0 -13
- data/test/dummy/app/assets/stylesheets/application.css +0 -13
- data/test/dummy/app/controllers/application_controller.rb +0 -5
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +0 -2
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/test/dummy/bin/bundle +0 -3
- data/test/dummy/bin/rails +0 -4
- data/test/dummy/bin/rake +0 -4
- data/test/dummy/config.ru +0 -4
- data/test/dummy/config/application.rb +0 -23
- data/test/dummy/config/boot.rb +0 -5
- data/test/dummy/config/database.yml +0 -25
- data/test/dummy/config/environment.rb +0 -5
- data/test/dummy/config/environments/development.rb +0 -29
- data/test/dummy/config/environments/production.rb +0 -80
- data/test/dummy/config/environments/test.rb +0 -36
- data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
- data/test/dummy/config/initializers/inflections.rb +0 -16
- data/test/dummy/config/initializers/mime_types.rb +0 -5
- data/test/dummy/config/initializers/secret_token.rb +0 -12
- data/test/dummy/config/initializers/session_store.rb +0 -3
- data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/test/dummy/config/locales/en.yml +0 -23
- data/test/dummy/config/routes.rb +0 -4
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +0 -58
- data/test/dummy/public/422.html +0 -58
- data/test/dummy/public/500.html +0 -57
- data/test/dummy/public/favicon.ico +0 -0
- data/test/emojidex_test.rb +0 -7
- data/test/helpers/emojidex/cheat_sheet_helper_test.rb +0 -6
- data/test/integration/navigation_test.rb +0 -10
- data/test/test_helper.rb +0 -15
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Emojidex::API::Emoji do
|
|
4
|
+
subject { Emojidex::Client.new(host: 'http://localhost') }
|
|
5
|
+
let!(:api_url) { 'http://localhost/api/v1' }
|
|
6
|
+
|
|
7
|
+
describe '#emoji' do
|
|
8
|
+
before do
|
|
9
|
+
stub_get("#{api_url}/emoji.json")
|
|
10
|
+
.to_return(
|
|
11
|
+
body: fixture('emoji.json'),
|
|
12
|
+
headers: { content_type: 'application/json' }
|
|
13
|
+
)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'requests the correct resource' do
|
|
17
|
+
subject.emoji
|
|
18
|
+
expect(a_get("#{api_url}/emoji.json")).to have_been_made
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'returns the requested emoji' do
|
|
22
|
+
emoji = subject.emoji
|
|
23
|
+
expect(emoji).to be_an Array
|
|
24
|
+
expect(emoji.first).to be_a Hash
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe '#emoji_detailed' do
|
|
29
|
+
before do
|
|
30
|
+
stub_get("#{api_url}/emoji/detailed.json")
|
|
31
|
+
.to_return(
|
|
32
|
+
body: fixture('emoji_detailed.json'),
|
|
33
|
+
headers: { content_type: 'application/json' }
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'requests the correct resource' do
|
|
38
|
+
subject.emoji_detailed
|
|
39
|
+
expect(a_get("#{api_url}/emoji/detailed.json")).to have_been_made
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it 'returns the requested emoji' do
|
|
43
|
+
emoji = subject.emoji_detailed
|
|
44
|
+
expect(emoji).to be_an Array
|
|
45
|
+
expect(emoji.first).to be_a Hash
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe '#single_emoji' do
|
|
50
|
+
before do
|
|
51
|
+
stub_get("#{api_url}/emoji/emoji.json")
|
|
52
|
+
.to_return(
|
|
53
|
+
body: fixture('single_emoji.json'),
|
|
54
|
+
headers: { content_type: 'application/json' }
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'requests the correct resource' do
|
|
59
|
+
subject.single_emoji
|
|
60
|
+
expect(a_get("#{api_url}/emoji/emoji.json")).to have_been_made
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it 'returns the requested emoji' do
|
|
64
|
+
emoji = subject.single_emoji
|
|
65
|
+
expect(emoji).to be_a Hash
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
describe '#single_emoji_detailed' do
|
|
70
|
+
before do
|
|
71
|
+
stub_get("#{api_url}/emoji/1/detailed.json")
|
|
72
|
+
.to_return(
|
|
73
|
+
body: fixture('single_emoji_detailed.json'),
|
|
74
|
+
headers: { content_type: 'application/json' }
|
|
75
|
+
)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'requests the correct resource' do
|
|
79
|
+
subject.single_emoji_detailed
|
|
80
|
+
expect(a_get("#{api_url}/emoji/1/detailed.json")).to have_been_made
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it 'returns the requested emoji' do
|
|
84
|
+
emoji = subject.single_emoji_detailed
|
|
85
|
+
expect(emoji).to be_a Hash
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Emojidex::API::Search::Emoji do
|
|
4
|
+
subject { Emojidex::Client.new(host: 'http://localhost') }
|
|
5
|
+
let!(:api_url) { 'http://localhost/api/v1' }
|
|
6
|
+
|
|
7
|
+
describe '#emoji' do
|
|
8
|
+
before do
|
|
9
|
+
stub_get("#{api_url}/search/emoji.json")
|
|
10
|
+
.with(query: { 'q[code_cont]' => 't' })
|
|
11
|
+
.to_return(
|
|
12
|
+
body: fixture('search_emoji.json'),
|
|
13
|
+
headers: { content_type: 'application/json' }
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'requests the correct resource' do
|
|
18
|
+
subject.emoji_code_cont('t')
|
|
19
|
+
expect(a_get("#{api_url}/search/emoji.json")
|
|
20
|
+
.with(query: { 'q[code_cont]' => 't' })).to have_been_made
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'returns the requested search' do
|
|
24
|
+
results = subject.emoji_code_cont('t')
|
|
25
|
+
expect(results).to be_an Array
|
|
26
|
+
expect(results.first).to be_a Hash
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Emojidex::Categories do
|
|
4
|
+
let(:categories) { Emojidex::Categories.new }
|
|
5
|
+
|
|
6
|
+
describe '.initialize' do
|
|
7
|
+
it 'initializes a new categories object' do
|
|
8
|
+
expect(categories).to be_an_instance_of(Emojidex::Categories)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe '.category' do
|
|
13
|
+
it 'is a proper hash and can be referenced by key' do
|
|
14
|
+
expect(categories.categories[:transportation].en).to eq('Transportation')
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
data/spec/client_spec.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Emojidex::Client do
|
|
4
|
+
|
|
5
|
+
describe 'initialize' do
|
|
6
|
+
it 'sets default host' do
|
|
7
|
+
client = Emojidex::Client.new
|
|
8
|
+
expect(client.host).to eq 'https://www.emojidex.com/'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'sets custom host' do
|
|
12
|
+
client = Emojidex::Client.new(host: 'example.com')
|
|
13
|
+
expect(client.host).to eq 'example.com'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe 'user_agent' do
|
|
18
|
+
it 'sets user_agent' do
|
|
19
|
+
client = Emojidex::Client.new
|
|
20
|
+
expect(client.user_agent).to eq 'Emojidex Toolkit Client'
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
data/spec/emoji_spec.rb
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Emojidex::Emoji do
|
|
6
|
+
let(:emoji) do
|
|
7
|
+
Emojidex::Emoji.new moji: '🌠', code: 'shooting_star',
|
|
8
|
+
code_ja: '流れ星', category: 'cosmos',
|
|
9
|
+
unicode: '1f320', uri: '/dummy/uri'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe '.to_s' do
|
|
13
|
+
it 'outputs UTF moji when present' do
|
|
14
|
+
expect(emoji.to_s).to eq('🌠')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'outputs emoji code when UTF is not present' do
|
|
18
|
+
emoji.moji = nil
|
|
19
|
+
expect(emoji.to_s).to eq(':shooting_star:')
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '.to_hash' do
|
|
24
|
+
it 'gets a hash containing emoji info' do
|
|
25
|
+
expect(emoji.to_hash).to be_an_instance_of(Hash)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '[]' do
|
|
30
|
+
it 'acts like hash for lookup by key' do
|
|
31
|
+
expect(emoji[:moji]).to eq(emoji.moji)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe '[]=' do
|
|
36
|
+
it 'assigns a value in a hash by a key' do
|
|
37
|
+
emoji[:code] = 'star_shot'
|
|
38
|
+
expect(emoji.code).to eq('star_shot')
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe '.to_json' do
|
|
43
|
+
it 'outputs JSON info from the emoji' do
|
|
44
|
+
expect(JSON.parse(emoji.to_json)).to be_an_instance_of(Hash)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe '.frames' do
|
|
49
|
+
it 'holds an array of source frames' do
|
|
50
|
+
expect(emoji.frames).to be_an_instance_of(Array)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe '.delays' do
|
|
55
|
+
it 'holds an array of delays between frames' do
|
|
56
|
+
expect(emoji.delays).to be_an_instance_of(Array)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it 'defaults to 100ms when nothing is specified' do
|
|
60
|
+
expect(emoji.delays[0]).to eq(100)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe Emojidex::Extended do
|
|
6
|
+
let(:ext) { Emojidex::Extended.new }
|
|
7
|
+
|
|
8
|
+
describe '.each' do
|
|
9
|
+
it 'provides each emoji' do
|
|
10
|
+
ext.each do |emoji|
|
|
11
|
+
expect(emoji).to be_an_instance_of(Emojidex::Emoji)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe 'find_by_code' do
|
|
17
|
+
it 'finds and returns an emoji by code' do
|
|
18
|
+
expect(ext.find_by_code('combat_knife'))
|
|
19
|
+
.to be_an_instance_of(Emojidex::Emoji)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'finds and returns an emoji by code, converting spaces to underscores' do
|
|
23
|
+
expect(ext.find_by_code('combat knife'))
|
|
24
|
+
.to be_an_instance_of(Emojidex::Emoji)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'returns nil when a code does not exist' do
|
|
28
|
+
expect(ext.find_by_code('super_fantastic')).to be_nil
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe 'find_by_code_ja' do
|
|
33
|
+
it 'finds and returns an emoji by Japanese code' do
|
|
34
|
+
expect(ext.find_by_code_ja('ユニコーン'))
|
|
35
|
+
.to be_an_instance_of(Emojidex::Emoji)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe 'コード検索' do
|
|
40
|
+
it 'find_by_code_jaをaliasして日本語の絵文字コードで検索する' do
|
|
41
|
+
expect(ext.コード検索('ユニコーン')).to be_an_instance_of(Emojidex::Emoji)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe 'category' do
|
|
46
|
+
it 'returns a collection of the specificed category' do
|
|
47
|
+
expect(categorized = ext.category(:tools)).to be_an_instance_of(Emojidex::Collection)
|
|
48
|
+
expect(categorized.emoji.count).to be > 1
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe 'category?' do
|
|
53
|
+
it 'returns true when collection contains emoji in that category' do
|
|
54
|
+
expect(ext.category?(:tools)).to be true
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'returns false when collection does not contain emoji in that category' do
|
|
58
|
+
expect(ext.category?(:this_is_a_fake_category_do_not_use)).to be false
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'returns true when collection contains emoji in multple categories' do
|
|
62
|
+
expect(ext.category?(:tools, :abstract)).to be true
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'returns false when collection does not contain emoji in one or more categories' do
|
|
66
|
+
expect(ext.category?(:tools, :this_is_a_fake_category_do_not_use)).to be false
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe 'categories' do
|
|
71
|
+
it 'is an array of categories which contain emoji in this collection' do
|
|
72
|
+
expect(ext.categories).to be_an_instance_of(Array)
|
|
73
|
+
expect(ext.categories.length).to be > 1
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe 'emoji.tags' do
|
|
78
|
+
it 'some emoji should have tags' do
|
|
79
|
+
expect(ext.emoji[:assault_rifle].tags.length).to be > 1
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it 'tags should be an array of symbols' do
|
|
83
|
+
expect(ext.emoji[:assault_rifle].tags.include? :weapon).to be true
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe 'search' do
|
|
88
|
+
it 'searches for an emoji with a set of options' do
|
|
89
|
+
expect(ext.search(code: 'apple', category: 'abstract').emoji.count).to be >= 1
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'searches, returning an empty collection when none are found' do
|
|
93
|
+
expect(ext.search(code: 'fake_emoji', category: 'abstract').emoji.count).to be == 0
|
|
94
|
+
expect(ext.search(code: 'apple', category: 'fake_category').emoji.count).to be == 0
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it 'returns all emoji containing the search term as a substring' do
|
|
98
|
+
expect(ext.search(code: 'round', category: 'symbols').emoji.count).to be > 12
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'evaluates regular expressions' do
|
|
102
|
+
col = ext.search(code: 'Taurus.(?!round).+', category: 'symbols')
|
|
103
|
+
expect(col.find_by_code('Taurus_plain')).to be_an_instance_of Emojidex::Emoji
|
|
104
|
+
expect(col.find_by_code('Taurus_round')).to be_nil
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# require "codeclimate-test-reporter"
|
|
2
|
+
# CodeClimate::TestReporter.start
|
|
3
|
+
|
|
4
|
+
require 'rspec'
|
|
5
|
+
require 'webmock/rspec'
|
|
6
|
+
require 'emojidex'
|
|
7
|
+
require 'emojidex/vectors'
|
|
8
|
+
|
|
9
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
|
10
|
+
|
|
11
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
|
12
|
+
|
|
13
|
+
if ENV['TRAVIS'] || ENV['COVERAGE']
|
|
14
|
+
require 'simplecov'
|
|
15
|
+
|
|
16
|
+
if ENV['TRAVIS']
|
|
17
|
+
require 'coveralls'
|
|
18
|
+
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
SimpleCov.start do
|
|
22
|
+
add_filter '/spec/'
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def a_delete(path)
|
|
27
|
+
a_request(:delete, path)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def a_get(path)
|
|
31
|
+
a_request(:get, path)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def a_post(path)
|
|
35
|
+
a_request(:post, path)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def a_put(path)
|
|
39
|
+
a_request(:put, path)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def stub_delete(path)
|
|
43
|
+
stub_request(:delete, path)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def stub_get(path)
|
|
47
|
+
stub_request(:get, path)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def stub_post(path)
|
|
51
|
+
stub_request(:post, path)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def stub_put(path)
|
|
55
|
+
stub_request(:put, path)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def fixture_path
|
|
59
|
+
File.expand_path('../support/fixtures', __FILE__)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def fixture(file)
|
|
63
|
+
File.new(fixture_path + '/' + file)
|
|
64
|
+
end
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
10
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
11
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
12
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
13
|
+
width="64px"
|
|
14
|
+
height="64px"
|
|
15
|
+
id="svg3713"
|
|
16
|
+
version="1.1"
|
|
17
|
+
inkscape:version="0.48.2 r9819"
|
|
18
|
+
sodipodi:docname="genshin-logo-revised-s2.svg"
|
|
19
|
+
inkscape:export-filename="/home/zero/デスクトップ/genshin-logo-revised-s2.png"
|
|
20
|
+
inkscape:export-xdpi="90.349998"
|
|
21
|
+
inkscape:export-ydpi="90.349998">
|
|
22
|
+
<defs
|
|
23
|
+
id="defs3715">
|
|
24
|
+
<linearGradient
|
|
25
|
+
id="linearGradient4528">
|
|
26
|
+
<stop
|
|
27
|
+
style="stop-color:#d70b3a;stop-opacity:1;"
|
|
28
|
+
offset="0"
|
|
29
|
+
id="stop4530" />
|
|
30
|
+
<stop
|
|
31
|
+
style="stop-color:#d70b3a;stop-opacity:0;"
|
|
32
|
+
offset="1"
|
|
33
|
+
id="stop4532" />
|
|
34
|
+
</linearGradient>
|
|
35
|
+
<radialGradient
|
|
36
|
+
inkscape:collect="always"
|
|
37
|
+
xlink:href="#linearGradient4528"
|
|
38
|
+
id="radialGradient4534"
|
|
39
|
+
cx="31.954546"
|
|
40
|
+
cy="32.045456"
|
|
41
|
+
fx="31.954546"
|
|
42
|
+
fy="32.045456"
|
|
43
|
+
r="31.863636"
|
|
44
|
+
gradientUnits="userSpaceOnUse"
|
|
45
|
+
gradientTransform="matrix(0.9985415,-1.6601007e-5,1.6156097e-5,0.97684882,0.04608723,0.74242019)" />
|
|
46
|
+
</defs>
|
|
47
|
+
<sodipodi:namedview
|
|
48
|
+
id="base"
|
|
49
|
+
pagecolor="#ffffff"
|
|
50
|
+
bordercolor="#666666"
|
|
51
|
+
borderopacity="1.0"
|
|
52
|
+
inkscape:pageopacity="0.0"
|
|
53
|
+
inkscape:pageshadow="2"
|
|
54
|
+
inkscape:zoom="5.6568543"
|
|
55
|
+
inkscape:cx="-54.952613"
|
|
56
|
+
inkscape:cy="18.847043"
|
|
57
|
+
inkscape:current-layer="g3"
|
|
58
|
+
showgrid="true"
|
|
59
|
+
inkscape:document-units="px"
|
|
60
|
+
inkscape:grid-bbox="true"
|
|
61
|
+
inkscape:window-width="1920"
|
|
62
|
+
inkscape:window-height="999"
|
|
63
|
+
inkscape:window-x="0"
|
|
64
|
+
inkscape:window-y="26"
|
|
65
|
+
inkscape:window-maximized="1" />
|
|
66
|
+
<metadata
|
|
67
|
+
id="metadata3718">
|
|
68
|
+
<rdf:RDF>
|
|
69
|
+
<cc:Work
|
|
70
|
+
rdf:about="">
|
|
71
|
+
<dc:format>image/svg+xml</dc:format>
|
|
72
|
+
<dc:type
|
|
73
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
74
|
+
<dc:title></dc:title>
|
|
75
|
+
</cc:Work>
|
|
76
|
+
</rdf:RDF>
|
|
77
|
+
</metadata>
|
|
78
|
+
<g
|
|
79
|
+
id="layer1"
|
|
80
|
+
inkscape:label="Layer 1"
|
|
81
|
+
inkscape:groupmode="layer">
|
|
82
|
+
<g
|
|
83
|
+
transform="matrix(0.57354429,0,0,0.57354429,-9.3948988,-4.8771052)"
|
|
84
|
+
id="g3"
|
|
85
|
+
style="fill:#eaf4fc;fill-opacity:1"
|
|
86
|
+
inkscape:export-filename="/home/zero/repo/genshin.org/public/images/logo.png"
|
|
87
|
+
inkscape:export-xdpi="899.45599"
|
|
88
|
+
inkscape:export-ydpi="899.45599">
|
|
89
|
+
<path
|
|
90
|
+
style="fill:#000b00;fill-opacity:1"
|
|
91
|
+
inkscape:connector-curvature="0"
|
|
92
|
+
d="M 25.836,60.884 C 24.166,40.446 48.553,29.302 56.569,21.716 -18.048,34.763 21.127285,141.272 92.968,116.101 55.66,114.913 61,104.364 53.038,102.823 34.947,99.318 23.875,84.208 23.875,77.524 c 0,-5.82 3.127,-11.227 1.961,-16.64 z"
|
|
93
|
+
id="path5"
|
|
94
|
+
sodipodi:nodetypes="ccccsc" />
|
|
95
|
+
<path
|
|
96
|
+
style="fill:#000b00;fill-opacity:1"
|
|
97
|
+
inkscape:connector-curvature="0"
|
|
98
|
+
d="m 113.716,93.582 c -2.866,6.521 -6.899,12.655 -12.102,18.097 14.903,-9.178 23.524,-23.791 25.886,-39.501 -2.569,7.972 -7.767,15.337 -13.784,21.404 z"
|
|
99
|
+
id="path7" />
|
|
100
|
+
<path
|
|
101
|
+
style="fill:#000b00;fill-opacity:1"
|
|
102
|
+
inkscape:connector-curvature="0"
|
|
103
|
+
d="M 103.22,17.748 C 90.066,15.033 74.921,11.61 64.736,17.282 47.742,14.826 29.859,28.196 27.575,30.997 49.169,1.381 87.748,5.928 103.22,17.748 z"
|
|
104
|
+
id="path9" />
|
|
105
|
+
</g>
|
|
106
|
+
<g
|
|
107
|
+
transform="matrix(0.57354429,0,0,0.57354429,-9.3948988,-4.8771052)"
|
|
108
|
+
id="g19"
|
|
109
|
+
style="fill:#d7003a;fill-opacity:1"
|
|
110
|
+
inkscape:export-filename="/home/zero/repo/genshin.org/public/images/logo.png"
|
|
111
|
+
inkscape:export-xdpi="899.45599"
|
|
112
|
+
inkscape:export-ydpi="899.45599">
|
|
113
|
+
<path
|
|
114
|
+
style="fill:#d7003a;fill-opacity:1"
|
|
115
|
+
inkscape:connector-curvature="0"
|
|
116
|
+
d="M 51.111,43.19 C 58.462774,38.269206 66.017957,33.761108 74,28.841 l 0,-4.095 c -8.247318,5.125197 -15.321401,9.30897 -22.829,14.275 -8.797,5.749 -14.357,9.711 -14.357,16.446 0,5.879 4.211,9.647 11.136,14.334 C 46.919651,70.483832 45.873425,71.246791 45,71.879 40,75.676 36.801,79 36.801,84 l -0.004,0 -10e-4,-0.047 c 0,0.011 0.003,4.047 4.094,4.047 4.095,0 20.477,0 20.477,0 0,0 2.566,-0.008 3.633,-1.999 l 0,16.469 c 0,0 9,-4.095 9,-12.287 0,-8.191 0,-15.061 0,-15.061 C 74,75.122 73.654,71 69.558,71 65.462,71 65,71 65,71 l 0,13 -20.016,0 c 0,-6 0.007,-7.794 6.247,-12.221 2.081315,-1.349288 4.033477,-2.724396 5.769,-4.064 5,-3.797 8,-7.267 8,-12.252 L 65,51 57,51 c -0.07924,1.223929 0.04302,3.037425 0.136,4 0,7 0.061,8.075 -6.077,12.445 -6.143,-4.371 -6.109,-5.598 -6.109,-12.099 0,-6.501 0.017,-7.784 6.161,-12.156 z"
|
|
117
|
+
id="path21"
|
|
118
|
+
sodipodi:nodetypes="ccccscccccscccscsccccccsccccc" />
|
|
119
|
+
<path
|
|
120
|
+
style="fill:#d7003a;fill-opacity:1"
|
|
121
|
+
inkscape:connector-curvature="0"
|
|
122
|
+
d="m 116.841,37 c 0,0 -0.08,-4.199 -4.175,-4.199 -4.096,0 -4.142,-0.052 -16.428,8.14 C 92.937,43.141 90,44.684 88,45.861 V 27.106 C 88,27.106 88.014,23 83.917,23 80.264,23 80.012,23 80,23 v 26 4.176 c 4,0 3.761,0 16.048,-8.191 7.257,-4.838 9.952,-6.818 11.952,-7.629 0,3.689 0,24.739 0,32.203 0,8.19 0.358,8.19 -11.928,16.381 C 83.785,94.132 78,98.228 78,98.228 v 4.095 c 0,0 6.189,-4.095 18.477,-12.288 C 108.763,81.844 117,77.749 117,69.558 117,61.366 117,37 117,37 h -0.159 z"
|
|
123
|
+
id="path23" />
|
|
124
|
+
</g>
|
|
125
|
+
</g>
|
|
126
|
+
</svg>
|