trailblazer-macro-contract 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3603305c22954cb6b53e94057b4b25c4ae98d1286d5a32b0b0a2292325156086
4
- data.tar.gz: 952c4060256225918cfbd41939f2b6fb479cd153b4416967f8ef03682033cb42
3
+ metadata.gz: 523435b29f2464a1677f6b430e8285b62841e4b24f4ebfdf19bcab531239ba70
4
+ data.tar.gz: 30cda42970110b3d8b280d002b785ada64445cb8212b1a6040432df5218f8fa4
5
5
  SHA512:
6
- metadata.gz: 2f1118cf2e91af6c8a95c9c7050ae6bf43a82ebe7fca82b15255b53f7ace0c3a46e76a02efcaaa94195d6003fdba8c4acaeeb8fb30580c7eb09a5c765b44c690
7
- data.tar.gz: 55ee53d0e937672aee52552167ad987f4c36f99f669966dd5f2a417c9bfc047c897b6981b4eebceb4dc1e9e1136c0adfa6efb5fea962e1a860abbc2edd01cd51
6
+ metadata.gz: b9922fdf9cfac45598fe3d1d4672e708bacf54e41779b38d35e28dbfbee78de92eafe29bdabcda01369bbcf96265917129d0cdc0d8abcc85b1bf3cb2c3c4bbf3
7
+ data.tar.gz: bb8f91f57343237ac0995fa8f2516558ccabf799c9b0bf64c0c6024bae6a61285ba867bb97e1d10d2b99fc8e510ad611a6a523bf439d2df01f9ced40c6eeefa7
@@ -26,8 +26,6 @@ Style/AndOr:
26
26
  EnforcedStyle: conditionals
27
27
  Style/AutoResourceCleanup:
28
28
  Enabled: true
29
- Style/CollectionMethods:
30
- Enabled: true
31
29
  Style/Documentation:
32
30
  Enabled: false
33
31
  Style/EmptyLiteral:
@@ -49,13 +47,6 @@ Style/NumericLiterals:
49
47
  Enabled: false
50
48
  Style/OptionHash:
51
49
  Enabled: true
52
- Style/PercentLiteralDelimiters:
53
- PreferredDelimiters:
54
- "%w": "[]"
55
- "%W": "[]"
56
- "%i": "[]"
57
- "%I": "[]"
58
- "%r": "()"
59
50
  Style/ReturnNil:
60
51
  Enabled: true
61
52
  Style/SafeNavigation:
@@ -94,27 +85,24 @@ Lint/UnreachableCode:
94
85
  Enabled: false
95
86
  Lint/Void:
96
87
  Enabled: false
97
- Layout/AlignHash:
98
- EnforcedLastArgumentHashStyle: ignore_implicit
99
88
  Metrics/AbcSize:
100
89
  Max: 25
101
90
  Style/LambdaCall:
102
91
  Enabled: false
103
92
  Style/Semicolon:
104
93
  Enabled: false
105
- Naming/UncommunicativeMethodParamName:
94
+ Naming/MethodParameterName:
106
95
  Enabled: false
107
96
  Style/ClassAndModuleChildren:
108
97
  Enabled: false
109
98
  Layout/LeadingCommentSpace:
110
99
  Exclude:
111
100
  - 'test/docs/**/*'
112
- Layout/AlignHash:
101
+ Layout/HashAlignment:
113
102
  EnforcedHashRocketStyle: table
103
+ EnforcedColonStyle: table
114
104
  Style/FrozenStringLiteralComment:
115
105
  Enabled: false
116
- Layout/AlignHash:
117
- EnforcedColonStyle: table
118
106
  SingleLineMethods:
119
107
  Enabled: false
120
108
  Style/Lambda:
@@ -132,5 +120,8 @@ Style/PercentLiteralDelimiters:
132
120
  "%r": '{}'
133
121
  "%w": '[]'
134
122
  "%": '{}'
123
+ "%W": '[]'
124
+ "%i": '[]'
125
+ "%I": '[]'
135
126
  Style/HashSyntax:
