attribeauty 0.2.0 → 0.3.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: 5ff07e0947450ca0181b92fbed9438ffa4d4e063cd905dcc5148fc47e8640318
4
- data.tar.gz: df35a5f68e745e8ab9decd67c891ca73aa4cd074cdd6695e10ec5313644d4b2c
3
+ metadata.gz: 0635b380b4cb80f46aa693faef308dd93acf646950c8a592efe9ee56f3f019d1
4
+ data.tar.gz: f47043d7784f3068f3f82575bc71a5cdf7006cc73e8a8b4f481381a55091cb84
5
5
  SHA512:
6
- metadata.gz: 4566885478384847bdbe5965fddf3fcf2eb8bccd82782ed0da412cd77c3b89cec6f18965d4777b944313f40350e40a2a00b457af03c088aa4b33f5afc6906c91
7
- data.tar.gz: aca7be5f1af5279ff400ea9f0220146b48b51c74e6d03e8246d13cc300a5794391e8fd3c4f7bcb2197aa0b7f3b3e091fb91a4669f3d5b33089b1fd2ef6b3f387
6
+ metadata.gz: 90040026bba413f4390d1c8141140dc90d7547b47e1af3ec737d23a6ec79c7a9ca9677086318b4d44107acdaf39b8587711e41231074ad80854c619eb3a02883
7
+ data.tar.gz: 747703281202de16748413ecee1703ad15a6353a31caa289bf77b68e41d6ca820cf2d0bce5087af54ab7c39a237b398492701fa964a02af707dc00c4131fd487
data/.bin/bundle ADDED
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'bundle' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "rubygems"
12
+
13
+ m = Module.new do
14
+ module_function
15
+
16
+ def invoked_as_script?
17
+ File.expand_path($0) == File.expand_path(__FILE__)
18
+ end
19
+
20
+ def env_var_version
21
+ ENV["BUNDLER_VERSION"]
22
+ end
23
+
24
+ def cli_arg_version
25
+ return unless invoked_as_script? # don't want to hijack other binstubs
26
+ return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
27
+ bundler_version = nil
28
+ update_index = nil
29
+ ARGV.each_with_index do |a, i|
30
+ if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
31
+ bundler_version = a
32
+ end
33
+ next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
34
+ bundler_version = $1
35
+ update_index = i
36
+ end
37
+ bundler_version
38
+ end
39
+
40
+ def gemfile
41
+ gemfile = ENV["BUNDLE_GEMFILE"]
42
+ return gemfile if gemfile && !gemfile.empty?
43
+
44
+ File.expand_path("../Gemfile", __dir__)
45
+ end
46
+
47
+ def lockfile
48
+ lockfile =
49
+ case File.basename(gemfile)
50
+ when "gems.rb" then gemfile.sub(/\.rb$/, ".locked")
51
+ else "#{gemfile}.lock"
52
+ end
53
+ File.expand_path(lockfile)
54
+ end
55
+
56
+ def lockfile_version
57
+ return unless File.file?(lockfile)
58
+ lockfile_contents = File.read(lockfile)
59
+ return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
60
+ Regexp.last_match(1)
61
+ end
62
+
63
+ def bundler_requirement
64
+ @bundler_requirement ||=
65
+ env_var_version ||
66
+ cli_arg_version ||
67
+ bundler_requirement_for(lockfile_version)
68
+ end
69
+
70
+ def bundler_requirement_for(version)
71
+ return "#{Gem::Requirement.default}.a" unless version
72
+
73
+ bundler_gem_version = Gem::Version.new(version)
74
+
75
+ bundler_gem_version.approximate_recommendation
76
+ end
77
+
78
+ def load_bundler!
79
+ ENV["BUNDLE_GEMFILE"] ||= gemfile
80
+
81
+ activate_bundler
82
+ end
83
+
84
+ def activate_bundler
85
+ gem_error = activation_error_handling do
86
+ gem "bundler", bundler_requirement
87
+ end
88
+ return if gem_error.nil?
89
+ require_error = activation_error_handling do
90
+ require "bundler/version"
91
+ end
92
+ return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
93
+ warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
94
+ exit 42
95
+ end
96
+
97
+ def activation_error_handling
98
+ yield
99
+ nil
100
+ rescue StandardError, LoadError => e
101
+ e
102
+ end
103
+ end
104
+
105
+ m.load_bundler!
106
+
107
+ if m.invoked_as_script?
108
+ load Gem.bin_path("bundler", "bundle")
109
+ end
data/.bin/racc ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'racc' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
+
13
+ bundle_binstub = File.expand_path("bundle", __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require "rubygems"
25
+ require "bundler/setup"
26
+
27
+ load Gem.bin_path("racc", "racc")
data/.bin/rake ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rake' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
+
13
+ bundle_binstub = File.expand_path("bundle", __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require "rubygems"
25
+ require "bundler/setup"
26
+
27
+ load Gem.bin_path("rake", "rake")
data/.bin/rubocop ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rubocop' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
+
13
+ bundle_binstub = File.expand_path("bundle", __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require "rubygems"
25
+ require "bundler/setup"
26
+
27
+ load Gem.bin_path("rubocop", "rubocop")
data/.bin/ruby-parse ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'ruby-parse' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
+
13
+ bundle_binstub = File.expand_path("bundle", __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require "rubygems"
25
+ require "bundler/setup"
26
+
27
+ load Gem.bin_path("parser", "ruby-parse")
data/.bin/ruby-rewrite ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'ruby-rewrite' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
+
13
+ bundle_binstub = File.expand_path("bundle", __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require "rubygems"
25
+ require "bundler/setup"
26
+
27
+ load Gem.bin_path("parser", "ruby-rewrite")
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.6
2
+ TargetRubyVersion: 3.2
3
3
 
4
4
  Style/StringLiterals:
5
5
  Enabled: true
@@ -11,3 +11,21 @@ Style/StringLiteralsInInterpolation:
11
11
 
12
12
  Layout/LineLength:
13
13
  Max: 120
14
+
15
+ Style/Documentation:
16
+ Enabled: false
17
+
18
+ Metrics/MethodLength:
19
+ Max: 30
20
+
21
+ Metrics/AbcSize:
22
+ Enabled: false
23
+
24
+ Metrics/ClassLength:
25
+ Enabled: false
26
+
27
+ Metrics/PerceivedComplexity:
28
+ Enabled: false
29
+
30
+ Metrics/CyclomaticComplexity:
31
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.1] - 2024-06-22
4
+
5
+ - added container to exclude the "head" param
6
+
7
+ ## [0.3.0] - 2024-06-21
8
+
9
+ - Experimental params coercion
10
+ - No documentation yet, but tests passing
11
+
3
12
  ## [0.1.0] - 2023-08-09
4
13
 
5
14
  - Initial release
data/Gemfile CHANGED
@@ -5,8 +5,10 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in attribeauty.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
8
+ gem "minitest"
9
+ gem "rake"
10
+ gem "rubocop"
9
11
 
10
- gem "minitest", "~> 5.0"
11
-
12
- gem "rubocop", "~> 1.21"
12
+ group :development, :test do
13
+ gem "zeitwerk"
14
+ end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- attribeauty (0.1.0)
4
+ attribeauty (0.3.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -34,15 +34,18 @@ GEM
34
34
  parser (>= 3.2.1.0)
35
35
  ruby-progressbar (1.13.0)
36
36
  unicode-display_width (2.4.2)
37
+ zeitwerk (2.6.16)
37
38
 
38
39
  PLATFORMS
39
40
  x86_64-darwin-20
41
+ x86_64-darwin-22
40
42
 
41
43
  DEPENDENCIES
42
44
  attribeauty!
43
- minitest (~> 5.0)
44
- rake (~> 13.0)
45
- rubocop (~> 1.21)
45
+ minitest
46
+ rake
47
+ rubocop
48
+ zeitwerk
46
49
 
47
50
  BUNDLED WITH
48
- 2.4.10
51
+ 2.5.3
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Attribeauty
2
2
 
3
3
  I just wanted a quick, simple way to initialize mutable objects. This is it.
4
- There are so many of these, but none were what I wanted.
4
+ There are so many of these (notably rails Attributes api), but none were what I wanted.
5
5
 
6
6
  ## Installation
7
7
 
@@ -13,7 +13,7 @@ If bundler is not being used to manage dependencies, install the gem by executin
13
13
 
14
14
  $ gem install attribeauty
15
15
 
16
- ## Usage
16
+ ## Base
17
17
 
18
18
  Inherit from `Attribeauty::Base` and then add attribute with the type you want.
19
19
  Initialize with these and they will be cast to that attribute.
@@ -62,7 +62,95 @@ instance.wild_animal # => "the_wildest_animals_are_koalas"
62
62
 
63
63
  ```
64
64
 
65
- Note, failing to call `inspect` on the value when casting is likely to raise an error.
65
+ To use rails types add to your config:
66
+ ```
67
+ # config/initializers/attribeauty.rb
68
+
69
+ Rails.application.reloader.to_prepare do
70
+ Attribeauty.configure do |config|
71
+ config.types[:string] = ActiveModel::Type::String
72
+ config.types[:boolean] = ActiveModel::Type::Boolean
73
+ config.types[:date] = ActiveModel::Type::Date
74
+ config.types[:time] = ActiveModel::Type::Time
75
+ config.types[:datetime] = ActiveModel::Type::DateTime
76
+ config.types[:float] = ActiveModel::Type::Float
77
+ config.types[:integer] = ActiveModel::Type::Integer
78
+ end
79
+ end
80
+
81
+ ```
82
+
83
+ ## Params
84
+
85
+ Experimental params sanitizer is now available. This will cast your params, and remove elements you want to exclude if `nil` or `empty`
86
+
87
+ ```
88
+ # app/controllers/my_controller.rb
89
+ class MyController
90
+ def update
91
+ MyRecord.update(update_params)
92
+
93
+ redirect_to index_path
94
+ end
95
+
96
+ private
97
+
98
+ def params_filter
99
+ Attribeauty::Params.with(request.params)
100
+ end
101
+
102
+ def update_params
103
+ params_filter.accept do
104
+ attribute :title, :string, allow_nil: false, required: true
105
+ attribute :email do
106
+ attribute :address, :string, allow_empty: false
107
+ attribute :valid, :boolean, allow_nil: false
108
+ attribute :ip_address, :string, allow_blank: true
109
+ end
110
+ end
111
+ end
112
+ ```
113
+
114
+ If you have a "head" param, like in rails, you can exclude it like this:
115
+
116
+ ```
117
+ class MyController
118
+ def update
119
+ MyRecord.update(update_params)
120
+
121
+ redirect_to index_path
122
+ end
123
+
124
+ private
125
+
126
+ # your params look like this:
127
+ # { user: { title: "woo", email: { address: "hmm@yep.com" } } }
128
+ #
129
+ def params_filter
130
+ Attribeauty::Params.with(request.params)
131
+ end
132
+
133
+ # using container will exclude the value and yield:
134
+ # { title: "woo", email: { address: "hmm@yep.com" } }
135
+ #
136
+ def update_params
137
+ params_filter.accept do
138
+ container :user do
139
+ attribute :title, :string, allow_nil: false, required: true
140
+ attribute :email do
141
+ attribute :address, :string, allow_empty: false
142
+ attribute :valid, :boolean, allow_nil: false
143
+ attribute :ip_address, :string, allow_blank: true
144
+ end
145
+ end
146
+ end
147
+ end
148
+ end
149
+
150
+ ```
151
+
152
+ See `test/test_params.rb` for what is expected.
153
+
66
154
 
67
155
  ## Development
68
156
 
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Attribeauty
4
+ class Params
5
+ extend Forwardable
6
+
7
+ def_delegators :to_h, :each_pair, :each, :empty?, :keys
8
+
9
+ def self.with(request_params)
10
+ new(request_params)
11
+ end
12
+
13
+ attr_reader :allow_nil, :prefix, :request_params, :acceptables, :to_h, :errors
14
+
15
+ def initialize(request_params)
16
+ @request_params = request_params.transform_keys(&:to_sym)
17
+ @to_h = {}
18
+ @errors = []
19
+ end
20
+
21
+ def accept(&)
22
+ instance_eval(&)
23
+
24
+ self
25
+ end
26
+
27
+ def to_hash = to_h
28
+
29
+ def [](key)
30
+ to_h[key]
31
+ end
32
+
33
+ def container(name)
34
+ @request_params = request_params[name]
35
+
36
+ yield
37
+ end
38
+
39
+ # rubocop:disable Naming::BlockForwarding
40
+ def attribute(name, type = nil, **args, &block)
41
+ value = request_params[name]
42
+ return if value.nil? && args[:required].nil?
43
+
44
+ if block_given?
45
+ @to_h[name] =
46
+ if value.is_a?(Array)
47
+ value.map do |val|
48
+ params = self.class.with(val).accept(&block)
49
+ @errors.push(*params.errors)
50
+ params
51
+ end.reject(&:empty?)
52
+ else
53
+ params = self.class.with(value).accept(&block)
54
+ @errors.push(*params.errors)
55
+ params
56
+ end
57
+ else
58
+ validator = Validator.run(name, type, value, **args)
59
+ @to_h[name.to_sym] = validator.value if validator.valid?
60
+ @errors.push(*validator.errors)
61
+ end
62
+ end
63
+ # rubocop:enable Naming::BlockForwarding
64
+
65
+ def inspect
66
+ to_h.inspect
67
+ end
68
+
69
+ def valid?
70
+ errors.empty?
71
+ end
72
+ end
73
+ end
@@ -1,11 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "types/string"
4
- require_relative "types/integer"
5
- require_relative "types/float"
6
- require_relative "types/boolean"
7
- require_relative "types/time"
8
-
9
3
  module Attribeauty
10
4
  # base cast for types
11
5
  class TypeCaster
@@ -9,7 +9,7 @@ module Attribeauty
9
9
  "0", :"0",
10
10
  "f", :f,
11
11
  "F", :F,
12
- "false", :false,
12
+ "false", false,
13
13
  "FALSE", :FALSE,
14
14
  "off", :off,
15
15
  "OFF", :OFF
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+
5
+ module Attribeauty
6
+ class Validator
7
+ ALLOWS_HASH = {
8
+ allow_nil: :nil?,
9
+ allow_empty: :empty?
10
+ }.freeze
11
+
12
+ def self.run(name, type, original_value, **args)
13
+ new(name, type, original_value, **args).run
14
+ end
15
+
16
+ attr_reader :original_value, :errors, :name, :type, :required, :default, :predicate, :value
17
+
18
+ def initialize(name, type, original_value, **args)
19
+ @name = name
20
+ @type = type
21
+ @original_value = original_value
22
+ @errors = []
23
+ @default = args[:default]
24
+ @required = args[:required] if [true, false].include?(args[:required])
25
+ allows = args.slice(*allows_array)
26
+ return if allows.empty?
27
+
28
+ predicate_array = allows.first
29
+ predicate_array[0] = :"#{ALLOWS_HASH[predicate_array[0]]}"
30
+ @predicate = predicate_array
31
+ end
32
+
33
+ def run
34
+ @original_value = default if original_value.nil? && !default.nil?
35
+ @value = TypeCaster.run(original_value, type)
36
+
37
+ self
38
+ end
39
+
40
+ def valid?
41
+ if required? && original_value.nil?
42
+ errors << "#{name} required"
43
+ return false
44
+ end
45
+ return true if predicate.nil?
46
+
47
+ method, bool = predicate
48
+ return true if bool
49
+
50
+ !value.public_send(method)
51
+ end
52
+
53
+ private
54
+
55
+ def set_args; end
56
+
57
+ def allows_array
58
+ ALLOWS_HASH.keys
59
+ end
60
+
61
+ def required?
62
+ required
63
+ end
64
+ end
65
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Attribeauty
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.1"
5
5
  end
data/lib/attribeauty.rb CHANGED
@@ -1,11 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "attribeauty/version"
4
- require_relative "attribeauty/base"
5
- require_relative "attribeauty/type_caster"
6
- require_relative "attribeauty/configuration"
7
3
  require "date"
8
4
  require "time"
5
+ require "forwardable"
9
6
 
10
7
  # Module
11
8
  module Attribeauty
@@ -21,3 +18,10 @@ module Attribeauty
21
18
  end
22
19
  end
23
20
  end
21
+
22
+ require "zeitwerk"
23
+
24
+ loader = Zeitwerk::Loader.for_gem
25
+ loader.ignore("#{__dir__}/kamal/sshkit_with_ext.rb")
26
+ loader.setup
27
+ loader.eager_load # We need all commands loaded.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attribeauty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-10 00:00:00.000000000 Z
11
+ date: 2024-06-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: There are so many of these, I just needed this one.
14
14
  email:
@@ -17,6 +17,12 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - ".bin/bundle"
21
+ - ".bin/racc"
22
+ - ".bin/rake"
23
+ - ".bin/rubocop"
24
+ - ".bin/ruby-parse"
25
+ - ".bin/ruby-rewrite"
20
26
  - ".rubocop.yml"
21
27
  - CHANGELOG.md
22
28
  - Gemfile
@@ -27,14 +33,15 @@ files:
27
33
  - lib/attribeauty.rb
28
34
  - lib/attribeauty/base.rb
29
35
  - lib/attribeauty/configuration.rb
36
+ - lib/attribeauty/params.rb
30
37
  - lib/attribeauty/type_caster.rb
31
38
  - lib/attribeauty/types/boolean.rb
32
39
  - lib/attribeauty/types/float.rb
33
40
  - lib/attribeauty/types/integer.rb
34
41
  - lib/attribeauty/types/string.rb
35
42
  - lib/attribeauty/types/time.rb
43
+ - lib/attribeauty/validator.rb
36
44
  - lib/attribeauty/version.rb
37
- - sig/attribeauty.rbs
38
45
  homepage: https://github.com/tobyond/attribeauty
39
46
  licenses:
40
47
  - MIT
@@ -49,14 +56,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
56
  requirements:
50
57
  - - ">="
51
58
  - !ruby/object:Gem::Version
52
- version: 2.6.0
59
+ version: 3.2.0
53
60
  required_rubygems_version: !ruby/object:Gem::Requirement
54
61
  requirements:
55
62
  - - ">="
56
63
  - !ruby/object:Gem::Version
57
64
  version: '0'
58
65
  requirements: []
59
- rubygems_version: 3.4.10
66
+ rubygems_version: 3.5.3
60
67
  signing_key:
61
68
  specification_version: 4
62
69
  summary: Attributes simply done
data/sig/attribeauty.rbs DELETED
@@ -1,4 +0,0 @@
1
- module Attribeauty
2
- VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
- end