dry-core 0.4.7 → 0.4.8
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/.codeclimate.yml +15 -0
- data/.gitignore +1 -0
- data/.travis.yml +9 -8
- data/CHANGELOG.md +33 -18
- data/Gemfile +2 -3
- data/README.md +16 -1
- data/Rakefile +2 -0
- data/dry-core.gemspec +3 -1
- data/lib/dry-core.rb +2 -0
- data/lib/dry/core.rb +2 -0
- data/lib/dry/core/cache.rb +2 -0
- data/lib/dry/core/class_attributes.rb +2 -0
- data/lib/dry/core/class_builder.rb +2 -0
- data/lib/dry/core/constants.rb +22 -5
- data/lib/dry/core/deprecations.rb +2 -0
- data/lib/dry/core/descendants_tracker.rb +2 -0
- data/lib/dry/core/errors.rb +2 -0
- data/lib/dry/core/extensions.rb +2 -0
- data/lib/dry/core/inflector.rb +2 -0
- data/lib/dry/core/memoizable.rb +2 -0
- data/lib/dry/core/version.rb +3 -1
- metadata +8 -9
- data/.rubocop.yml +0 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 248dbedf379c8c7c585274a2334bd6b6347641d59d66f2348bb78990ac60d921
|
|
4
|
+
data.tar.gz: 2abd02588d6151cbe2ce1ddb6d547b841a6a5c6dd73eeedf2adf92fb760ad06a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d0a1a31e66dcac988307bbff851611773d0d8bc2b561a76b0dcdd18d17199d49e4eabcf84e42e7443fdc0e5b16bfdde86d532b6bbe78bd070f32945fc2506f3a
|
|
7
|
+
data.tar.gz: 46afa1f06dd69b69a182f9d5cfa17cf8d0d9d419d22193d61b18f967f56fe3d0042de3c1bf38e5a41756faca5e230e246b80d5bf074666dac384ba2f93c813be
|
data/.codeclimate.yml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
version: "2"
|
|
2
|
+
|
|
3
|
+
prepare:
|
|
4
|
+
fetch:
|
|
5
|
+
- url: "https://raw.githubusercontent.com/dry-rb/devtools/master/.rubocop.yml"
|
|
6
|
+
path: ".rubocop.yml"
|
|
7
|
+
|
|
8
|
+
exclude_patterns:
|
|
9
|
+
- "benchmarks/"
|
|
10
|
+
- "examples/"
|
|
11
|
+
- "spec/"
|
|
12
|
+
|
|
13
|
+
plugins:
|
|
14
|
+
rubocop:
|
|
15
|
+
enabled: true
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
|
@@ -5,22 +5,23 @@ cache: bundler
|
|
|
5
5
|
bundler_args: --without benchmarks tools
|
|
6
6
|
after_success:
|
|
7
7
|
- '[ -d coverage ] && bundle exec codeclimate-test-reporter'
|
|
8
|
-
script:
|
|
9
|
-
- bundle exec rake
|
|
10
8
|
before_install:
|
|
11
|
-
- gem
|
|
9
|
+
- gem install bundler
|
|
12
10
|
after_success:
|
|
13
11
|
- '[ -d coverage ] && bundle exec codeclimate-test-reporter'
|
|
14
12
|
rvm:
|
|
15
|
-
- 2.
|
|
16
|
-
- 2.
|
|
17
|
-
- 2.
|
|
18
|
-
- 2.
|
|
19
|
-
-
|
|
13
|
+
- 2.4.6
|
|
14
|
+
- 2.5.5
|
|
15
|
+
- 2.6.3
|
|
16
|
+
- jruby-9.2.7.0
|
|
17
|
+
- truffleruby
|
|
20
18
|
env:
|
|
21
19
|
global:
|
|
22
20
|
- COVERAGE=true
|
|
23
21
|
- JRUBY_OPTS='--dev -J-Xmx1024M'
|
|
22
|
+
matrix:
|
|
23
|
+
allow_failures:
|
|
24
|
+
- rvm: truffleruby
|
|
24
25
|
notifications:
|
|
25
26
|
email: false
|
|
26
27
|
webhooks:
|
data/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
# v0.4.8 2019-06-23
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
|
|
5
|
+
- `Undefined.map` for mapping non-undefined values (flash-gordon):
|
|
6
|
+
|
|
7
|
+
```ruby
|
|
8
|
+
something = 1
|
|
9
|
+
Undefined.map(something) { |v| v + 1 } # => 2
|
|
10
|
+
something = Undefined
|
|
11
|
+
Undefined.map(something) { |v| v + 1 } # => Undefined
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
[Compare v0.4.7...v0.4.8](https://github.com/dry-rb/dry-core/compare/v0.4.7...v0.4.8)
|
|
15
|
+
|
|
1
16
|
# v0.4.7 2018-06-25
|
|
2
17
|
|
|
3
18
|
### Fixed
|
|
4
19
|
|
|
5
|
-
|
|
20
|
+
- Fix default logger for deprecations, it now uses `$stderr` by default, as it should (flash-gordon)
|
|
6
21
|
|
|
7
22
|
[Compare v0.4.6...v0.4.7](https://github.com/dry-rb/dry-core/compare/v0.4.6...v0.4.7)
|
|
8
23
|
|
|
@@ -10,7 +25,7 @@
|
|
|
10
25
|
|
|
11
26
|
### Changed
|
|
12
27
|
|
|
13
|
-
|
|
28
|
+
- Trigger constant autoloading in the class builder (radar)
|
|
14
29
|
|
|
15
30
|
[Compare v0.4.5...v0.4.6](https://github.com/dry-rb/dry-core/compare/v0.4.5...v0.4.6)
|
|
16
31
|
|
|
@@ -18,7 +33,7 @@
|
|
|
18
33
|
|
|
19
34
|
### Added
|
|
20
35
|
|
|
21
|
-
|
|
36
|
+
- `Dry::Core::Memoizable`, which provides a `memoize` macro for memoizing results of instance methods (timriley)
|
|
22
37
|
|
|
23
38
|
[Compare v0.4.4...v0.4.5](https://github.com/dry-rb/dry-core/compare/v0.4.4...v0.4.5)
|
|
24
39
|
|
|
@@ -26,8 +41,8 @@
|
|
|
26
41
|
|
|
27
42
|
### Added
|
|
28
43
|
|
|
29
|
-
|
|
30
|
-
|
|
44
|
+
- `deprecate_constant` overrides `Module#deprecate_constant` and issues a labeled message on accessing a deprecated constant (flash-gordon)
|
|
45
|
+
- `Undefined.default` which accepts two arguments and returns the first if it's not `Undefined`; otherwise, returns the second one or yields a block (flash-gordon)
|
|
31
46
|
|
|
32
47
|
[Compare v0.4.3...v0.4.4](https://github.com/dry-rb/dry-core/compare/v0.4.3...v0.4.4)
|
|
33
48
|
|
|
@@ -35,7 +50,7 @@
|
|
|
35
50
|
|
|
36
51
|
### Added
|
|
37
52
|
|
|
38
|
-
|
|
53
|
+
- `Dry::Core::DescendantsTracker` which is a maintained version of the [`descendants_tracker`](https://github.com/dkubb/descendants_tracker) gem (flash-gordon)
|
|
39
54
|
|
|
40
55
|
[Compare v0.4.2...v0.4.3](https://github.com/dry-rb/dry-core/compare/v0.4.2...0.4.3)
|
|
41
56
|
|
|
@@ -43,7 +58,7 @@
|
|
|
43
58
|
|
|
44
59
|
### Fixed
|
|
45
60
|
|
|
46
|
-
|
|
61
|
+
- Class attributes now support private setters/getters (flash-gordon)
|
|
47
62
|
|
|
48
63
|
[Compare v0.4.1...v0.4.2](https://github.com/dry-rb/dry-core/compare/v0.4.1...v0.4.2)
|
|
49
64
|
|
|
@@ -51,7 +66,7 @@
|
|
|
51
66
|
|
|
52
67
|
### Changed
|
|
53
68
|
|
|
54
|
-
|
|
69
|
+
- Improved error message on invalid attribute value (GustavoCaso)
|
|
55
70
|
|
|
56
71
|
[Compare v0.4.0...v0.4.1](https://github.com/dry-rb/dry-core/compare/v0.4.0...v0.4.1)
|
|
57
72
|
|
|
@@ -59,7 +74,7 @@
|
|
|
59
74
|
|
|
60
75
|
### Added
|
|
61
76
|
|
|
62
|
-
|
|
77
|
+
- Added the `:type` option to class attributes, you can now restrict attribute values with a type. You can either use plain ruby types (`Integer`, `String`, etc) or `dry-types` (GustavoCaso)
|
|
63
78
|
|
|
64
79
|
```ruby
|
|
65
80
|
class Foo
|
|
@@ -76,7 +91,7 @@
|
|
|
76
91
|
|
|
77
92
|
### Fixed
|
|
78
93
|
|
|
79
|
-
|
|
94
|
+
- `Deprecations` output is set to `$stderr` by default now (solnic)
|
|
80
95
|
|
|
81
96
|
[Compare v0.3.3...v0.3.4](https://github.com/dry-rb/dry-core/compare/v0.3.3...v0.3.4)
|
|
82
97
|
|
|
@@ -84,7 +99,7 @@
|
|
|
84
99
|
|
|
85
100
|
### Fixed
|
|
86
101
|
|
|
87
|
-
|
|
102
|
+
- The Deprecations module now shows the right caller line (flash-gordon)
|
|
88
103
|
|
|
89
104
|
[Compare v0.3.2...v0.3.3](https://github.com/dry-rb/dry-core/compare/v0.3.2...v0.3.3)
|
|
90
105
|
|
|
@@ -92,7 +107,7 @@
|
|
|
92
107
|
|
|
93
108
|
### Added
|
|
94
109
|
|
|
95
|
-
|
|
110
|
+
- Accept an existing logger object in `Dry::Core::Deprecations.set_logger!` (flash-gordon)
|
|
96
111
|
|
|
97
112
|
[Compare v0.3.1...v0.3.2](https://github.com/dry-rb/dry-core/compare/v0.3.1...v0.3.2)
|
|
98
113
|
|
|
@@ -100,7 +115,7 @@
|
|
|
100
115
|
|
|
101
116
|
### Added
|
|
102
117
|
|
|
103
|
-
|
|
118
|
+
- Support for building classes within an existing namespace (flash-gordon)
|
|
104
119
|
|
|
105
120
|
[Compare v0.3.0...v0.3.1](https://github.com/dry-rb/dry-core/compare/v0.3.0...v0.3.1)
|
|
106
121
|
|
|
@@ -108,7 +123,7 @@
|
|
|
108
123
|
|
|
109
124
|
### Changed
|
|
110
125
|
|
|
111
|
-
|
|
126
|
+
- Class attributes are initialized _before_ running the `inherited` hook. It's slightly more convenient behavior and it's very unlikely anyone will be affected by this, but technically this is a breaking change (flash-gordon)
|
|
112
127
|
|
|
113
128
|
[Compare v0.2.4...v0.3.0](https://github.com/dry-rb/dry-core/compare/v0.2.4...v0.3.0)
|
|
114
129
|
|
|
@@ -116,7 +131,7 @@
|
|
|
116
131
|
|
|
117
132
|
### Fixed
|
|
118
133
|
|
|
119
|
-
|
|
134
|
+
- Do not require deprecated method to be defined (flash-gordon)
|
|
120
135
|
|
|
121
136
|
[Compare v0.2.3...v0.2.4](https://github.com/dry-rb/dry-core/compare/v0.2.3...v0.2.4)
|
|
122
137
|
|
|
@@ -124,7 +139,7 @@
|
|
|
124
139
|
|
|
125
140
|
### Fixed
|
|
126
141
|
|
|
127
|
-
|
|
142
|
+
- Fix warnings on using uninitialized class attributes (flash-gordon)
|
|
128
143
|
|
|
129
144
|
[Compare v0.2.2...v0.2.3](https://github.com/dry-rb/dry-core/compare/v0.2.2...v0.2.3)
|
|
130
145
|
|
|
@@ -132,7 +147,7 @@
|
|
|
132
147
|
|
|
133
148
|
### Added
|
|
134
149
|
|
|
135
|
-
|
|
150
|
+
- `ClassAttributes` which provides `defines` method for defining get-or-set methods (flash-gordon)
|
|
136
151
|
|
|
137
152
|
[Compare v0.2.1...v0.2.2](https://github.com/dry-rb/dry-core/compare/v0.2.1...v0.2.2)
|
|
138
153
|
|
|
@@ -140,7 +155,7 @@
|
|
|
140
155
|
|
|
141
156
|
### Added
|
|
142
157
|
|
|
143
|
-
|
|
158
|
+
- `Constants` are now available in nested scopes (flash-gordon)
|
|
144
159
|
|
|
145
160
|
[Compare v0.2.0...v0.2.1](https://github.com/dry-rb/dry-core/compare/v0.2.0...v0.2.1)
|
|
146
161
|
|
data/Gemfile
CHANGED
|
@@ -11,12 +11,11 @@ group :test do
|
|
|
11
11
|
gem 'inflecto', '~> 0.0', '>= 0.0.2'
|
|
12
12
|
gem 'codeclimate-test-reporter', require: false
|
|
13
13
|
gem 'simplecov', require: false
|
|
14
|
-
gem 'dry-types'
|
|
15
|
-
gem 'dry-inflector'
|
|
14
|
+
gem 'dry-types', '~> 1.0'
|
|
15
|
+
gem 'dry-inflector'
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
group :tools do
|
|
19
19
|
gem 'pry-byebug', platform: :mri
|
|
20
20
|
gem 'pry', platform: :jruby
|
|
21
|
-
gem 'rubocop'
|
|
22
21
|
end
|
data/README.md
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
[travis]: https://travis-ci.org/dry-rb/dry-core
|
|
4
4
|
[code_climate]: https://codeclimate.com/github/dry-rb/dry-core
|
|
5
5
|
[inch]: http://inch-ci.org/github/dry-rb/dry-core
|
|
6
|
+
[chat]: https://dry-rb.zulipchat.com
|
|
6
7
|
|
|
7
|
-
# dry-core
|
|
8
|
+
# dry-core [][chat]
|
|
8
9
|
|
|
9
10
|
[][gem]
|
|
10
11
|
[][travis]
|
|
@@ -15,6 +16,20 @@
|
|
|
15
16
|
|
|
16
17
|
A collection of small modules used in the dry-rb ecosystem.
|
|
17
18
|
|
|
19
|
+
## Links
|
|
20
|
+
|
|
21
|
+
* [User docs](https://dry-rb.org/gems/dry-core)
|
|
22
|
+
* [API docs](http://rubydoc.info/gems/dry-core)
|
|
23
|
+
|
|
24
|
+
## Supported Ruby versions
|
|
25
|
+
|
|
26
|
+
This library officially supports following Ruby versions:
|
|
27
|
+
|
|
28
|
+
* MRI >= `2.4`
|
|
29
|
+
* jruby >= `9.2`
|
|
30
|
+
|
|
31
|
+
It **should** work on MRI `2.3.x` too, but there's no official support for this version.
|
|
32
|
+
|
|
18
33
|
## Installation
|
|
19
34
|
|
|
20
35
|
Add this line to your application's Gemfile:
|
data/Rakefile
CHANGED
data/dry-core.gemspec
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
lib = File.expand_path('../lib', __FILE__)
|
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
5
|
require 'dry/core/version'
|
|
@@ -28,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
|
28
30
|
spec.required_ruby_version = '>= 2.1.0'
|
|
29
31
|
spec.add_runtime_dependency 'concurrent-ruby', '~> 1.0'
|
|
30
32
|
|
|
31
|
-
spec.add_development_dependency 'bundler'
|
|
33
|
+
spec.add_development_dependency 'bundler'
|
|
32
34
|
spec.add_development_dependency 'rake', '~> 10.0'
|
|
33
35
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
34
36
|
end
|
data/lib/dry-core.rb
CHANGED
data/lib/dry/core.rb
CHANGED
data/lib/dry/core/cache.rb
CHANGED
data/lib/dry/core/constants.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'set'
|
|
2
4
|
|
|
3
5
|
module Dry
|
|
@@ -48,13 +50,13 @@ module Dry
|
|
|
48
50
|
# otherwise return the second arg or yield the block.
|
|
49
51
|
#
|
|
50
52
|
# @example
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
53
|
+
# def method(val = Undefined)
|
|
54
|
+
# 1 + Undefined.default(val, 2)
|
|
55
|
+
# end
|
|
54
56
|
#
|
|
55
57
|
def undefined.default(x, y = self)
|
|
56
|
-
if
|
|
57
|
-
if
|
|
58
|
+
if equal?(x)
|
|
59
|
+
if equal?(y)
|
|
58
60
|
yield
|
|
59
61
|
else
|
|
60
62
|
y
|
|
@@ -63,6 +65,21 @@ module Dry
|
|
|
63
65
|
x
|
|
64
66
|
end
|
|
65
67
|
end
|
|
68
|
+
|
|
69
|
+
# Map a non-undefined value
|
|
70
|
+
#
|
|
71
|
+
# @example
|
|
72
|
+
# def add_five(val = Undefined)
|
|
73
|
+
# Undefined.map(val) { |x| x + 5 }
|
|
74
|
+
# end
|
|
75
|
+
#
|
|
76
|
+
def undefined.map(value)
|
|
77
|
+
if equal?(value)
|
|
78
|
+
self
|
|
79
|
+
else
|
|
80
|
+
yield(value)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
66
83
|
end.freeze
|
|
67
84
|
|
|
68
85
|
def self.included(base)
|
data/lib/dry/core/errors.rb
CHANGED
data/lib/dry/core/extensions.rb
CHANGED
data/lib/dry/core/inflector.rb
CHANGED
data/lib/dry/core/memoizable.rb
CHANGED
data/lib/dry/core/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dry-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nikita Shilnikov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2019-06-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -28,16 +28,16 @@ dependencies:
|
|
|
28
28
|
name: bundler
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '0'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - "
|
|
38
|
+
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
40
|
+
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rake
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -73,10 +73,10 @@ executables: []
|
|
|
73
73
|
extensions: []
|
|
74
74
|
extra_rdoc_files: []
|
|
75
75
|
files:
|
|
76
|
+
- ".codeclimate.yml"
|
|
76
77
|
- ".gitignore"
|
|
77
78
|
- ".inch.yml"
|
|
78
79
|
- ".rspec"
|
|
79
|
-
- ".rubocop.yml"
|
|
80
80
|
- ".travis.yml"
|
|
81
81
|
- CHANGELOG.md
|
|
82
82
|
- CONTRIBUTING.md
|
|
@@ -118,8 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
118
118
|
- !ruby/object:Gem::Version
|
|
119
119
|
version: '0'
|
|
120
120
|
requirements: []
|
|
121
|
-
|
|
122
|
-
rubygems_version: 2.7.6
|
|
121
|
+
rubygems_version: 3.0.3
|
|
123
122
|
signing_key:
|
|
124
123
|
specification_version: 4
|
|
125
124
|
summary: A toolset of small support modules used throughout the dry-rb ecosystem.
|
data/.rubocop.yml
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
AllCops:
|
|
2
|
-
TargetRubyVersion: 2.1
|
|
3
|
-
Exclude:
|
|
4
|
-
- 'dry-core.gemspec'
|
|
5
|
-
- 'spec/spec_helper.rb'
|
|
6
|
-
|
|
7
|
-
Style/SignalException:
|
|
8
|
-
Exclude:
|
|
9
|
-
- 'spec/**/*'
|
|
10
|
-
|
|
11
|
-
Style/RedundantSelf:
|
|
12
|
-
Exclude:
|
|
13
|
-
- 'lib/dry/core/deprecations.rb'
|
|
14
|
-
|
|
15
|
-
Metrics/LineLength:
|
|
16
|
-
Max: 110
|
|
17
|
-
|
|
18
|
-
Metrics/MethodLength:
|
|
19
|
-
Enabled: false
|
|
20
|
-
|
|
21
|
-
Style/FileName:
|
|
22
|
-
Exclude:
|
|
23
|
-
- 'lib/dry-core.rb'
|
|
24
|
-
|
|
25
|
-
Lint/AmbiguousRegexpLiteral:
|
|
26
|
-
Exclude:
|
|
27
|
-
- 'spec/**/*'
|
|
28
|
-
|
|
29
|
-
Style/BlockDelimiters:
|
|
30
|
-
Exclude:
|
|
31
|
-
- 'spec/**/*'
|