redress 0.4.2 → 0.5.0

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: 772e4827f0e4284c62be00daaf8f95f99f03757f777807c1f21665c9507dc0aa
4
- data.tar.gz: c0fb8aa632d6ba383d9aac4cc46ea156557c29064d794d391b55d2ff51e7bf26
3
+ metadata.gz: dcc21824a6395eda1bf8c8c9dab35e5ff6e87e458d3d696ec5ebf59a03c26217
4
+ data.tar.gz: 12969e57fc763d657da28fb4f74cc923e7932282a034741f944dc3f6664b252c
5
5
  SHA512:
6
- metadata.gz: 978d2dbfceb765a99f50f56f430ac8cdce00573954ba3c9fb1b98995f42095ce66e916ede4c1ea0890743d3585abc72f2b8e1b755f3c71662002170018058347
7
- data.tar.gz: cb5cae4a7de7d7a19ae8b8f0c570c08ceab79d2c3679c752adbba4adab9f3b7ac38d6dbd1c41734fd453a6beb6b2c5358cff4bf27fba460c842aa096919677d9
6
+ metadata.gz: cc0980ae192ae4bffe7ca1f96f2a7eea931a9120d72d3a94a90d4578f1cbfa234fb45661705bc79fa312c0724b8a61c8501a2a4fb2180cce1947337654701195
7
+ data.tar.gz: 026f35ad1df1922b4bb2ca06da41c0a2d158be430e85c3fda2b9eeab0231e17a82a9bd51c55a914c9a7541221797590cea696581262d0a91f86fac9af8488441
data/README.md CHANGED
@@ -32,6 +32,11 @@ The command pattern is sometimes called a service object, an operation, an actio
32
32
  1. wisper
33
33
  2. dry-struct
34
34
  3. hashie
35
+
36
+ ### Optional
37
+
38
+ To support validations just add activemodel to your project
39
+
35
40
  4. activemodel
36
41
 
37
42
  ## Setup
data/lib/redress.rb CHANGED
@@ -8,3 +8,8 @@ end
8
8
  require 'redress/types'
9
9
  require 'redress/form'
10
10
  require 'redress/command'
11
+
12
+ if defined?(ActiveModel)
13
+ require 'redress/hooks/active_model'
14
+ Redress::Form.include(Redress::Hooks::ActiveModel)
15
+ end
data/lib/redress/form.rb CHANGED
@@ -1,18 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'hashie/mash'
4
- require 'active_model'
5
4
  require 'dry-struct'
6
5
 
7
6
  require 'redress/utils/parse_attributes_from_params'
8
7
  require 'redress/utils/build_form_from_model'
9
8
  require 'redress/utils/attributes_hash'
9
+ require 'redress/utils/model_name_string'
10
10
 
11
11
  module Redress
12
12
  class Form < Dry::Struct
13
- include ActiveModel::Validations
14
- include ActiveModel::Conversion
15
-
16
13
  DEFAULT_NAME = 'Form'
17
14
  SPLITTER = '::'
18
15
 
@@ -21,12 +18,8 @@ module Redress
21
18
  transform_keys(&:to_sym)
22
19
  transform_types(&:omittable)
23
20
 
24
- def self.model_name
25
- ActiveModel::Name.new(self, nil, mimicked_model_name.to_s.camelize)
26
- end
27
-
28
21
  def self.mimic(model_name)
29
- @model_name = model_name.to_s.underscore.to_sym
22
+ @model_name = Redress::Utils::ModelNameString.new(model_name).to_sym
30
23
  end
31
24
 
32
25
  def self.mimicked_model_name
@@ -37,7 +30,7 @@ module Redress
37
30
  class_name = name.split(SPLITTER).last
38
31
  return :form if class_name == DEFAULT_NAME
39
32
 
40
- class_name.chomp(DEFAULT_NAME).underscore.to_sym
33
+ Redress::Utils::ModelNameString.new(class_name.chomp(DEFAULT_NAME)).to_sym
41
34
  end
42
35
 
43
36
  def self.from_params(params, options = nil)
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_model'
4
+
5
+ module Redress
6
+ module Hooks
7
+ module ActiveModel
8
+ def self.included(base)
9
+ base.extend(ClassMethods)
10
+ base.include(::ActiveModel::Validations)
11
+ base.include(::ActiveModel::Conversion)
12
+ end
13
+
14
+ module ClassMethods
15
+ def model_name
16
+ ::ActiveModel::Name.new(self, nil, mimicked_model_name.to_s.camelize)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -12,7 +12,7 @@ module Redress
12
12
  end
13
13
 
14
14
  def self.version
15
- '0.4.2'
15
+ '0.5.0'
16
16
  end
17
17
 
18
18
  def self.version_label
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Redress
4
+ module Utils
5
+ class ModelNameString
6
+ attr_reader :original
7
+
8
+ def initialize(original)
9
+ @original = original.to_s
10
+ end
11
+
12
+ def to_sym
13
+ underscore_original.to_sym
14
+ end
15
+
16
+ private
17
+
18
+ def underscore_original
19
+ if original.respond_to?(:underscore)
20
+ original.underscore
21
+ else
22
+ underscore(original)
23
+ end
24
+ end
25
+
26
+ # File activesupport/lib/active_support/inflector/methods.rb, line 92
27
+ def underscore(camel_cased_word)
28
+ return camel_cased_word unless /[A-Z-]|::/.match?(camel_cased_word)
29
+
30
+ word = camel_cased_word.to_s.gsub('::', '/')
31
+ word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
32
+ word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
33
+ word.tr!('-', '_')
34
+ word.downcase!
35
+ word
36
+ end
37
+ end
38
+ end
39
+ end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redress
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Galeta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-28 00:00:00.000000000 Z
11
+ date: 2021-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activemodel
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 4.2.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 4.2.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: dry-struct
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +72,28 @@ dependencies:
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: 5.1.4
75
+ version: '5.2'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: 5.1.4
82
+ version: '5.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: activemodel
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 4.2.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 4.2.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: coveralls
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -234,10 +234,12 @@ files:
234
234
  - lib/redress.rb
235
235
  - lib/redress/command.rb
236
236
  - lib/redress/form.rb
237
+ - lib/redress/hooks/active_model.rb
237
238
  - lib/redress/identity.rb
238
239
  - lib/redress/types.rb
239
240
  - lib/redress/utils/attributes_hash.rb
240
241
  - lib/redress/utils/build_form_from_model.rb
242
+ - lib/redress/utils/model_name_string.rb
241
243
  - lib/redress/utils/parse_attributes_from_params.rb
242
244
  homepage: https://github.com/galetahub/redress
243
245
  licenses:
@@ -258,7 +260,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
258
260
  - !ruby/object:Gem::Version
259
261
  version: '0'
260
262
  requirements: []
261
- rubygems_version: 3.0.2
263
+ rubyforge_project:
264
+ rubygems_version: 2.7.6
262
265
  signing_key:
263
266
  specification_version: 4
264
267
  summary: Build maintainable Ruby apps