136
127
  Enabled: false
data/CHANGES.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 2.1.1
2
+
3
+ * Support for Ruby 3.0.
4
+
1
5
  # 2.1.0
2
6
 
3
7
  * Finally.
data/Gemfile CHANGED
@@ -9,6 +9,7 @@ gem "dry-matcher"
9
9
  # gem "trailblazer-macro", path: "../trailblazer-macro"
10
10
  # gem "trailblazer-activity", path: "../trailblazer-activity"
11
11
  # gem "trailblazer-activity-dsl-linear", path: "../trailblazer-activity-dsl-linear"
12
+ # gem "reform", path: "../reform"
12
13
 
13
14
  gem "minitest-line"
14
15
 
@@ -1,5 +1,19 @@
1
- require "reform"
2
- require "trailblazer/operation"
3
- require "trailblazer/operation/contract"
4
- require "trailblazer/operation/validate"
5
- require "trailblazer/operation/persist"
1
+ require "trailblazer/activity"
2
+ require "trailblazer/activity/dsl/linear"
3
+
4
+ require "trailblazer/macro/contract/build"
5
+ require "trailblazer/macro/contract/validate"
6
+ require "trailblazer/macro/contract/persist"
7
+
8
+ module Trailblazer
9
+ module Macro
10
+ module Contract
11
+ end
12
+ end
13
+
14
+ # All macros sit in the {Trailblazer::Macro::Contract} namespace, where we forward calls from
15
+ # operations and activities to.
16
+ module Activity::DSL::Linear::Helper
17
+ Contract = Macro::Contract
18
+ end
19
+ end
@@ -1,5 +1,7 @@
1
+ require "reform"
2
+
1
3
  module Trailblazer
2
- class Operation
4
+ module Macro
3
5
  module Contract
4
6
  def self.Build(name: "default", constant: nil, builder: nil)
5
7
  task = lambda do |(options, flow_options), **circuit_options|
@@ -27,12 +29,13 @@ module Trailblazer
27
29
  end
28
30
  end
29
31
 
