diva 1.1.1 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b6dbf4fc204edb2a8609e74e10c19ad8bc785d999f9d914a4a950c6e2dd6818
4
- data.tar.gz: 5db0369283d2decb0fa0d3dff43b3fe96825e527c2df2f3a2c2c86e6350d07a6
3
+ metadata.gz: 52c5dec5bafdde2ee52163337ccb79c65cf1ffa0090da2401585dbf567e92abc
4
+ data.tar.gz: b022d6956eb21bcca85203eb989b7d1c8b4dd4b3854f17348b2c150af3b2a3c6
5
5
  SHA512:
6
- metadata.gz: 44db1ef485a1282e7591e333fff55af4e03bb539804bd532c05e9092fbc54da503fa1f115c42547559da63e25a6b3d0d8db17f265f01f046d99c5edb3c8e59e2
7
- data.tar.gz: a842952e5be329924c9d342eb0b3412fc665ace24eb9230025eebeb5a33dffdd1f3d477c02a6dfedd6c4acbcb4a54d6760afc783d14b3fe9313744568031267f
6
+ metadata.gz: 6d7b1858e1b3722d22fe28f45c612dbdaa2a9c30f19658c6d876acf41d6b6e93cd252f6ca69563ef5826148e83881ff8bad34057d71eb4dee1f6b6123543dd2d
7
+ data.tar.gz: f11d4bd094c84857fb5f5dc78644cc9940489e47d506b09930dec55d222b7cc2f58f608265d7acaedfb98bcf78e90a959b1d6ea3356eb255d78c297d5a6a70f4
data/.circleci/config.yml CHANGED
@@ -6,7 +6,7 @@ executors:
6
6
  tag:
7
7
  type: string
8
8
  docker:
9
- - image: circleci/ruby:<< parameters.tag >>
9
+ - image: ruby:<< parameters.tag >>
10
10
 
11
11
  jobs:
12
12
  build:
@@ -49,19 +49,19 @@ workflows:
49
49
  jobs:
50
50
  - lint:
51
51
  name: 'lint'
52
- ruby-version: '3.0.2'
52
+ ruby-version: '3.0.3'
53
53
  - build:
54
- name: 'ruby-2.6'
55
- ruby-version: '2.6.7'
54
+ name: 'ruby-2.7'
55
+ ruby-version: '2.7.5'
56
56
  requires:
57
57
  - 'lint'
58
58
  - build:
59
- name: 'ruby-2.7'
60
- ruby-version: '2.7.4'
59
+ name: 'ruby-3.0'
60
+ ruby-version: '3.0.3'
61
61
  requires:
62
62
  - 'lint'
63
63
  - build:
64
- name: 'ruby-3.0'
65
- ruby-version: '3.0.2'
64
+ name: 'ruby-3.1'
65
+ ruby-version: '3.1.0-preview1'
66
66
  requires:
67
67
  - 'lint'
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.5
2
+ TargetRubyVersion: '2.7'
3
3
 
4
4
  Metrics/BlockLength:
5
5
  Exclude:
@@ -340,4 +340,55 @@ Style/RedundantArgument: # (new in 1.4)
340
340
  Enabled: true
341
341
  Style/SwapValues: # (new in 1.1)
342
342
  Enabled: true
