class2 0.5.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
- SHA1:
3
- metadata.gz: 61dc3c545f0d85bb351f739def887860fa1ae4b4
4
- data.tar.gz: 60ccf0018c8d307435c061921ecd75ebb9fed97b
2
+ SHA256:
3
+ metadata.gz: 6bfd5b014d465ba372f6886d798d8a2e68eb233d4906b326302d77dceb331671
4
+ data.tar.gz: cd6aa6212aab92a1c32f64ef9e17de551cdb4e6ce68293efca155cc649520068
5
5
  SHA512:
6
- metadata.gz: eb86ad32514cb49fbfb5e094d9ca3a5f71c2713183439093c6b44cbc2e98c81ebed982a687a050bbdae6a55f85fdd845ee0477b9752d2df8bd4dc9320978afc9
7
- data.tar.gz: ea05449a79eb2f1e0c42469c34a72ab660303b740386128295f020c9ed9a31708dccf09ca89c687ebf416c5aca15f338d824827fc82102ce93a7cf94f6cc7c4c
6
+ metadata.gz: 90dff1bc730f190875bfe3b72c1d8abde282a5a394d3c95ff8760bb79008b32e39c79baca7a3e67b8ae187a9de5bfa87adedc23837850f44cc9b58c049852568
7
+ data.tar.gz: 27326bddbefad990d43801f49b23885a97fbeda319329959933eaaca8a35d8e6692b5daa03d564795c60d54633703e1f4297b147edb77f68d13b98c9ebc38cf4
data/Appraisals ADDED
@@ -0,0 +1,11 @@
1
+ appraise "as4" do
2
+ gem "activesupport", "~> 4.2"
3
+ end
4
+
5
+ appraise "as5" do
6
+ gem "activesupport", "~> 5.2"
7
+ end
8
+
9
+ appraise "as6" do
10
+ gem "activesupport", "> 5", "< 7"
11
+ end
data/Changes CHANGED
@@ -1,3 +1,13 @@
1
+ 2024-10-15 v0.6.0
2
+ --------------------
3
+ * Bug fix: autoloading in data section with namespace
4
+ * Add support for Time conversion
5
+ * Remove use of deprecated Fixnum
6
+
7
+ 2020-04-24 v0.5.2
8
+ --------------------
9
+ * Bug fix: Fix NoMethodError in ActiveSupport 6's Module.parent
10
+
1
11
  2018-06-26 v0.5.1
2
12
  --------------------
3
13
  * Bug fix: autoload backtrace search "improvemnts"
data/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  Easily create class hierarchies that support nested attributes, type conversion, equality, and more.
4
4
 
