active_form_model 0.4.1 → 0.6.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: 3fa5b1a5d67328998e1001805d4ff580315861877e7d6bd423de7dc280fa80a9
4
- data.tar.gz: 95779536fb96ffa77cf4bf984c58ab992fedb5dfa1e5c8fa5eef6455f076ffd1
3
+ metadata.gz: b88234532e25374abf52ad4d112acf0bb6ead7c354ee3ea14e6b5a48d93683d2
4
+ data.tar.gz: b729d96a365226698fa5759a1fd235b33f6857395465f56f2cede90b29d6121f
5
5
  SHA512:
6
- metadata.gz: 2c192c1f9f633ebb23ff7a0e16c4186f251e31063103124f11d2a51b73783077c0336478686f38b517d6ac67a522ce4eac9e72cf9c68d27019659d08363f9353
7
- data.tar.gz: eb21b19c8e05a3409699d3f56d8bce70d84e3d2b0f27ea1ec1fa7cd7dc9f1aed4d39e8fcaf81a444f9ccc37a3131bacb20322a7eaaa544d9262308299d38368c
6
+ metadata.gz: 69425d5be399e0a00ab7c80d4075bbaff5f0c2098a2a48264f9715cab1e69ec8918058fb361cac72fb862ea134979695707f909977b38cd65a6ab7009b0e62bd
7
+ data.tar.gz: 26862a8cf1410986d7ad1252d7ac1a4854f600a159803bd281af067e53a02c6fbf09717ea92bf2b96f914dd2be51971dfe57ab1cdf0c4ab9b8a8c565b28bddd3
@@ -7,10 +7,10 @@ jobs:
7
7
  matrix:
8
8
  os: [ubuntu-latest, macos-latest]
9
9
  # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
10
- ruby: [2.7, '3.0', head]
10
+ ruby: ['3.0', head]
11
11
  runs-on: ${{ matrix.os }}
12
12
  steps:
13
- - uses: actions/checkout@v2
13
+ - uses: actions/checkout@v4
14
14
  - uses: ruby/setup-ruby@v1
15
15
  with:
16
16
  ruby-version: ${{ matrix.ruby }}
data/.rubocop.yml CHANGED
@@ -14,7 +14,8 @@ require:
14
14
 
15
15
  AllCops:
16
16
  NewCops: enable
17
- TargetRubyVersion: 2.7
17
+ Exclude:
18
+ - 'lib/generators/**/*.rb'
18
19
 
19
20
  Style/Documentation:
20
21
  Enabled: false
data/Gemfile CHANGED
@@ -11,6 +11,11 @@ gem 'rake'
11
11
 
12
12
  gem 'rubocop'
13
13
 
14
+ gem 'actionpack'
15
+ gem 'activemodel'
16
+ gem 'activerecord'
14
17
  gem 'minitest-power_assert'
15
18
  gem 'rubocop-minitest'
16
19
  gem 'rubocop-rake'
20
+ gem 'ruby-lsp', require: false
21
+ gem 'sqlite3'
data/README.md CHANGED
@@ -49,7 +49,7 @@ class UserSignUpForm < User
49
49
  include ActiveFormModel
50
50
 
51
51
  # list all the permitted params
52
- fields :first_name, :email, :password
52
+ permit :first_name, :email, :password
53
53
 
54
54
  # add validation if necessary
55
55
  # they will be merged with base class' validation
@@ -12,12 +12,13 @@ Gem::Specification.new do |spec|
12
12
  spec.description = 'Based on inheritance'
13
13
  spec.homepage = 'https://github.com/Hexlet/active_form_model'
14
14
  spec.license = 'MIT'
15
- spec.required_ruby_version = Gem::Requirement.new('>= 2.7.0')
15
+ spec.required_ruby_version = Gem::Requirement.new('>= 3.0.0')
16
16
 
17
17
  # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
18
18
 
19
19
  spec.metadata['homepage_uri'] = spec.homepage
20
20
  spec.metadata['source_code_uri'] = 'https://github.com/Hexlet/form-model.git'
21
+ spec.metadata['rubygems_mfa_required'] = 'true'
21
22
  # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
22
23
 
23
24
  # Specify which files should be added to the gem when it is released.
@@ -30,7 +31,4 @@ Gem::Specification.new do |spec|
30
31
  spec.require_paths = ['lib']
31
32
 
32
33
  spec.add_dependency('activesupport', '>= 3')
33
-
34
- spec.add_development_dependency('actionpack', '>= 5')
35
- spec.add_development_dependency('activemodel', '>= 5')
36
34
  end
@@ -1,34 +1,46 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support/deprecation/reporting'
3
+ require 'active_support/deprecation'
4
+ require 'active_support/core_ext/class/attribute'
4
5
 
5
6
  module ActiveFormModel
6
7
  module Permittable
7
8
  extend ActiveSupport::Concern
8
9
 
9
10
  included do
