statinize 0.4.4 → 0.4.6

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: a2a7fe61fb4cc14c6a74ff3847b650a365688269d1e0ef34d7f1d061cd17a7a9
4
- data.tar.gz: 9c8fe51192997a3e22bc15d392a1a7df7489e080dc6c6c8db6e615d40807961d
3
+ metadata.gz: 532ce092aa6b70f135589b09d8c8f7574105e7ecbc17036e3fd2d50ffaf47813
4
+ data.tar.gz: deb8189b91a4703070b769968d1858ff77a261afa9565a7695e957bdbf381a86
5
5
  SHA512:
6
- metadata.gz: e81d152b1d3e596147d5d39ca4afdc701345cd6310b667823c824c3c88331081e4cbb3913914d48fade0b496e1b2ea5bdc32beafa6514ffdc54d679523dce1c4
7
- data.tar.gz: ae3a96d472a35a3ccd04c6b52b62cbd1aedf66676006335442e3ef5a4c9f44a75b448dfd7e66a99fb6c3fd6b194ec178a2a6ad7254a96092588b04ddcda1b043
6
+ metadata.gz: 83956b014f99a2a5438bbf0304d0bc094cd0ed83329269d1d7d46fa6ca5dd46abf2b19948e980216e1e5bb1a906a9670b26bcd966d2c327f5bd567f59e5f1340
7
+ data.tar.gz: 49bc1829a8955fccc561277a5568f7cad00fa129e6c20e8956d2037dbbea29600052eff2da1f0b8f5af720e87a9548f621cbd9488da855a3b53b8f79b652a96d
@@ -2,7 +2,7 @@ module Statinize
2
2
  class Attribute
3
3
  include Comparable
4
4
 
5
- attr_reader :klass, :name, :default, :arg_name
5
+ attr_reader :klass, :name, :default, :default_exec, :arg_name
6
6
  attr_accessor :options_collection, :options
7
7
 
8
8
  def initialize(klass, name, options)
@@ -13,6 +13,7 @@ module Statinize
13
13
  @options_collection << options.clone.extend(Options) unless options.empty?
14
14
 
15
15
  @default = options[:default] if options.key?(:default)
16
+ @default_exec = options[:default_exec] if options.key?(:default_exec)
16
17
  @arg_name = name
17
18
  @name = options[:name] || name
18
19
  end
@@ -72,6 +72,10 @@ module Statinize
72
72
  statinizer.attributes.select { |a| a.options.key?(:default) }.each do |attribute|
73
73
  public_send("#{attribute.name}=", attribute.default.deep_dup)
74
74
  end
75
+
76
+ statinizer.attributes.select { |a| a.options.key?(:default_exec) }.each do |attribute|
77
+ public_send("#{attribute.name}=", instance_exec(&attribute.default_exec))
78
+ end
75
79
  end
76
80
  end
77
81
 
@@ -50,7 +50,7 @@ module Statinize
50
50
 
51
51
  def populate(attrs)
52
52
  attrs.each do |attr|
53
- attribute attr.arg_name, name: attr.name, default: attr.default
53
+ attribute attr.arg_name, name: attr.name, default: attr.default, default_exec: attr.default_exec
54
54
  attributes.find { _1.name == attr.name }.tap do |attr_to_populate|
55
55
  attr_to_populate.options_collection = attr.options_collection.clone
56
56
  attr_to_populate.options = attr.options.clone
@@ -43,7 +43,7 @@ module Statinize
43
43
  attr_value = instance.public_send(attr.name)
44
44
 
45
45
  option.validators.each do |validator_class, validator_value|
46
- validator_instance = validator_class.new(attr_value, validator_value)
46
+ validator_instance = validator_class.new(attr_value, validator_value, instance)
47
47
 
48
48
  if option[:type] && option.should_cast? && attr_value.nil? && (option[:presence] || option[:nil] == false)
49
49
  cast(attr, option)
@@ -1,12 +1,13 @@
1
1
  module Statinize
2
2
  class Validator
3
- NOT_VALIDATORS = %i[force cast if unless default name]
3
+ NOT_VALIDATORS = %i[force cast if unless default default_exec name]
4
4
 
5
- attr_accessor :attr_value, :validator_value
5
+ attr_accessor :attr_value, :validator_value, :instance
6
6
 
7
- def initialize(attr_value, validator_value)
7
+ def initialize(attr_value, validator_value, instance)
8
8
  @attr_value = attr_value
9
9
  @validator_value = validator_value
10
+ @instance = instance
10
11
  end
11
12
 
12
13
  def valid?
@@ -1,7 +1,11 @@
1
1
  module Statinize
2
2
  class TypeValidator < Validator
3
3
  def valid?
4
- attr_value.is_a?(validator_value) || attr_value.nil?
4
+ if validator_value.is_a? Class
5
+ attr_value.is_a?(validator_value)
6
+ elsif validator_value.is_a? Proc
7
+ attr_value.is_a? instance.instance_exec(&validator_value)
8
+ end || attr_value.nil?
5
9
  end
6
10
 
7
11
  def error
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statinize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Barseek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-17 00:00:00.000000000 Z
11
+ date: 2022-11-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Statinization gem. Allows for creation of attributes for a class with
14
14
  a given type.