5
- [![Build Status](https://travis-ci.org/sshaw/class2.svg?branch=master)](https://travis-ci.org/sshaw/class2)
6
-
7
5
  ## Usage
8
6
 
9
7
  ```rb
@@ -271,7 +269,6 @@ Now an `ArgumentError` will be raised if anything but `id`, `name`, or
271
269
 
272
270
  Also see [Customizations](#customizations).
273
271
 
274
-
275
272
  ## See Also
276
273
 
277
274
  The Perl modules that served as inspiration:
@@ -285,6 +282,11 @@ The Perl modules that served as inspiration:
285
282
 
286
283
  Surely others I cannot remember...
287
284
 
285
+ And these Ruby modules:
286
+
287
+ * [`require3`](https://github.com/sshaw/require3)
288
+ * [`alias2`](https://github.com/sshaw/alias2)
289
+
288
290
  ## Author
289
291
 
290
292
  Skye Shaw [sshaw AT gmail.com]
data/class2.gemspec CHANGED
@@ -18,9 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "activesupport", ">= 3.2"
21
+ spec.add_dependency "activesupport", ">= 3.2", "< 7"
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.10"
23
+ spec.add_development_dependency "bundler"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "appraisal"
25
26
  spec.add_development_dependency "minitest"
26
27
  end
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 4.2"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 5.2"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "> 5", "< 7"
6
+
7
+ gemspec path: "../"
@@ -6,4 +6,4 @@ end
6
6
 
7
7
  source = $1
8
8
  namespace = source =~ %r{/lib/(.+?)(?:\.rb)?\z} ? $1 : File.basename(source, File.extname(source))
9
- Class2.autoload(namespace.camelize)
9
+ Class2.autoload(namespace.camelize, caller.unshift(caller[0]))
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Class2
4
- VERSION = "0.5.1"
4
+ VERSION = "0.6.0"
5
5
  end
data/lib/class2.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "date"
4
+ require "time" # for parse()
4
5
  require "json"
5
6
  require "active_support/core_ext/module"
6
7
  require "active_support/inflector"
@@ -32,13 +33,13 @@ class Class2
32
33
  Hash => lambda { |v| sprintf "%s.respond_to?(:to_h) ? %s.to_h : %s", v, v, v },
33
34
  Integer => lambda { |v| "#{v} && Integer(#{v})" },
34
35
  String => lambda { |v| "#{v} && String(#{v})" },
36
+ Time => lambda { |v| "#{v} && Time.parse(#{v})" },
35
37
  TrueClass => lambda do |v|
36
38
  sprintf '["1", 1, 1.0, true].freeze.include?(%s.is_a?(String) ? %s.strip : %s)', v, v, v
37
39
  end
38
40
  }
39
41
 
40
42
  CONVERSIONS[FalseClass] = CONVERSIONS[TrueClass]
41
- CONVERSIONS[Fixnum] = CONVERSIONS[Integer] if defined?(Fixnum)
42
43
  CONVERSIONS.default = lambda { |v| v }
43
44
 
44
45
  class << self
@@ -58,9 +59,9 @@ class Class2
58
59
  nil
59
60
  end
60
61
 
61
- def autoload(namespace = Object) # :nodoc:
62
+ def autoload(namespace = Object, stack = nil) # :nodoc:
62
63
  failure = lambda { |message| abort "class2: cannot autoload class definitions: #{message}" }
63
- failure["cannot find the right caller"] unless caller.find do |line|
64
+ failure["cannot find the right caller"] unless (stack || caller).find do |line|
64
65
  # Ignore our autoload file and require()
65
66
  line.index("/class2/autoload.rb:").nil? && line.index("/kernel_require.rb:").nil? && line =~ /(.+):\d+:in\s+`\S/
66
67
  end
@@ -250,10 +251,11 @@ class Class2
250
251
 
251
252
  name = key.to_s.classify
252
253
 
253
- # Only look in our namespace to prevent unwanted lookup
254
- next unless self.class.parent.const_defined?(name)
254
+ # parent is deprecated in ActiveSupport 6 and its warning uses Strong#squish! which they don't include!
255
+ parent = self.class.respond_to?(:module_parent) ? self.class.module_parent : self.class.parent
256
+ next unless parent.const_defined?(name)
255
257
 
256
- klass = self.class.parent.const_get(name)
258
+ klass = parent.const_get(name)
257
259
  value = value.is_a?(Hash) ? klass.new(value) : value.map { |v| klass.new(v) }
258
260
  end
259
261
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: class2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Skye Shaw
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-27 00:00:00.000000000 Z
11
+ date: 2024-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,20 +27,23 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '3.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: bundler
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - "~>"
37
+ - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '1.10'
39
+ version: '0'
34
40
  type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - "~>"
44
+ - - ">="
39
45
  - !ruby/object:Gem::Version
40
- version: '1.10'
46
+ version: '0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +58,20 @@ dependencies:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
60
  version: '10.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: appraisal
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: minitest
57
77
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +86,7 @@ dependencies:
66
86
  - - ">="
67
87
  - !ruby/object:Gem::Version
68
88
  version: '0'
69
- description:
89
+ description:
70
90
  email:
71
91
  - skye.shaw@gmail.com
72
92
  executables: []
@@ -74,13 +94,16 @@ extensions: []
74
94
  extra_rdoc_files: []
75
95
  files:
76
96
  - ".gitignore"
77
- - ".travis.yml"
97
+ - Appraisals
78
98
  - Changes
79
99
  - Gemfile
80
100
  - LICENSE.txt
81
101
  - README.md
82
102
  - Rakefile
83
103
  - class2.gemspec
104
+ - gemfiles/as4.gemfile
105
+ - gemfiles/as5.gemfile
106
+ - gemfiles/as6.gemfile
84
107
  - lib/class2.rb
85
108
  - lib/class2/autoload.rb
86
109
  - lib/class2/autoload/namespaced.rb
@@ -89,7 +112,7 @@ homepage: https://github.com/sshaw/class2
89
112
  licenses:
90
113
  - MIT
91
114
  metadata: {}
92
- post_install_message:
115
+ post_install_message:
93
116
  rdoc_options: []
94
117
  require_paths:
95
118
  - lib
@@ -104,9 +127,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
127
  - !ruby/object:Gem::Version
105
128
  version: '0'
106
129
  requirements: []
107
- rubyforge_project:
108
- rubygems_version: 2.6.14
109
- signing_key:
130
+ rubygems_version: 3.3.27
131
+ signing_key:
110
132
  specification_version: 4
111
133
  summary: Easily create hierarchies of classes that support nested attributes, type
112
134
  conversion, equality, and more.
data/.travis.yml DELETED
@@ -1,11 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - jruby-9
5
- - 2.3
6
- - 2.4
7
- - 2.5
8
-
9
- before_install: gem install bundler
10
- notifications:
11
- email: false