343
-
343
+ Gemspec/DateAssignment: # new in 1.10
344
+ Enabled: true
345
+ Gemspec/RequireMFA: # new in 1.23
346
+ Enabled: true
347
+ Layout/LineEndStringConcatenationIndentation: # new in 1.18
348
+ Enabled: true
349
+ Lint/AmbiguousOperatorPrecedence: # new in 1.21
350
+ Enabled: false
351
+ Lint/AmbiguousRange: # new in 1.19
352
+ Enabled: true
353
+ RequireParenthesesForMethodChains: true
354
+ Lint/EmptyInPattern: # new in 1.16
355
+ Enabled: true
356
+ Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
357
+ Enabled: true
358
+ Lint/NumberedParameterAssignment: # new in 1.9
359
+ Enabled: true
360
+ Lint/OrAssignmentToConstant: # new in 1.9
361
+ Enabled: true
362
+ Lint/RequireRelativeSelfPath: # new in 1.22
363
+ Enabled: true
364
+ Lint/SymbolConversion: # new in 1.9
365
+ Enabled: true
366
+ Lint/TripleQuotes: # new in 1.9
367
+ Enabled: true
368
+ Lint/UselessRuby2Keywords: # new in 1.23
369
+ Enabled: true
370
+ Security/IoMethods: # new in 1.22
371
+ Enabled: true
372
+ Style/HashConversion: # new in 1.10
373
+ Enabled: true
374
+ Style/IfWithBooleanLiteralBranches: # new in 1.9
375
+ Enabled: true
376
+ Style/InPatternThen: # new in 1.16
377
+ Enabled: true
378
+ Style/MultilineInPatternThen: # new in 1.16
379
+ Enabled: true
380
+ Style/NumberedParameters: # new in 1.22
381
+ Enabled: true
382
+ Style/NumberedParametersLimit: # new in 1.22
383
+ Enabled: true
384
+ Max: 1
385
+ Style/OpenStructUse: # new in 1.23
386
+ Enabled: true
387
+ Style/QuotedSymbols: # new in 1.16
388
+ Enabled: true
389
+ Style/RedundantSelfAssignmentBranch: # new in 1.19
390
+ Enabled: true
391
+ Style/SelectByRegexp: # new in 1.22
392
+ Enabled: true
393
+ Style/StringChars: # new in 1.12
394
+ Enabled: true
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
 
4
4
  Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
5
+ t.libs << 'test'
6
+ t.libs << 'lib'
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task :default => :test
10
+ task default: :test
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "diva"
3
+ require 'bundler/setup'
4
+ require 'diva'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "diva"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start
data/diva.gemspec CHANGED
@@ -1,29 +1,33 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'diva/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "diva"
8
+ spec.name = 'diva'
8
9
  spec.version = Diva::VERSION
9
- spec.authors = ["Toshiaki Asai"]
10
- spec.email = ["toshi.alternative@gmail.com"]
10
+ spec.authors = ['Toshiaki Asai']
11
+ spec.email = ['toshi.alternative@gmail.com']
11
12
 
12
- spec.summary = %q{Implementation of expression for handling things.}
13
- spec.homepage = "https://github.com/toshia/diva"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = '>= 2.6.0'
13
+ spec.summary = 'Implementation of expression for handling things.'
14
+ spec.homepage = 'https://github.com/toshia/diva'
15
+ spec.license = 'MIT'
16
+ spec.required_ruby_version = '>= 2.7.0'
16
17
 
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "exe"
19
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
18
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r<^(test|spec|features)/>) }
19
+ spec.bindir = 'exe'
20
+ spec.executables = spec.files.grep(%r<^exe/>) { |f| File.basename(f) }
21
+ spec.require_paths = ['lib']
21
22
 
22
- spec.add_development_dependency "bundler", '>= 1.16.1', '< 3.0'
23
- spec.add_development_dependency "rake", '>= 13.0.1', '< 14.0'
24
- spec.add_development_dependency "minitest", '>= 5.14.4', '< 5.15'
25
- spec.add_development_dependency "irb", '>= 1.3.7', '< 2.0'
26
- spec.add_development_dependency "simplecov", '>= 0.17.1', '< 1.0'
27
- spec.add_development_dependency "rubocop", '>= 1.20.0', '< 1.21.0'
28
- spec.add_dependency "addressable", ">= 2.5.2", "< 3.0"
23
+ spec.add_development_dependency 'bundler', '>= 1.16.1', '< 3.0'
24
+ spec.add_development_dependency 'irb', '>= 1.3.7', '< 2.0'
25
+ spec.add_development_dependency 'minitest', '>= 5.14.4', '< 5.15'
26
+ spec.add_development_dependency 'rake', '>= 13.0.1', '< 14.0'
27
+ spec.add_development_dependency 'rubocop', '>= 1.23.0', '< 1.24.0'
28
+ spec.add_development_dependency 'simplecov', '>= 0.17.1', '< 1.0'
29
+ spec.add_dependency 'addressable', '>= 2.5.2', '< 3.0'
30
+ spec.metadata = {
31
+ 'rubygems_mfa_required' => 'true'
32
+ }
29
33
  end
data/lib/diva/model.rb CHANGED
@@ -24,7 +24,7 @@ class Diva::Model
24
24
  # selfにあってotherにもあるカラムはotherの内容で上書きされる。
25
25
  # 上書き後、データはDataSourceに保存される
26
26
  def merge(other)
27
- @value.update(other.to_hash)
27
+ @value.update(other.to_h)
28
28
  validate
29
29
  self.class.store_datum(self)
