From ea270b4859f64f57ffab5564d5eb4d2b447887f5 Mon Sep 17 00:00:00 2001 From: Nikita Shilnikov Date: Sat, 26 Aug 2017 22:44:12 +0300 Subject: [PATCH] Deprecate Types::Array#member --- .gitignore | 1 + CHANGELOG.md | 8 ++++++++ lib/dry/types.rb | 2 +- lib/dry/types/array.rb | 11 ++++++++--- lib/dry/types/compiler.rb | 6 +++--- log/.gitkeep | 0 spec/dry/types/array_spec.rb | 16 ++++++++++++---- spec/dry/types/compiler_spec.rb | 4 ++-- spec/dry/types/constrained_spec.rb | 2 +- spec/dry/types/sum_spec.rb | 6 +++--- spec/dry/types/to_ast_spec.rb | 2 +- spec/dry/types/types/form_spec.rb | 2 +- spec/dry/types/types/json_spec.rb | 2 +- spec/spec_helper.rb | 6 ++++++ 14 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 log/.gitkeep diff --git a/.gitignore b/.gitignore index 0cb6eeb..08b7045 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /pkg/ /spec/reports/ /tmp/ +log/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 56ee567..0b4bd60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# to-be-released + +## Changed + +* `Types::Array#member` was deprecated in favor of `Types::Array#of` (flash-gordon) + +[Compare v0.11.1...master](https://github.com/dry-rb/dry-types/compare/v0.11.1...master) + # v0.11.1 2017-08-14 ## Changed diff --git a/lib/dry/types.rb b/lib/dry/types.rb index 2a4e23a..fedf76a 100644 --- a/lib/dry/types.rb +++ b/lib/dry/types.rb @@ -84,7 +84,7 @@ module Dry if result type_id, member_id = result[1..2] - container[type_id].member(self[member_id]) + container[type_id].of(self[member_id]) else container[name] end diff --git a/lib/dry/types/array.rb b/lib/dry/types/array.rb index 55c82e7..e050d97 100644 --- a/lib/dry/types/array.rb +++ b/lib/dry/types/array.rb @@ -1,21 +1,26 @@ require 'dry/types/array/member' +require 'dry/core/deprecations' module Dry module Types class Array < Definition + extend Dry::Core::Deprecations[:'dry-types'] + # @param [Type] type # @return [Array::Member] - def member(type) + def of(type) member = case type when String, Class then Types[type] else type end - Array::Member.new(primitive, options.merge(member: member)) + Array::Member.new(primitive, **options, member: member) end - alias_method :of, :member + alias_method :member, :of + + deprecate :member, :of end end end diff --git a/lib/dry/types/compiler.rb b/lib/dry/types/compiler.rb index f028ce1..de1a608 100644 --- a/lib/dry/types/compiler.rb +++ b/lib/dry/types/compiler.rb @@ -45,7 +45,7 @@ module Dry def visit_array(node) member, meta = node - registry['array'].member(visit(member)).meta(meta) + registry['array'].of(visit(member)).meta(meta) end def visit_hash(node) @@ -60,7 +60,7 @@ module Dry def visit_json_array(node) member, meta = node - registry['json.array'].member(visit(member)).meta(meta) + registry['json.array'].of(visit(member)).meta(meta) end def visit_form_hash(node) @@ -70,7 +70,7 @@ module Dry def visit_form_array(node) member, meta = node - registry['form.array'].member(visit(member)).meta(meta) + registry['form.array'].of(visit(member)).meta(meta) end def visit_member(node) diff --git a/log/.gitkeep b/log/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/spec/dry/types/array_spec.rb b/spec/dry/types/array_spec.rb index 98148f2..79f955d 100644 --- a/spec/dry/types/array_spec.rb +++ b/spec/dry/types/array_spec.rb @@ -1,7 +1,7 @@ require 'spec/dry/types' RSpec.describe Dry::Types::Array do - describe '#member' do + describe '#of' do context 'primitive' do shared_context 'array with a member type' do it 'returns an array with correct member values' do @@ -20,14 +20,14 @@ RSpec.describe Dry::Types::Array do end context 'using method' do - subject(:array) { Dry::Types['coercible.array'].member(Dry::Types['coercible.string']) } + subject(:array) { Dry::Types['coercible.array'].of(Dry::Types['coercible.string']) } include_context 'array with a member type' end context 'using a constrained type' do subject(:array) do - Dry::Types['array'].member(Dry::Types['coercible.int'].constrained(gt: 2)) + Dry::Types['array'].of(Dry::Types['coercible.int'].constrained(gt: 2)) end it 'passes values through member type' do @@ -48,8 +48,16 @@ RSpec.describe Dry::Types::Array do end end + describe '#member' do + subject(:array) { Dry::Types['coercible.array'].member(Dry::Types['coercible.string']) } + + it 'still works though deprecated' do + expect(array[Set[1, 2, 3]]).to eql(%w(1 2 3)) + end + end + describe '#valid?' do - subject(:array) { Dry::Types['strict.array'].member(Dry::Types['strict.string']) } + subject(:array) { Dry::Types['strict.array'].of(Dry::Types['strict.string']) } it 'detects invalid input of the completely wrong type' do expect(array.valid?(5)).to be(false) diff --git a/spec/dry/types/compiler_spec.rb b/spec/dry/types/compiler_spec.rb index a5abac6..04f901b 100644 --- a/spec/dry/types/compiler_spec.rb +++ b/spec/dry/types/compiler_spec.rb @@ -128,7 +128,7 @@ RSpec.describe Dry::Types::Compiler, '#call' do end it 'builds an array' do - ast = Dry::Types['array'].member( + ast = Dry::Types['array'].of( Dry::Types['hash'].symbolized( email: Dry::Types['string'], age: Dry::Types['form.int'], @@ -164,7 +164,7 @@ RSpec.describe Dry::Types::Compiler, '#call' do end it 'builds a safe form array with member' do - ast = Dry::Types['form.array'].member(Dry::Types['coercible.int']).to_ast + ast = Dry::Types['form.array'].of(Dry::Types['coercible.int']).to_ast arr = compiler.(ast) diff --git a/spec/dry/types/constrained_spec.rb b/spec/dry/types/constrained_spec.rb index 8eae75f..38dcd51 100644 --- a/spec/dry/types/constrained_spec.rb +++ b/spec/dry/types/constrained_spec.rb @@ -111,7 +111,7 @@ RSpec.describe Dry::Types::Constrained do subject(:type) do Dry::Types['strict.array'] .constrained(size: 3) - .member(Dry::Types['coercible.string']) + .of(Dry::Types['coercible.string']) end it_behaves_like Dry::Types::Definition diff --git a/spec/dry/types/sum_spec.rb b/spec/dry/types/sum_spec.rb index eb32065..0c55480 100644 --- a/spec/dry/types/sum_spec.rb +++ b/spec/dry/types/sum_spec.rb @@ -79,15 +79,15 @@ RSpec.describe Dry::Types::Sum do it 'works with two complex types with constraints' do pair = Dry::Types['strict.array'] - .member(Dry::Types['coercible.string']) + .of(Dry::Types['coercible.string']) .constrained(size: 2) string_list = Dry::Types['strict.array'] - .member(Dry::Types['strict.string']) + .of(Dry::Types['strict.string']) .constrained(min_size: 1) string_pairs = Dry::Types['strict.array'] - .member(pair) + .of(pair) .constrained(min_size: 1) type = string_list | string_pairs diff --git a/spec/dry/types/to_ast_spec.rb b/spec/dry/types/to_ast_spec.rb index 4d2b592..4c28e86 100644 --- a/spec/dry/types/to_ast_spec.rb +++ b/spec/dry/types/to_ast_spec.rb @@ -181,7 +181,7 @@ RSpec.describe Dry::Types, '#to_ast' do context 'Member' do subject(:type) do - Dry::Types['array'].member(Dry::Types['string']) + Dry::Types['array'].of(Dry::Types['string']) end specify do diff --git a/spec/dry/types/types/form_spec.rb b/spec/dry/types/types/form_spec.rb index 905d839..7c4c983 100644 --- a/spec/dry/types/types/form_spec.rb +++ b/spec/dry/types/types/form_spec.rb @@ -231,7 +231,7 @@ RSpec.describe Dry::Types::Definition do end describe 'form.array' do - subject(:type) { Dry::Types['form.array'].member(Dry::Types['form.int']) } + subject(:type) { Dry::Types['form.array'].of(Dry::Types['form.int']) } it 'returns coerced array' do arr = %w(1 2 3) diff --git a/spec/dry/types/types/json_spec.rb b/spec/dry/types/types/json_spec.rb index f942d8d..8bc5dfd 100644 --- a/spec/dry/types/types/json_spec.rb +++ b/spec/dry/types/types/json_spec.rb @@ -64,7 +64,7 @@ RSpec.describe Dry::Types::Definition do end describe 'json.array' do - subject(:type) { Dry::Types['json.array'].member(Dry::Types['int']) } + subject(:type) { Dry::Types['json.array'].of(Dry::Types['int']) } it 'returns original value when it is not an array' do foo = 'foo' diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 7974a9e..83d506d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -14,6 +14,9 @@ end $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) require 'pathname' + +SPEC_ROOT = Pathname(__FILE__).dirname + require 'dry-types' begin @@ -36,6 +39,9 @@ require_relative '../lib/spec/dry/types' Undefined = Dry::Core::Constants::Undefined +require 'dry/core/deprecations' +Dry::Core::Deprecations.set_logger!(SPEC_ROOT.join('../log/deprecations.log')) + RSpec.configure do |config| config.before(:example, :maybe) do Dry::Types.load_extensions(:maybe)