chgk_rating 1.0.0.rc1 → 1.0.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 +4 -4
- data/.github/ISSUE_TEMPLATE.md +12 -12
- data/.github/PULL_REQUEST_TEMPLATE.md +10 -10
- data/CHANGELOG.md +7 -0
- data/Gemfile +2 -6
- data/LICENSE +21 -21
- data/README.md +2 -1
- data/Rakefile +12 -12
- data/chgk_rating.gemspec +28 -28
- data/lib/chgk_rating.rb +51 -52
- data/lib/chgk_rating/attribute_mappings.rb +138 -137
- data/lib/chgk_rating/chgk_object.rb +12 -12
- data/lib/chgk_rating/client.rb +172 -172
- data/lib/chgk_rating/collections/base.rb +78 -78
- data/lib/chgk_rating/collections/players.rb +16 -16
- data/lib/chgk_rating/collections/ratings.rb +22 -22
- data/lib/chgk_rating/collections/recaps.rb +24 -24
- data/lib/chgk_rating/collections/teams.rb +16 -16
- data/lib/chgk_rating/collections/tournament_players.rb +23 -23
- data/lib/chgk_rating/collections/tournament_team_results.rb +23 -23
- data/lib/chgk_rating/collections/tournament_teams.rb +21 -21
- data/lib/chgk_rating/collections/tournaments.rb +46 -46
- data/lib/chgk_rating/concerns/searching.rb +24 -20
- data/lib/chgk_rating/connection.rb +18 -18
- data/lib/chgk_rating/error.rb +45 -45
- data/lib/chgk_rating/models/base.rb +89 -89
- data/lib/chgk_rating/models/player.rb +10 -10
- data/lib/chgk_rating/models/rating.rb +18 -18
- data/lib/chgk_rating/models/recap.rb +18 -18
- data/lib/chgk_rating/models/team.rb +61 -61
- data/lib/chgk_rating/models/tournament.rb +45 -45
- data/lib/chgk_rating/models/tournament_player.rb +7 -7
- data/lib/chgk_rating/models/tournament_team.rb +28 -28
- data/lib/chgk_rating/models/tournament_team_result.rb +7 -7
- data/lib/chgk_rating/request.rb +31 -31
- data/lib/chgk_rating/utils/snakecase.rb +15 -15
- data/lib/chgk_rating/utils/transformations.rb +82 -82
- data/lib/chgk_rating/version.rb +2 -2
- data/lib/ext/date.rb +10 -10
- data/lib/ext/date_time.rb +4 -4
- data/lib/ext/uri.rb +8 -8
- data/spec/lib/chgk_rating/client_spec.rb +207 -197
- data/spec/lib/chgk_rating/collections/players_spec.rb +44 -44
- data/spec/lib/chgk_rating/collections/ratings_spec.rb +24 -24
- data/spec/lib/chgk_rating/collections/recaps_spec.rb +20 -20
- data/spec/lib/chgk_rating/collections/teams_spec.rb +41 -41
- data/spec/lib/chgk_rating/collections/tournament_players_spec.rb +17 -17
- data/spec/lib/chgk_rating/collections/tournament_team_results_spec.rb +16 -16
- data/spec/lib/chgk_rating/collections/tournament_teams_spec.rb +59 -57
- data/spec/lib/chgk_rating/collections/tournaments_spec.rb +61 -61
- data/spec/lib/chgk_rating/models/base_spec.rb +33 -33
- data/spec/lib/chgk_rating/models/player_spec.rb +34 -34
- data/spec/lib/chgk_rating/models/rating_spec.rb +26 -26
- data/spec/lib/chgk_rating/models/recap_spec.rb +34 -34
- data/spec/lib/chgk_rating/models/team_spec.rb +88 -88
- data/spec/lib/chgk_rating/models/tournament_player_spec.rb +20 -20
- data/spec/lib/chgk_rating/models/tournament_spec.rb +91 -91
- data/spec/lib/chgk_rating/models/tournament_team_result_spec.rb +18 -18
- data/spec/lib/chgk_rating/models/tournament_team_spec.rb +35 -35
- data/spec/lib/chgk_rating/utils/snakecase_spec.rb +11 -11
- data/spec/lib/chgk_rating/utils/transformations_spec.rb +15 -15
- data/spec/lib/chgk_rating_spec.rb +4 -4
- data/spec/lib/ext/date_spec.rb +6 -6
- data/spec/lib/ext/date_time_spec.rb +10 -10
- data/spec/lib/ext/uri_spec.rb +6 -6
- data/spec/spec_helper.rb +12 -12
- data/spec/support/shared_examples.rb +62 -62
- data/spec/support/test_client.rb +5 -5
- data/spec/support/vcr.rb +10 -9
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c1f40e4500f25b4c4fa174235cdfb13a5d5262800d7128ab412f50e85efcb2e3
|
|
4
|
+
data.tar.gz: 65054a1c6ec251becfbc8a5fb73a221aa36ff2841c097d921464eeebc942b11b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f045d2354e6f6f35cf1486611bbe3954bf5e400914c71fa7c1a47154542aa197cf9b61a0dba0334840f318b1d02a890dc426f7a09bd444ab1715ab2e9c2f61c8
|
|
7
|
+
data.tar.gz: c93f31ee95abe8900dce72730fda98a18f09737fa4b29026df0d6d077d8e1692b60c3302109c06c6d35a33db1c1e17380cc9746a0cf5fa31cafce419b040c888
|
data/.github/ISSUE_TEMPLATE.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
### Steps to reproduce
|
|
2
|
-
|
|
3
|
-
### Expected behavior
|
|
4
|
-
|
|
5
|
-
Tell us what should happen
|
|
6
|
-
|
|
7
|
-
### Actual behavior
|
|
8
|
-
|
|
9
|
-
Tell us what happens instead
|
|
10
|
-
|
|
11
|
-
### System configuration
|
|
12
|
-
|
|
1
|
+
### Steps to reproduce
|
|
2
|
+
|
|
3
|
+
### Expected behavior
|
|
4
|
+
|
|
5
|
+
Tell us what should happen
|
|
6
|
+
|
|
7
|
+
### Actual behavior
|
|
8
|
+
|
|
9
|
+
Tell us what happens instead
|
|
10
|
+
|
|
11
|
+
### System configuration
|
|
12
|
+
|
|
13
13
|
**Ruby version**:
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
### Summary
|
|
2
|
-
|
|
3
|
-
Provide a general description of the code changes in your pull
|
|
4
|
-
request. Were there any bugs you had fixed? If so, mention them. If
|
|
5
|
-
these bugs have open GitHub issues, be sure to tag them here as well,
|
|
6
|
-
to keep the conversation linked together.
|
|
7
|
-
|
|
8
|
-
### Other Information
|
|
9
|
-
|
|
10
|
-
If there's anything else that's important and relevant to your pull
|
|
1
|
+
### Summary
|
|
2
|
+
|
|
3
|
+
Provide a general description of the code changes in your pull
|
|
4
|
+
request. Were there any bugs you had fixed? If so, mention them. If
|
|
5
|
+
these bugs have open GitHub issues, be sure to tag them here as well,
|
|
6
|
+
to keep the conversation linked together.
|
|
7
|
+
|
|
8
|
+
### Other Information
|
|
9
|
+
|
|
10
|
+
If there's anything else that's important and relevant to your pull
|
|
11
11
|
request, mention that information here.
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.0.0 (2018-02-23)
|
|
4
|
+
|
|
5
|
+
* First stable version at last
|
|
6
|
+
* Make `TournamentTeam` compatible with the recent API changes
|
|
7
|
+
* More doc tweaks
|
|
8
|
+
* Fix tests compatibility with Ruby 2.5
|
|
9
|
+
|
|
3
10
|
## v1.0.0.rc1 (2018-02-22)
|
|
4
11
|
|
|
5
12
|
* Collections can be converted to arrays or hashes
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
The MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2017 Ilya Bodrov
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
-
a copy of this software and associated documentation files (the
|
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
-
the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be
|
|
14
|
-
included in all copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
19
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
20
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
21
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
1
|
+
The MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017 Ilya Bodrov
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
19
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
20
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
21
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
22
22
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# ChgkRating
|
|
2
2
|
|
|
3
|
+
[](https://badge.fury.io/rb/chgk_rating)
|
|
3
4
|
[](https://travis-ci.org/bodrovis/ChgkRating)
|
|
4
5
|
[](https://codeclimate.com/github/bodrovis/ChgkRating)
|
|
5
6
|
[](https://codeclimate.com/github/bodrovis/ChgkRating/coverage)
|
|
@@ -452,7 +453,7 @@ current_name # String
|
|
|
452
453
|
base_name # String
|
|
453
454
|
position # Float
|
|
454
455
|
questions_total # Integer
|
|
455
|
-
|
|
456
|
+
result # Array - contains Boolean values. Each value corresponds to a single question and
|
|
456
457
|
# marks whether the team answered this question or not. The length of the array equals to the
|
|
457
458
|
# value returned by the questions_total method
|
|
458
459
|
bonus_a # Integer
|
data/Rakefile
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
require 'rake'
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'bundler/setup'
|
|
5
|
-
Bundler::GemHelper.install_tasks
|
|
6
|
-
rescue LoadError
|
|
7
|
-
puts 'although not required, bundler is recommened for running the tests'
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
task :default => :spec
|
|
11
|
-
|
|
12
|
-
require 'rspec/core/rake_task'
|
|
1
|
+
require 'rake'
|
|
2
|
+
|
|
3
|
+
begin
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
Bundler::GemHelper.install_tasks
|
|
6
|
+
rescue LoadError
|
|
7
|
+
puts 'although not required, bundler is recommened for running the tests'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
task :default => :spec
|
|
11
|
+
|
|
12
|
+
require 'rspec/core/rake_task'
|
|
13
13
|
RSpec::Core::RakeTask.new(:spec)
|
data/chgk_rating.gemspec
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
require File.expand_path('../lib/chgk_rating/version', __FILE__)
|
|
2
|
-
|
|
3
|
-
Gem::Specification.new do |spec|
|
|
4
|
-
spec.name = 'chgk_rating'
|
|
5
|
-
spec.version = ChgkRating::VERSION
|
|
6
|
-
spec.authors = ['Ilya Bodrov']
|
|
7
|
-
spec.email = ['golosizpru@gmail.com']
|
|
8
|
-
spec.summary = 'Ruby interface to the competitive What? Where? When? rating API'
|
|
9
|
-
spec.description = 'Opinionated Ruby client for the competitive What? Where? When? rating WebAPI (rating.chgk.info) that allows to work with data as with Ruby objects'
|
|
10
|
-
spec.homepage = 'https://github.com/bodrovis/
|
|
11
|
-
spec.license = 'MIT'
|
|
12
|
-
spec.platform = Gem::Platform::RUBY
|
|
13
|
-
spec.required_ruby_version = '>= 2.4.0'
|
|
14
|
-
|
|
15
|
-
spec.files = Dir["README.md", "LICENSE", "CONTRIBUTING.md",
|
|
16
|
-
"CHANGELOG.md", "lib/**/*.rb", "chgk_rating.gemspec", ".github/*.md",
|
|
17
|
-
"Gemfile", "Rakefile"]
|
|
18
|
-
spec.test_files = Dir["spec/**/*.rb"]
|
|
19
|
-
spec.extra_rdoc_files = ['README.md']
|
|
20
|
-
spec.require_paths = ['lib']
|
|
21
|
-
|
|
22
|
-
spec.add_dependency 'faraday', '~> 0.13'
|
|
23
|
-
spec.add_dependency 'multi_json', '~> 1.12'
|
|
24
|
-
|
|
25
|
-
spec.add_development_dependency 'rake', '~> 12.1'
|
|
26
|
-
spec.add_development_dependency 'rspec', '~> 3.6'
|
|
27
|
-
spec.add_development_dependency 'vcr', '~> 4.0'
|
|
28
|
-
spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
|
|
1
|
+
require File.expand_path('../lib/chgk_rating/version', __FILE__)
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |spec|
|
|
4
|
+
spec.name = 'chgk_rating'
|
|
5
|
+
spec.version = ChgkRating::VERSION
|
|
6
|
+
spec.authors = ['Ilya Bodrov']
|
|
7
|
+
spec.email = ['golosizpru@gmail.com']
|
|
8
|
+
spec.summary = 'Ruby interface to the competitive What? Where? When? rating API'
|
|
9
|
+
spec.description = 'Opinionated Ruby client for the competitive What? Where? When? rating WebAPI (rating.chgk.info) that allows to work with data as with Ruby objects'
|
|
10
|
+
spec.homepage = 'https://github.com/bodrovis/ChgkRating'
|
|
11
|
+
spec.license = 'MIT'
|
|
12
|
+
spec.platform = Gem::Platform::RUBY
|
|
13
|
+
spec.required_ruby_version = '>= 2.4.0'
|
|
14
|
+
|
|
15
|
+
spec.files = Dir["README.md", "LICENSE", "CONTRIBUTING.md",
|
|
16
|
+
"CHANGELOG.md", "lib/**/*.rb", "chgk_rating.gemspec", ".github/*.md",
|
|
17
|
+
"Gemfile", "Rakefile"]
|
|
18
|
+
spec.test_files = Dir["spec/**/*.rb"]
|
|
19
|
+
spec.extra_rdoc_files = ['README.md']
|
|
20
|
+
spec.require_paths = ['lib']
|
|
21
|
+
|
|
22
|
+
spec.add_dependency 'faraday', '~> 0.13'
|
|
23
|
+
spec.add_dependency 'multi_json', '~> 1.12'
|
|
24
|
+
|
|
25
|
+
spec.add_development_dependency 'rake', '~> 12.1'
|
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.6'
|
|
27
|
+
spec.add_development_dependency 'vcr', '~> 4.0'
|
|
28
|
+
spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
|
|
29
29
|
end
|
data/lib/chgk_rating.rb
CHANGED
|
@@ -1,53 +1,52 @@
|
|
|
1
|
-
require '
|
|
2
|
-
require '
|
|
3
|
-
require '
|
|
4
|
-
require '
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
require 'ext/
|
|
8
|
-
require 'ext/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
require 'chgk_rating/utils/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
require 'chgk_rating/
|
|
15
|
-
require 'chgk_rating/
|
|
16
|
-
require 'chgk_rating/
|
|
17
|
-
require 'chgk_rating/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
require 'chgk_rating/models/
|
|
25
|
-
require 'chgk_rating/models/
|
|
26
|
-
require 'chgk_rating/models/
|
|
27
|
-
require 'chgk_rating/models/
|
|
28
|
-
require 'chgk_rating/models/
|
|
29
|
-
require 'chgk_rating/models/
|
|
30
|
-
require 'chgk_rating/models/
|
|
31
|
-
require 'chgk_rating/models/
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
require 'chgk_rating/collections/
|
|
35
|
-
require 'chgk_rating/collections/
|
|
36
|
-
require 'chgk_rating/collections/
|
|
37
|
-
require 'chgk_rating/collections/
|
|
38
|
-
require 'chgk_rating/collections/
|
|
39
|
-
require 'chgk_rating/collections/
|
|
40
|
-
require 'chgk_rating/collections/
|
|
41
|
-
require 'chgk_rating/collections/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
end
|
|
1
|
+
require 'date'
|
|
2
|
+
require 'uri'
|
|
3
|
+
require 'faraday'
|
|
4
|
+
require 'multi_json'
|
|
5
|
+
|
|
6
|
+
require 'ext/date'
|
|
7
|
+
require 'ext/date_time'
|
|
8
|
+
require 'ext/uri'
|
|
9
|
+
|
|
10
|
+
require 'chgk_rating/utils/transformations'
|
|
11
|
+
require 'chgk_rating/utils/snakecase'
|
|
12
|
+
|
|
13
|
+
require 'chgk_rating/version'
|
|
14
|
+
require 'chgk_rating/error'
|
|
15
|
+
require 'chgk_rating/connection'
|
|
16
|
+
require 'chgk_rating/request'
|
|
17
|
+
require 'chgk_rating/attribute_mappings'
|
|
18
|
+
|
|
19
|
+
require 'chgk_rating/concerns/searching'
|
|
20
|
+
|
|
21
|
+
require 'chgk_rating/chgk_object'
|
|
22
|
+
|
|
23
|
+
require 'chgk_rating/models/base'
|
|
24
|
+
require 'chgk_rating/models/tournament_team_result'
|
|
25
|
+
require 'chgk_rating/models/tournament_player'
|
|
26
|
+
require 'chgk_rating/models/tournament_team'
|
|
27
|
+
require 'chgk_rating/models/rating'
|
|
28
|
+
require 'chgk_rating/models/tournament'
|
|
29
|
+
require 'chgk_rating/models/player'
|
|
30
|
+
require 'chgk_rating/models/team'
|
|
31
|
+
require 'chgk_rating/models/recap'
|
|
32
|
+
|
|
33
|
+
require 'chgk_rating/collections/base'
|
|
34
|
+
require 'chgk_rating/collections/tournament_team_results'
|
|
35
|
+
require 'chgk_rating/collections/tournament_players'
|
|
36
|
+
require 'chgk_rating/collections/tournament_teams'
|
|
37
|
+
require 'chgk_rating/collections/ratings'
|
|
38
|
+
require 'chgk_rating/collections/tournaments'
|
|
39
|
+
require 'chgk_rating/collections/players'
|
|
40
|
+
require 'chgk_rating/collections/teams'
|
|
41
|
+
require 'chgk_rating/collections/recaps'
|
|
42
|
+
|
|
43
|
+
require 'chgk_rating/client'
|
|
44
|
+
|
|
45
|
+
module ChgkRating
|
|
46
|
+
# Initializes a new Client object
|
|
47
|
+
#
|
|
48
|
+
# @return [ChgkRating::Client]
|
|
49
|
+
def self.client
|
|
50
|
+
@client ||= ChgkRating::Client.new
|
|
51
|
+
end
|
|
53
52
|
end
|
|
@@ -1,138 +1,139 @@
|
|
|
1
|
-
module ChgkRating
|
|
2
|
-
module AttributeMappings
|
|
3
|
-
extend ChgkRating::Utils::Transformations
|
|
4
|
-
|
|
5
|
-
class << self
|
|
6
|
-
def find(name)
|
|
7
|
-
const_get name.snakecase_upcase
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def generate_mappings_for(data)
|
|
11
|
-
data.each do |const_name, raw_schemes|
|
|
12
|
-
const_set const_name, generate_mapping_for(raw_schemes)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
def name_from(raw_name)
|
|
19
|
-
{ raw_name: raw_name.to_s }
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def parse_raw_scheme(raw_scheme)
|
|
23
|
-
if raw_scheme.respond_to? :inject
|
|
24
|
-
scheme_from raw_scheme
|
|
25
|
-
else
|
|
26
|
-
{ raw_scheme => name_from(raw_scheme) }
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def scheme_from(raw_scheme)
|
|
31
|
-
raw_scheme.inject({}) do |memo, (key, value)|
|
|
32
|
-
memo[key] = scheme_value_from key, value
|
|
33
|
-
memo
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def scheme_value_from(key, raw_value)
|
|
38
|
-
if raw_value.is_a? String
|
|
39
|
-
name_from raw_value
|
|
40
|
-
else
|
|
41
|
-
raw_value = [key.to_s] if raw_value[0].nil? # for cases like `rating: []`
|
|
42
|
-
name_from(raw_value[0]).merge transformation(raw_value[1])
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def generate_mapping_for(raw_schemes)
|
|
47
|
-
return unless raw_schemes&.any?
|
|
48
|
-
|
|
49
|
-
if raw_schemes.is_a? Array
|
|
50
|
-
raw_schemes.inject({}) do |memo, raw_scheme|
|
|
51
|
-
memo.merge parse_raw_scheme(raw_scheme)
|
|
52
|
-
end
|
|
53
|
-
else
|
|
54
|
-
parse_raw_scheme raw_schemes
|
|
55
|
-
end.freeze
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
generate_mappings_for({
|
|
60
|
-
PLAYER: [
|
|
61
|
-
{ id: 'idplayer' },
|
|
62
|
-
:name,
|
|
63
|
-
:surname,
|
|
64
|
-
:patronymic,
|
|
65
|
-
:comment,
|
|
66
|
-
:db_chgk_info_tag
|
|
67
|
-
],
|
|
68
|
-
RATING: {
|
|
69
|
-
team: ['idteam', :team_id],
|
|
70
|
-
release_id: 'idrelease',
|
|
71
|
-
rating: [],
|
|
72
|
-
rating_position: [],
|
|
73
|
-
date: ['date', :date],
|
|
74
|
-
formula: ['formula', :sym]
|
|
75
|
-
},
|
|
76
|
-
RECAP: {
|
|
77
|
-
season_id: 'idseason',
|
|
78
|
-
team: ['idteam', :team_id],
|
|
79
|
-
captain: ['captain', :player_id],
|
|
80
|
-
players: ['players', :players_ids]
|
|
81
|
-
},
|
|
82
|
-
TOURNAMENT: [
|
|
83
|
-
{
|
|
84
|
-
id: 'idtournament',
|
|
85
|
-
date_start: ['date_start', :datetime],
|
|
86
|
-
date_end: ['date_end', :datetime],
|
|
87
|
-
tour_count: [],
|
|
88
|
-
tour_questions: [],
|
|
89
|
-
tour_ques_per_tour: [],
|
|
90
|
-
questions_total: [],
|
|
91
|
-
main_payment_value: ['main_payment_value', :float],
|
|
92
|
-
discounted_payment_value: ['discounted_payment_value', :float],
|
|
93
|
-
date_requests_allowed_to: ['date_requests_allowed_to', :datetime],
|
|
94
|
-
site_url: ['site_url', :uri]
|
|
95
|
-
},
|
|
96
|
-
:name,
|
|
97
|
-
:town,
|
|
98
|
-
:long_name,
|
|
99
|
-
:type_name,
|
|
100
|
-
:discounted_payment_reason,
|
|
101
|
-
:comment
|
|
102
|
-
],
|
|
103
|
-
TOURNAMENT_PLAYER: {
|
|
104
|
-
id: 'idplayer',
|
|
105
|
-
is_captain: ['is_captain', :boolean_binboolean],
|
|
106
|
-
is_base: ['is_base', :boolean_binboolean],
|
|
107
|
-
is_foreign: ['is_foreign', :boolean_binboolean]
|
|
108
|
-
},
|
|
109
|
-
TOURNAMENT_TEAM: [
|
|
110
|
-
{
|
|
111
|
-
id: 'idteam',
|
|
112
|
-
position: ['position', :float],
|
|
113
|
-
questions_total: [],
|
|
114
|
-
result: ['mask', :splitboolean_arraystrboolean],
|
|
115
|
-
bonus_a: [],
|
|
116
|
-
bonus_b: [],
|
|
117
|
-
tech_rating: [],
|
|
118
|
-
predicted_position: [],
|
|
119
|
-
|
|
120
|
-
d_bonus_b: [],
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
:
|
|
129
|
-
:
|
|
130
|
-
:
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
1
|
+
module ChgkRating
|
|
2
|
+
module AttributeMappings
|
|
3
|
+
extend ChgkRating::Utils::Transformations
|
|
4
|
+
|
|
5
|
+
class << self
|
|
6
|
+
def find(name)
|
|
7
|
+
const_get name.snakecase_upcase
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def generate_mappings_for(data)
|
|
11
|
+
data.each do |const_name, raw_schemes|
|
|
12
|
+
const_set const_name, generate_mapping_for(raw_schemes)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def name_from(raw_name)
|
|
19
|
+
{ raw_name: raw_name.to_s }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def parse_raw_scheme(raw_scheme)
|
|
23
|
+
if raw_scheme.respond_to? :inject
|
|
24
|
+
scheme_from raw_scheme
|
|
25
|
+
else
|
|
26
|
+
{ raw_scheme => name_from(raw_scheme) }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def scheme_from(raw_scheme)
|
|
31
|
+
raw_scheme.inject({}) do |memo, (key, value)|
|
|
32
|
+
memo[key] = scheme_value_from key, value
|
|
33
|
+
memo
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def scheme_value_from(key, raw_value)
|
|
38
|
+
if raw_value.is_a? String
|
|
39
|
+
name_from raw_value
|
|
40
|
+
else
|
|
41
|
+
raw_value = [key.to_s] if raw_value[0].nil? # for cases like `rating: []`
|
|
42
|
+
name_from(raw_value[0]).merge transformation(raw_value[1])
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def generate_mapping_for(raw_schemes)
|
|
47
|
+
return unless raw_schemes&.any?
|
|
48
|
+
|
|
49
|
+
if raw_schemes.is_a? Array
|
|
50
|
+
raw_schemes.inject({}) do |memo, raw_scheme|
|
|
51
|
+
memo.merge parse_raw_scheme(raw_scheme)
|
|
52
|
+
end
|
|
53
|
+
else
|
|
54
|
+
parse_raw_scheme raw_schemes
|
|
55
|
+
end.freeze
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
generate_mappings_for({
|
|
60
|
+
PLAYER: [
|
|
61
|
+
{ id: 'idplayer' },
|
|
62
|
+
:name,
|
|
63
|
+
:surname,
|
|
64
|
+
:patronymic,
|
|
65
|
+
:comment,
|
|
66
|
+
:db_chgk_info_tag
|
|
67
|
+
],
|
|
68
|
+
RATING: {
|
|
69
|
+
team: ['idteam', :team_id],
|
|
70
|
+
release_id: 'idrelease',
|
|
71
|
+
rating: [],
|
|
72
|
+
rating_position: [],
|
|
73
|
+
date: ['date', :date],
|
|
74
|
+
formula: ['formula', :sym]
|
|
75
|
+
},
|
|
76
|
+
RECAP: {
|
|
77
|
+
season_id: 'idseason',
|
|
78
|
+
team: ['idteam', :team_id],
|
|
79
|
+
captain: ['captain', :player_id],
|
|
80
|
+
players: ['players', :players_ids]
|
|
81
|
+
},
|
|
82
|
+
TOURNAMENT: [
|
|
83
|
+
{
|
|
84
|
+
id: 'idtournament',
|
|
85
|
+
date_start: ['date_start', :datetime],
|
|
86
|
+
date_end: ['date_end', :datetime],
|
|
87
|
+
tour_count: [],
|
|
88
|
+
tour_questions: [],
|
|
89
|
+
tour_ques_per_tour: [],
|
|
90
|
+
questions_total: [],
|
|
91
|
+
main_payment_value: ['main_payment_value', :float],
|
|
92
|
+
discounted_payment_value: ['discounted_payment_value', :float],
|
|
93
|
+
date_requests_allowed_to: ['date_requests_allowed_to', :datetime],
|
|
94
|
+
site_url: ['site_url', :uri]
|
|
95
|
+
},
|
|
96
|
+
:name,
|
|
97
|
+
:town,
|
|
98
|
+
:long_name,
|
|
99
|
+
:type_name,
|
|
100
|
+
:discounted_payment_reason,
|
|
101
|
+
:comment
|
|
102
|
+
],
|
|
103
|
+
TOURNAMENT_PLAYER: {
|
|
104
|
+
id: 'idplayer',
|
|
105
|
+
is_captain: ['is_captain', :boolean_binboolean],
|
|
106
|
+
is_base: ['is_base', :boolean_binboolean],
|
|
107
|
+
is_foreign: ['is_foreign', :boolean_binboolean]
|
|
108
|
+
},
|
|
109
|
+
TOURNAMENT_TEAM: [
|
|
110
|
+
{
|
|
111
|
+
id: 'idteam',
|
|
112
|
+
position: ['position', :float],
|
|
113
|
+
questions_total: [],
|
|
114
|
+
result: ['mask', :splitboolean_arraystrboolean],
|
|
115
|
+
bonus_a: [],
|
|
116
|
+
bonus_b: [],
|
|
117
|
+
tech_rating: [],
|
|
118
|
+
predicted_position: [],
|
|
119
|
+
d_bonus_a: [],
|
|
120
|
+
d_bonus_b: [],
|
|
121
|
+
d_diff_bonus: [],
|
|
122
|
+
included_in_rating: ['included_in_rating', :boolean_binboolean]
|
|
123
|
+
},
|
|
124
|
+
:current_name,
|
|
125
|
+
:base_name
|
|
126
|
+
],
|
|
127
|
+
TEAM: [
|
|
128
|
+
{ id: 'idteam' },
|
|
129
|
+
:name,
|
|
130
|
+
:town,
|
|
131
|
+
:comment
|
|
132
|
+
],
|
|
133
|
+
TOURNAMENT_TEAM_RESULT: {
|
|
134
|
+
tour: [],
|
|
135
|
+
result: ['mask', :arrayboolean_arraystrboolean]
|
|
136
|
+
}
|
|
137
|
+
})
|
|
138
|
+
end
|
|
138
139
|
end
|