10
- prepend Prepended
11
- end
12
-
13
- module Prepended
14
- def initialize(attrs = {})
15
- permitted_attrs = permit_attrs(attrs)
16
- super(permitted_attrs)
17
- end
11
+ class_attribute(:_permitted_args, instance_predicate: false, default: [])
12
+ class_attribute(:_skipped_args, instance_predicate: false, default: [])
18
13
  end
19
14
 
20
15
  class_methods do
21
- def fields(*args)
22
- @_permitted_args = args
16
+ def new(attrs = nil, &block)
17
+ attrs = _permit_attrs(attrs) if attrs
18
+
19
+ super
23
20
  end
24
21
 
25
22
  def permit(*args)
26
- ActiveSupport::Deprecation.warn('permit is deprecated in favor of fields')
27
- @_permitted_args = args
23
+ self._permitted_args = _permitted_args | args
28
24
  end
29
25
 
30
- def _permitted_args
31
- @_permitted_args || (superclass.respond_to?(:_permitted_args) && superclass._permitted_args) || []
26
+ def skip_if_empty(*args)
27
+ self._skipped_args = args
28
+ end
29
+
30
+ alias_method :fields, :permit
31
+ deprecate fields: :permit, deprecator: ActiveSupport::Deprecation.new('0.6.0', 'ActiveFormModel')
32
+
33
+ def _permit_attrs(attrs)
34
+ permitted = attrs.respond_to?(:permit) ? attrs.send(:permit, _permitted_args) : attrs
35
+ _skipped_args.each do |key|
36
+ value = permitted[key.to_s] || permitted[key.to_sym]
37
+ if value.blank?
38
+ permitted.delete(key.to_s)
39
+ permitted.delete(key.to_sym)
40
+ end
41
+ end
42
+
43
+ permitted
32
44
  end
33
45
  end
34
46
 
@@ -50,7 +62,7 @@ module ActiveFormModel
50
62
  private
51
63
 
52
64
  def permit_attrs(attrs)
53
- attrs.respond_to?(:permit) ? attrs.send(:permit, self.class._permitted_args) : attrs
65
+ self.class._permit_attrs(attrs)
54
66
  end
55
67
  end
56
68
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveFormModel
4
- VERSION = '0.4.1'
4
+ VERSION = '0.6.0'
5
5
  end
@@ -10,7 +10,7 @@ module ActiveFormModel
10
10
  class_methods do
11
11
  def fields(*attrs)
12
12
  send(:attr_accessor, *attrs)
13
- super(attrs)
13
+ permit(*attrs)
14
14
  end
15
15
  end
16
16
  end
@@ -7,7 +7,7 @@ module ActiveFormModel
7
7
  source_root File.expand_path('templates', __dir__)
8
8
 
9
9
  def create_form
10
- template 'form.rb', File.join('app/forms', class_path, "#{file_name}_form.erb")
10
+ template 'form.rb', File.join('app/forms', class_path, "#{file_name}_form.rb")
11
11
  end
12
12
  end
13
13
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_form_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kirill
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2021-12-29 00:00:00.000000000 Z
10
+ date: 2025-03-26 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
@@ -24,34 +23,6 @@ dependencies:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
25
  version: '3'
27
- - !ruby/object:Gem::Dependency
28
- name: actionpack
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '5'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '5'
41
- - !ruby/object:Gem::Dependency
42
- name: activemodel
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '5'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '5'
55
26
  description: Based on inheritance
56
27
  email:
57
28
  - mokevnin@gmail.com
@@ -77,14 +48,14 @@ files:
77
48
  - lib/active_form_model/virtual.rb
78
49
  - lib/generators/active_form_model/USAGE
79
50
  - lib/generators/active_form_model/form_generator.rb
80
- - lib/generators/active_form_model/templates/form.erb
51
+ - lib/generators/active_form_model/templates/form.rb
81
52
  homepage: https://github.com/Hexlet/active_form_model
82
53
  licenses:
83
54
  - MIT
84
55
  metadata:
85
56
  homepage_uri: https://github.com/Hexlet/active_form_model
86
57
  source_code_uri: https://github.com/Hexlet/form-model.git
87
- post_install_message:
58
+ rubygems_mfa_required: 'true'
88
59
  rdoc_options: []
89
60
  require_paths:
90
61
  - lib
@@ -92,15 +63,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
63
  requirements:
93
64
  - - ">="
94
65
  - !ruby/object:Gem::Version
95
- version: 2.7.0
66
+ version: 3.0.0
96
67
  required_rubygems_version: !ruby/object:Gem::Requirement
97
68
  requirements:
98
69
  - - ">="
99
70
  - !ruby/object:Gem::Version
100
71
  version: '0'
101
72
  requirements: []
102
- rubygems_version: 3.2.32
103
- signing_key:
73
+ rubygems_version: 3.6.2
104
74
  specification_version: 4
105
75
  summary: Painless forms for ActiveRecord
106
76
  test_files: []