30
- def self.call_builder(options, circuit_options, builder: raise, constant: raise, name: raise)
31
- tmp_options = options.to_hash.merge(
32
+ def self.call_builder(ctx, circuit_options, builder: raise, constant: raise, name: raise)
33
+ tmp_options = ctx.to_hash.merge(
32
34
  constant: constant,
33
35
  name: name
34
36
  )
35
- Trailblazer::Option(builder).(options, tmp_options, circuit_options)
37
+
38
+ Trailblazer::Option(builder).(ctx, keyword_arguments: tmp_options, **circuit_options) # TODO: why can't we build the {builder} at compile time?
36
39
  end
37
40
  end
38
41
 
@@ -1,5 +1,5 @@
1
1
  module Trailblazer
2
- class Operation
2
+ module Macro
3
3
  module Contract
4
4
  def self.Persist(method: :save, name: "default")
5
5
  path = :"contract.#{name}"
@@ -1,11 +1,11 @@
1
1
  module Trailblazer
2
- class Operation
2
+ module Macro
3
3
  module Contract
4
4
  # result.contract = {..}
5
5
  # result.contract.errors = {..}
6
6
  # Deviate to left track if optional key is not found in params.
7
7
  # Deviate to left if validation result falsey.
8
- def self.Validate(skip_extract: false, name: "default", representer: false, key: nil, constant: nil) # DISCUSS: should we introduce something like Validate::Deserializer?
8
+ def self.Validate(skip_extract: false, name: "default", representer: false, key: nil, constant: nil, invalid_data_terminus: false) # DISCUSS: should we introduce something like Validate::Deserializer?
9
9
  params_path = :"contract.#{name}.params" # extract_params! save extracted params here.
10
10
 
11
11
  extract = Validate::Extract.new(key: key, params_path: params_path).freeze
@@ -23,6 +23,9 @@ module Trailblazer
23
23
  # Deviate End.extract_failure to the standard failure track as a default. This can be changed from the user side.
24
24
  options = options.merge(activity.Output(:extract_failure) => activity.Track(:failure)) unless skip_extract
25
25
 
26
+ # Halt failure track to End with {contract.name.invalid}.
27
+ options = options.merge(activity.Output(:failure) => activity.End(:invalid_data)) if invalid_data_terminus
28
+
26
29
  options
27
30
  end
28
31
 
@@ -33,7 +36,7 @@ module Trailblazer
33
36
  @key, @params_path = key, params_path
34
37
  end
35
38
 
36
- def call(ctx, params:, **)
39
+ def call(ctx, params: {}, **)
37
40
  ctx[@params_path] = @key ? params[@key] : params
38
41
  end
39
42
  end
@@ -46,7 +49,7 @@ module Trailblazer
46
49
  def call(ctx, **)
47
50
  validate!(
48
51
  ctx,
49
- representer: ctx["representer.#{@name}.class"] ||= @representer, # FIXME: maybe @representer should use DI.
52
+ representer: ctx[:"representer.#{@name}.class"] ||= @representer, # FIXME: maybe @representer should use DI.
50
53
  params_path: @params_path
51
54
  )
52
55
  end
@@ -71,5 +74,5 @@ module Trailblazer
71
74
  end
72
75
  end
73
76
  end
74
- end # Operation
77
+ end # Macro
75
78
  end
@@ -2,7 +2,7 @@ module Trailblazer
2
2
  module Version
3
3
  module Macro
4
4
  module Contract
5
- VERSION = "2.1.0"
5
+ VERSION = "2.1.1"
6
6
  end
7
7
  end
8
8
  end
@@ -57,15 +57,15 @@ class DocsContractOverviewTest < Minitest::Spec
57
57
  it "shows 2-level tracing" do
58
58
  result = Create.trace( params: { length: "A" } )
59
59
  result.wtf.gsub(/0x\w+/, "").must_equal %{`-- DocsContractOverviewTest::Create
60
- |-- Start.default
61
- |-- model.build
62
- |-- contract.build
63
- |-- contract.default.validate
64
- | |-- Start.default
65
- | |-- contract.default.params_extract
66
- | |-- contract.default.call
67
- | `-- End.failure
68
- `-- End.failure}
60
+ |-- Start.default
61
+ |-- model.build
62
+ |-- contract.build
63
+ |-- contract.default.validate
64
+ | |-- Start.default
65
+ | |-- contract.default.params_extract
66
+ | |-- contract.default.call
67
+ | `-- End.failure
68
+ `-- End.failure}
69
69
  end
70
70
  end
71
71
  #---
@@ -297,6 +297,46 @@ class DocsContractKeyWithOutputTest < Minitest::Spec
297
297
  end
298
298
  end
299
299
 
300
+ #---
301
+ #- Validate( name: "default", invalid_data_terminus: true )
302
+ class DocsContractInvalidEndTest < Minitest::Spec
303
+ Song = Class.new(ContractConstantTest::Song)
304
+
305
+ module Song::Contract
306
+ Create = ContractConstantTest::Song::Contract::Create
307
+ end
308
+
309
+ #:invalid-end
310
+ class Song::Create < Trailblazer::Operation
311
+ step Model( Song, :new )
312
+ step Contract::Build( constant: Song::Contract::Create )
313
+ step Contract::Validate( key: :song, invalid_data_terminus: true )
314
+ step Contract::Persist( )
315
+ end
316
+ #:invalid-end end
317
+
318
+ it do
319
+ result = Song::Create.(params: {song: { title: nil, length: nil }})
320
+ result.event.inspect.must_equal %{#<Trailblazer::Activity::End semantic=:invalid_data>}
321
+ end
322
+
323
+ it { Song::Create.(params: {song: { title: "SVG", length: 13 }}).inspect(:model).must_equal %{<Result:true [#<struct DocsContractInvalidEndTest::Song title=\"SVG\", length=13>] >} }
324
+
325
+ it do
326
+ #:invalid-end-res
327
+ result = Song::Create.(params: { title: "Rising Force", length: 13 })
328
+ result.success? #=> false
329
+ result.event #=> #<Trailblazer::Activity::End semantic=:"contract.default.invalid">
330
+ #:invalid-end-res end
331
+
332
+ #:invalid-end-res-false
333
+ result = Song::Create.(params: { "song" => { title: "Rising Force", length: 13 } })
334
+ result.success? #=> true
335
+ #:invalid-end-res-false end
336
+ end
337
+ end
338
+
339
+
300
340
  #- Contract::Build[ constant: XXX, name: AAA ]
301
341
  class ContractNamedConstantTest < Minitest::Spec
302
342
  Song = Class.new(ContractConstantTest::Song)
@@ -367,16 +407,20 @@ class DryValidationContractTest < Minitest::Spec
367
407
  class Create < Trailblazer::Operation
368
408
  # contract to verify params formally.
369
409
  class MyContract < Reform::Form
370
- feature Reform::Form::Dry
410
+ feature Dry
371
411
  property :id
372
412
  property :title
373
413
 
374
414
  validation name: :default do
375
- required(:id).filled
415
+ params do
416
+ required(:id).filled
417
+ end
376
418
  end
377
419
 
378
420
  validation name: :extra, if: :default do
379
- required(:title).filled(min_size?: 2)
421
+ params do
422
+ required(:title).filled(min_size?: 2)
423
+ end
380
424
  end
381
425
  end
382
426
  #~form end
@@ -405,8 +449,10 @@ class DryValidationContractTest < Minitest::Spec
405
449
  #---
406
450
  # Contract::Validate(constant: DrySchema)
407
451
  class OpWithSchema < Trailblazer::Operation
408
- Schema = Dry::Validation.Schema do
409
- required(:title).filled
452
+ Schema = Dry::Validation.Contract do
453
+ params do
454
+ required(:title).filled
455
+ end
410
456
  end
411
457
 
412
458
  step Model( Song, :new ) # FIXME.
@@ -420,7 +466,7 @@ class DryValidationContractTest < Minitest::Spec
420
466
  it "shows error messages" do
421
467
  result = OpWithSchema.(params: {song: { title: nil }})
422
468
 
423
- result[:"result.contract.default"].errors.must_equal(title: ["must be filled"])
469
+ result[:"result.contract.default"].errors.inspect.must_equal %{#<Dry::Validation::MessageSet messages=[#<Dry::Schema::Message text=\"must be filled\" path=[:title] predicate=:filled? input=nil>] options={:source=>[#<Dry::Schema::Message text=\"must be filled\" path=[:title] predicate=:filled? input=nil>], :hints=>false}>}
424
470
  end
425
471
  # key not found
426
472
  it { OpWithSchema.(params: {}).success?.must_equal false }
@@ -1,33 +1,33 @@
1
- require "test_helper"
2
- require "dry/container"
1
+ # require "test_helper"
2
+ # require "dry/container"
3
3
 
4
- class DryContainerTest < Minitest::Spec
5
- Song = Struct.new(:id, :title)
4
+ # class DryContainerTest < Minitest::Spec
5
+ # Song = Struct.new(:id, :title)
6
6
 
7
- class MyContract < Reform::Form
8
- property :title
9
- validates :title, length: 2..33
10
- end
7
+ # class MyContract < Reform::Form
8
+ # property :title
9
+ # validates :title, length: 2..33
10
+ # end
11
11
 
12
- my_container = Dry::Container.new
13
- my_container.register("contract.default.class", MyContract)
14
- # my_container.namespace("contract") do
15
- # register("create") { Array }
16
- # end
12
+ # my_container = Dry::Container.new
13
+ # my_container.register("contract.default.class", MyContract)
14
+ # # my_container.namespace("contract") do
15
+ # # register("create") { Array }
16
+ # # end
17
17
 
18
- #---
19
- #- dependency injection
20
- #- with Dry-container
21
- class Create < Trailblazer::Operation
22
- extend Trailblazer::Operation::Container
18
+ # #---
19
+ # #- dependency injection
20
+ # #- with Dry-container
21
+ # class Create < Trailblazer::Operation
22
+ # extend Trailblazer::Operation::Container
23
23
 
24
- step Model(Song, :new)
25
- step Contract::Build()
26
- step Contract::Validate()
27
- step Contract::Persist(method: :sync)
28
- end
29
- #:key end
24
+ # step Model(Song, :new)
25
+ # step Contract::Build()
26
+ # step Contract::Validate()
27
+ # step Contract::Persist(method: :sync)
28
+ # end
29
+ # #:key end
30
30
 
31
- it { Create.({params: {title: "A" } }, my_container).inspect(:model).must_equal %{<Result:false [#<struct DryContainerTest::Song id=nil, title=nil>] >} }
32
- it { Create.({params: {title: "Anthony's Song" } }, my_container).inspect(:model).must_equal %{<Result:true [#<struct DryContainerTest::Song id=nil, title="Anthony's Song">] >} }
33
- end
31
+ # it { Create.({params: {title: "A" } }, my_container).inspect(:model).must_equal %{<Result:false [#<struct DryContainerTest::Song id=nil, title=nil>] >} }
32
+ # it { Create.({params: {title: "Anthony's Song" } }, my_container).inspect(:model).must_equal %{<Result:true [#<struct DryContainerTest::Song id=nil, title="Anthony's Song">] >} }
33
+ # end
@@ -59,6 +59,8 @@ class ContractTest < Minitest::Spec
59
59
  it { Upsert.(params: {song: { title: nil }}).success?.must_equal false }
60
60
  # key not found
61
61
  it { Upsert.(params: {}).success?.must_equal false }
62
+ # no params passed
63
+ it { Upsert.().success?.must_equal false }
62
64
 
63
65
  #---
64
66
  # contract.default.params gets set (TODO: change in 2.1)
data/test/test_helper.rb CHANGED
@@ -1,9 +1,11 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require "trailblazer-macro-contract"
3
+
1
4
  require "pp"
2
5
  require 'delegate'
6
+ require "trailblazer/operation"
3
7
  require "trailblazer/developer"
4
8
  require "trailblazer/macro"
5
- require "trailblazer-macro-contract"
6
- require "trailblazer/developer/render/linear"
7
9
  require "minitest/autorun"
8
10
 
9
11
  # TODO: convert tests to non-rails.
@@ -7,8 +7,8 @@ Gem::Specification.new do |spec|
7
7
  spec.version = Trailblazer::Version::Macro::Contract::VERSION
8
8
  spec.authors = ["Nick Sutterer"]
9
9
  spec.email = ["apotonick@gmail.com"]
10
- spec.description = 'Trailblazer operation form object specific macros'
11
- spec.summary = 'Macros for form-objects: Build, Validate, Persist'
10
+ spec.description = 'Operation macros for form objects'
11
+ spec.summary = 'Macros for form objects: Build, Validate, Persist'
12
12
  spec.homepage = "http://trailblazer.to"
13
13
  spec.license = "LGPL-3.0"
14
14
 
@@ -21,13 +21,17 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency "reform", ">= 2.2.0", "< 3.0.0"
22
22
 
23
23
  spec.add_development_dependency "bundler"
24
- spec.add_development_dependency "dry-validation", "0.11.1" # FIXME: upgrade example code
24
+ spec.add_development_dependency "dry-validation"
25
25
  spec.add_development_dependency "reform-rails", "~> 0.2.0.rc2"
26
- spec.add_development_dependency "trailblazer-macro", ">= 2.1.0", "< 2.2.0"
26
+ spec.add_development_dependency "trailblazer-operation", ">= 0.6.2"
27
+ spec.add_development_dependency "trailblazer-macro", ">= 2.1.5"
27
28
  spec.add_development_dependency "trailblazer-developer"
29
+ spec.add_development_dependency "activemodel", "~> 6.0.0" # FIXME: we still don't support the Rails 6.1 errors object.
28
30
 
29
31
  spec.add_development_dependency "minitest"
30
32
  spec.add_development_dependency "rake"
31
33
 
34
+ spec.add_dependency "trailblazer-activity-dsl-linear", ">= 0.4.0", "< 0.5.0"
35
+
32
36
  spec.required_ruby_version = ">= 2.0.0"
33
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-macro-contract
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-23 00:00:00.000000000 Z
11
+ date: 2021-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: reform
@@ -48,16 +48,16 @@ dependencies:
48
48
  name: dry-validation
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - '='
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 0.11.1
53
+ version: '0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - '='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 0.11.1
60
+ version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: reform-rails
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -73,25 +73,33 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: 0.2.0.rc2
75
75
  - !ruby/object:Gem::Dependency
76
- name: trailblazer-macro
76
+ name: trailblazer-operation
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: 2.1.0
82
- - - "<"
83
- - !ruby/object:Gem::Version
84
- version: 2.2.0
81
+ version: 0.6.2
85
82
  type: :development
86
83
  prerelease: false
87
84
  version_requirements: !ruby/object:Gem::Requirement
88
85
  requirements:
89
86
  - - ">="
90
87
  - !ruby/object:Gem::Version
91
- version: 2.1.0
92
- - - "<"
88
+ version: 0.6.2
89
+ - !ruby/object:Gem::Dependency
90
+ name: trailblazer-macro
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
93
94
  - !ruby/object:Gem::Version
94
- version: 2.2.0
95
+ version: 2.1.5
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 2.1.5
95
103
  - !ruby/object:Gem::Dependency
96
104
  name: trailblazer-developer
97
105
  requirement: !ruby/object:Gem::Requirement
@@ -106,6 +114,20 @@ dependencies:
106
114
  - - ">="
107
115
  - !ruby/object:Gem::Version
108
116
  version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: activemodel
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 6.0.0
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 6.0.0
109
131
  - !ruby/object:Gem::Dependency
110
132
  name: minitest
111
133
  requirement: !ruby/object:Gem::Requirement
@@ -134,7 +156,27 @@ dependencies:
134
156
  - - ">="
135
157
  - !ruby/object:Gem::Version
136
158
  version: '0'
137
- description: Trailblazer operation form object specific macros
159
+ - !ruby/object:Gem::Dependency
160
+ name: trailblazer-activity-dsl-linear
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: 0.4.0
166
+ - - "<"
167
+ - !ruby/object:Gem::Version
168
+ version: 0.5.0
169
+ type: :runtime
170
+ prerelease: false
171
+ version_requirements: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: 0.4.0
176
+ - - "<"
177
+ - !ruby/object:Gem::Version
178
+ version: 0.5.0
179
+ description: Operation macros for form objects
138
180
  email:
139
181
  - apotonick@gmail.com
140
182
  executables: []
@@ -154,10 +196,10 @@ files:
154
196
  - Rakefile
155
197
  - lib/trailblazer-macro-contract.rb
156
198
  - lib/trailblazer/macro/contract.rb
199
+ - lib/trailblazer/macro/contract/build.rb
200
+ - lib/trailblazer/macro/contract/persist.rb
201
+ - lib/trailblazer/macro/contract/validate.rb
157
202
  - lib/trailblazer/macro/contract/version.rb
158
- - lib/trailblazer/operation/contract.rb
159
- - lib/trailblazer/operation/persist.rb
160
- - lib/trailblazer/operation/validate.rb
161
203
  - test/docs/contract_test.rb
162
204
  - test/docs/dry_test.rb
163
205
  - test/operation/contract_test.rb
@@ -183,11 +225,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
225
  - !ruby/object:Gem::Version
184
226
  version: '0'
185
227
  requirements: []
186
- rubyforge_project:
187
- rubygems_version: 2.7.6
228
+ rubygems_version: 3.2.3
188
229
  signing_key:
189
230
  specification_version: 4
190
- summary: 'Macros for form-objects: Build, Validate, Persist'
231
+ summary: 'Macros for form objects: Build, Validate, Persist'
191
232
  test_files:
192
233
  - test/docs/contract_test.rb
193
234
  - test/docs/dry_test.rb