30
30
  end
@@ -80,7 +80,7 @@ class Diva::Model
80
80
  self == other
81
81
  end
82
82
 
83
- def to_hash
83
+ def to_h
84
84
  self.class.fields.to_h { |f| [f.name, fetch(f.name)] }
85
85
  end
86
86
 
@@ -114,7 +114,7 @@ class Diva::Model
114
114
  # キーとして定義されていない値を全て除外した配列を生成して返す。
115
115
  # また、Modelを子に含んでいる場合、それを外部キーに変換する。
116
116
  def filtering
117
- datum = to_hash
117
+ datum = to_h
118
118
  result = {}
119
119
  self.class.fields.each do |field|
120
120
  result[field.name] = field.type.cast(datum[field.name])
@@ -146,6 +146,14 @@ class Diva::Model
146
146
  end
147
147
  end
148
148
 
149
+ def deconstruct_keys(keys)
150
+ if keys
151
+ @value.slice(*keys) # 高速化のため、fetchを呼び出していない
152
+ else
153
+ @value
154
+ end
155
+ end
156
+
149
157
  private
150
158
 
151
159
  # URIがデフォルトで使うpath要素
data/lib/diva/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Diva
2
- VERSION = '1.1.1'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diva
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toshiaki Asai
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-22 00:00:00.000000000 Z
11
+ date: 2021-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -31,25 +31,25 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: '3.0'
33
33
  - !ruby/object:Gem::Dependency
34
- name: rake
34
+ name: irb
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 13.0.1
39
+ version: 1.3.7
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '14.0'
42
+ version: '2.0'
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 13.0.1
49
+ version: 1.3.7
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '14.0'
52
+ version: '2.0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: minitest
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -71,65 +71,65 @@ dependencies:
71
71
  - !ruby/object:Gem::Version
72
72
  version: '5.15'
73
73
  - !ruby/object:Gem::Dependency
74
- name: irb
74
+ name: rake
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 1.3.7
79
+ version: 13.0.1
80
80
  - - "<"
81
81
  - !ruby/object:Gem::Version
82
- version: '2.0'
82
+ version: '14.0'
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 1.3.7
89
+ version: 13.0.1
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
- version: '2.0'
92
+ version: '14.0'
93
93
  - !ruby/object:Gem::Dependency
94
- name: simplecov
94
+ name: rubocop
95
95
  requirement: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - ">="
98
98
  - !ruby/object:Gem::Version
99
- version: 0.17.1
99
+ version: 1.23.0
100
100
  - - "<"
101
101
  - !ruby/object:Gem::Version
102
- version: '1.0'
102
+ version: 1.24.0
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: 0.17.1
109
+ version: 1.23.0
110
110
  - - "<"
111
111
  - !ruby/object:Gem::Version
112
- version: '1.0'
112
+ version: 1.24.0
113
113
  - !ruby/object:Gem::Dependency
114
- name: rubocop
114
+ name: simplecov
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: 1.20.0
119
+ version: 0.17.1
120
120
  - - "<"
121
121
  - !ruby/object:Gem::Version
122
- version: 1.21.0
122
+ version: '1.0'
123
123
  type: :development
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
- version: 1.20.0
129
+ version: 0.17.1
130
130
  - - "<"
131
131
  - !ruby/object:Gem::Version
132
- version: 1.21.0
132
+ version: '1.0'
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: addressable
135
135
  requirement: !ruby/object:Gem::Requirement
@@ -182,7 +182,8 @@ files:
182
182
  homepage: https://github.com/toshia/diva
183
183
  licenses:
184
184
  - MIT
185
- metadata: {}
185
+ metadata:
186
+ rubygems_mfa_required: 'true'
186
187
  post_install_message:
187
188
  rdoc_options: []
188
189
  require_paths:
@@ -191,14 +192,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
191
192
  requirements:
192
193
  - - ">="
193
194
  - !ruby/object:Gem::Version
194
- version: 2.6.0
195
+ version: 2.7.0
195
196
  required_rubygems_version: !ruby/object:Gem::Requirement
196
197
  requirements:
197
198
  - - ">="
198
199
  - !ruby/object:Gem::Version
199
200
  version: '0'
200
201
  requirements: []
201
- rubygems_version: 3.2.21
202
+ rubygems_version: 3.2.29
202
203
  signing_key:
203
204
  specification_version: 4
204
205
  summary: Implementation of expression for handling things.