super_module 1.4.0 → 1.4.2

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: a4faa73d0b49aef392b5dd1c26df10e4fc7ae5f9c528284503cd68df38c2381b
4
- data.tar.gz: 9c48055a31b17ae2cdd554314cc3dbbf4d10e6eb2a93d4f21636663ce0f0a6c5
3
+ metadata.gz: dff7a317bbcdd55b3df13bf0a29b263708a97c52044a07df8009256cc98f5b55
4
+ data.tar.gz: 961629e60023945619be8b5ed0221cb6313529670dd563bc0afd8d947edc3618
5
5
  SHA512:
6
- metadata.gz: 37e9470e3ebe8977cf24425169ac7976304ba4d4eb1c0ca8069fa761813184d24e182235cc57ae01674f09189e22fe2681bd0b3a580e23aff50e323cc47ef435
7
- data.tar.gz: 998e4a95be965413b20f49d2dad072a3458b61fd13e34eb33db601bd96ee3f7581c015ccb0e8872b8f3ef329a585dea902cccc165ac7921e58c503a6b2396892
6
+ metadata.gz: 8df9bbb3bede461f3b069d37b7305c06509cfc17eb2b31117c45cccc478a0d6db8116ff7ef3abcf5312f3dfcf51570c693bb6bdfecf818c0b36061b9d2a84923
7
+ data.tar.gz: 882725ee1e32a31fba2801c5811051259be139028d612e45b254a1ea05fc33cbbee162c7c297826fd185a66eae364485edc43399589fae0770454168eb9b2e20
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.4.2
4
+
5
+ - Relax method_source gem dependency to `">= 0.8.2", "< 2.0.0"`
6
+
7
+ ## 1.4.1
8
+
9
+ - Pauses singleton method recording inside a super_module_included block to avoid replaying on submodules
10
+
3
11
  ## 1.4.0
4
12
 
5
13
  - Support aliased methods
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Andy Maleh
1
+ Copyright (c) 2014-2024 Andy Maleh
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,9 +1,12 @@
1
- # <img src="https://raw.githubusercontent.com/AndyObtiva/super_module/master/SuperModule.jpg" alt="SuperModule" align="left" height="50" /> &nbsp; SuperModule 1.3
1
+ # <img src="https://raw.githubusercontent.com/AndyObtiva/super_module/master/SuperModule.jpg" alt="SuperModule" align="left" height="50" /> &nbsp; SuperModule 1.4.2
2
2
  [![Gem Version](https://badge.fury.io/rb/super_module.svg)](http://badge.fury.io/rb/super_module)
3
- [![Build Status](https://api.travis-ci.org/AndyObtiva/super_module.svg?branch=master)](https://travis-ci.org/AndyObtiva/super_module)
4
3
  [![Coverage Status](https://coveralls.io/repos/AndyObtiva/super_module/badge.svg?branch=master)](https://coveralls.io/r/AndyObtiva/super_module?branch=master)
5
4
  [![Code Climate](https://codeclimate.com/github/AndyObtiva/super_module.svg)](https://codeclimate.com/github/AndyObtiva/super_module)
6
5
 
6
+ (Note: despite the advanced version number, the idea of super_module is highly experimental and relies heavily on meta-programming, so unless you really need it, always prefer using pure Ruby modules when sufficient)
7
+
8
+ [SuperModule](https://rubygems.org/gems/super_module) enables developers to continue to use Ruby modules as first-class citizens with mixin inheritance even when wanting to inherit singleton-class methods and invocations.
9
+
7
10
  Calling [Ruby](https://www.ruby-lang.org/en/)'s [`Module#include`](http://ruby-doc.org/core-2.2.1/Module.html#method-i-include) to mix in a module does not bring in class methods by default. This can come as quite the surprise when attempting to include class methods via a module.
8
11
 
9
12
  Ruby offers one workaround in the form of implementing the hook method [`Module.included(base)`](http://ruby-doc.org/core-2.2.1/Module.html#method-i-included) [following a certain boilerplate code idiom](http://www.railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/). Unfortunately, it hinders code maintainability and productivity with extra unnecessary complexity, especially in production-environment projects employing many [mixins](http://en.wikipedia.org/wiki/Mixin) (e.g. modeling business domain models with composable object [traits](http://en.wikipedia.org/wiki/Trait_(computer_programming))).
@@ -12,12 +15,14 @@ Another workaround is [`ActiveSupport::Concern`](http://api.rubyonrails.org/clas
12
15
 
13
16
  But do not fear, [SuperModule](https://rubygems.org/gems/super_module) comes to the rescue! By declaring your module as a SuperModule, it will simply behave as one would expect and automatically include class methods along with instance methods, without any further work needed.
14
17
 
15
- Used in my other project: [Glimmer](https://github.com/AndyObtiva/Glimmer) (Ruby Desktop GUI Library)
18
+ Used in my other project: [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) (JRuby Desktop Development GUI Framework)
19
+
20
+ Works in both [Ruby](https://www.ruby-lang.org) and [JRuby](https://www.jruby.org).
16
21
 
17
22
  ## Introductory Comparison
18
23
 
19
24
  To introduce [SuperModule](https://rubygems.org/gems/super_module), here is a comparison of three different approaches for writing a
20
- <code>UserIdentifiable</code> module, which includes ActiveModel::Model module as an in-memory alternative to ActiveRecord::Base superclass (Side-note: ActiveModel::Model is not needed when extending ActiveRecord::Base to connect to database.)
25
+ `UserIdentifiable` module, which includes ActiveModel::Model module as an in-memory alternative to `ActiveRecord::Base` superclass.
21
26
 
22
27
  #### 1) [self.included(base)](http://ruby-doc.org/core-2.2.1/Module.html#method-i-included)
23
28
 
@@ -71,7 +76,7 @@ module UserIdentifiable
71
76
  end
72
77
  ```
73
78
 
74
- A step forward that addresses the boiler-plate repetitive code concern, but is otherwise really just lipstick on a pig. To explain more, developer problem solving and creativity flow is still disrupted by having to think about the lower-level mechanism of running code on inclusion (using `included`) and structuring class methods in an extra sub-module (`ClassMethods`) instead of simply declaring class methods like they normally would in Ruby and staying focused on the task at hand.
79
+ A step forward that addresses the boiler-plate repetitive code concern, but is otherwise no more than putting a band-aid on the problem. To explain more, developer problem solving and creativity flow is still disrupted by having to think about the lower-level mechanism of running code on inclusion (using `included`) and structuring class methods in an extra sub-module (`ClassMethods`) instead of simply declaring class methods like they normally would in Ruby and staying focused on the task at hand.
75
80
 
76
81
  #### 3) [SuperModule](https://github.com/AndyObtiva/super_module)
77
82
 
@@ -98,13 +103,15 @@ As a result, [SuperModule](https://rubygems.org/gems/super_module) collapses the
98
103
 
99
104
  In other words, [SuperModule](https://rubygems.org/gems/super_module) furthers Ruby's goal of making programmers happy.
100
105
 
106
+ P.S. this library intentionally avoids bad techniques like "eval" of entire module body since they do not maintain Module mixin inheritance support. SuperModule supports full Ruby module mixin inheritance as it does not change it, yet only adds automation for singleton-class method inheritance on top of it (via surgical class_eval instead of full eval). SuperModule in fact encourages developers to continue to rely on basic Ruby code like `include SuperModule`.
107
+
101
108
  ## Instructions
102
109
 
103
110
  #### 1) Install and require gem
104
111
 
105
112
  <b>Using [Bundler](http://bundler.io/)</b>
106
113
 
107
- Add the following to Gemfile: <pre>gem 'super_module', '1.4.0'</pre>
114
+ Add the following to Gemfile: <pre>gem 'super_module', '1.4.2'</pre>
108
115
 
109
116
  And run the following command: <pre>bundle</pre>
110
117
 
@@ -371,7 +378,7 @@ puts V1::FakeExtraSummarizedActiveRecord.fake_extra
371
378
 
372
379
  ## Limitations
373
380
 
374
- 1) [SuperModule](https://rubygems.org/gems/super_module) by definition has been designed to be used only in the initial code declaration of a module, not later mixing or re-opening of a module.
381
+ [SuperModule](https://rubygems.org/gems/super_module) by definition has been designed to be used only in the initial code declaration of a module, not later mixing or re-opening of a module.
375
382
 
376
383
  ## Change Log
377
384
 
@@ -382,11 +389,10 @@ puts V1::FakeExtraSummarizedActiveRecord.fake_extra
382
389
  [SuperModule](https://rubygems.org/gems/super_module) is written in a very clean and maintainable test-first approach, so you are welcome to read through the code on GitHub for more in-depth details:
383
390
  https://github.com/AndyObtiva/super_module
384
391
 
385
- The library is quite new and can use all the feedback and help it can get. So, please do not hesitate to add comments if you have any, and please fork [the project on GitHub](https://github.com/AndyObtiva/super_module#fork-destination-box) in order to [make contributions via Pull Requests](https://github.com/AndyObtiva/super_module/pulls).
392
+ The library is quite novel and can use all the feedback and help it can get. So, please do not hesitate to add comments if you have any, and please fork [the project on GitHub](https://github.com/AndyObtiva/super_module#fork-destination-box) in order to [make contributions via Pull Requests](https://github.com/AndyObtiva/super_module/pulls).
386
393
 
387
394
  ## Articles, Publications, and Blog Posts
388
395
  * 2015-04-05 - [Ruby Weekly](http://rubyweekly.com): [Issue 240](http://rubyweekly.com/issues/240)
389
- * 2015-03-27 - [AirPair](http://www.airpair.com) Article: [Step aside ActiveSupport::Concern. SuperModule is the new sheriff in town!](https://www.airpair.com/ruby/posts/step-aside-activesupportconcern-supermodule-is-the-new-sheriff-in-town)
390
396
  * 2014-03-27 - [Code Painter](http://andymaleh.blogspot.com) Blog Post: [Ruby SuperModule Comes To The Rescue!!](http://andymaleh.blogspot.ca/2014/03/ruby-supermodule-comes-to-rescue.html)
391
397
 
392
398
  ## TODO
@@ -395,5 +401,4 @@ None
395
401
 
396
402
  ## Copyright
397
403
 
398
- Copyright (c) 2014-2020 Andy Maleh. See LICENSE.txt for
399
- further details.
404
+ Copyright (c) 2014-2024 Andy Maleh. See [LICENSE.txt](LICENSE.txt) for further details.
data/TODO.md ADDED
@@ -0,0 +1,32 @@
1
+ # TODO
2
+
3
+ - Make replay of class method invocations optional (allow for a basic use case of simply including a module with class methods)
4
+ - Replay class level attributes on classes
5
+ - Fix issue with class methods including a method matching name with instance methods
6
+ - Fix issue with class method alias as per details below
7
+
8
+ ```ruby
9
+ require 'glimmer/error'
10
+
11
+ module Glimmer
12
+ module UI
13
+ module CustomShell
14
+ include SuperModule
15
+ include Glimmer::UI::CustomWidget
16
+
17
+ class << self
18
+ attr_reader :launched_custom_shell
19
+ alias launched_custom_window launched_custom_shell
20
+ ```
21
+
22
+ ```
23
+ [DEVELOPMENT MODE] (detected /Users/andymaleh/code/glimmer-dsl-swt/lib/glimmer-dsl-swt.rb)
24
+ MethodSource::SourceNotFoundError: Could not locate source for launched_custom_window!
25
+ source_helper at /Users/andymaleh/.rvm/gems/jruby-9.2.14.0@glimmer-dsl-swt/gems/method_source-1.0.0/lib/method_source.rb:24
26
+ source at /Users/andymaleh/.rvm/gems/jruby-9.2.14.0@glimmer-dsl-swt/gems/method_source-1.0.0/lib/method_source.rb:110
27
+ __build_singleton_method_body_source at /Users/andymaleh/.rvm/gems/jruby-9.2.14.0@glimmer-dsl-swt/gems/super_module-1.4.1/lib/super_module/v1/singleton_method_definition_store.rb:74
28
+ __singleton_method_body at /Users/andymaleh/.rvm/gems/jruby-9.2.14.0@glimmer-dsl-swt/gems/super_module-1.4.1/lib/super_module/v1/singleton_method_definition_store.rb:85
29
+ singleton_method_added at /Users/andymaleh/.rvm/gems/jruby-9.2.14.0@glimmer-dsl-swt/gems/super_module-1.4.1/lib/super_module/v1/singleton_method_definition_store.rb:100
30
+ alias_method at org/jruby/RubyModule.java:3228
31
+ singleton class at /Users/andymaleh/code/glimmer-dsl-swt/lib/glimmer/ui/custom_shell.rb:32
32
+ ```
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.4.2
@@ -5,6 +5,8 @@ module SuperModule
5
5
  @__super_module_singleton_methods_excluded_from_call_recording ||= [
6
6
  :__record_method_call,
7
7
  :__method_signature,
8
+ :__inside_super_module_included?,
9
+ :__inside_super_module_included=,
8
10
  ]
9
11
  end
10
12
 
@@ -17,10 +19,18 @@ module SuperModule
17
19
  end
18
20
 
19
21
  def __record_method_call(method_name, *args, &block)
20
- return if self.is_a?(Class)
22
+ return if self.is_a?(Class) || __inside_super_module_included?
21
23
  __module_body_method_calls << [method_name, args, block]
22
24
  end
23
25
 
26
+ def __inside_super_module_included?
27
+ @__inside_super_module_included
28
+ end
29
+
30
+ def __inside_super_module_included=(value)
31
+ @__inside_super_module_included = !!value
32
+ end
33
+
24
34
  def __all_module_body_method_calls_in_definition_order
25
35
  ancestor_module_body_method_calls = included_super_modules.map(&:__module_body_method_calls).flatten(1)
26
36
  all_module_body_method_calls = __module_body_method_calls + ancestor_module_body_method_calls
@@ -54,11 +54,12 @@ module SuperModule
54
54
  end
55
55
 
56
56
  def __singleton_method_definition_regex(method_name)
57
+ method_name = Regexp.escape(method_name.to_s)
57
58
  /(public|protected|private)?(send)?[ \t(:"']*def(ine_method)?[ \t,:"']+(self\.)?#{method_name}\)?[ \tdo{(|]*([^\n)|;]*)?[ \t)|;]*/m
58
59
  end
59
60
 
60
61
  def __singleton_method_args(method_name, method_body)
61
- method_arg_match = method_body.match(__singleton_method_definition_regex(method_name)).to_a[5]
62
+ method_body.match(__singleton_method_definition_regex(method_name)).to_a[5]
62
63
  end
63
64
 
64
65
  def __singleton_method_access_level(method_name)
@@ -106,6 +107,8 @@ module SuperModule
106
107
  base.extend(SuperModule::V1::ModuleBodyMethodCallRecorder) unless base.is_a?(SuperModule::V1::ModuleBodyMethodCallRecorder)
107
108
  base.singleton_method_added(:__method_signature)
108
109
  base.singleton_method_added(:__record_method_call)
110
+ base.singleton_method_added(:__inside_super_module_included?)
111
+ base.singleton_method_added(:__inside_super_module_included=)
109
112
  end
110
113
  end
111
114
  end
@@ -28,7 +28,15 @@ module SuperModule
28
28
  def included(base)
29
29
  __define_super_module_singleton_methods(base)
30
30
  __invoke_module_body_method_calls(base)
31
- super_module_included.each {|block| block.call(base)}
31
+ super_module_included.each do |block|
32
+ self.__inside_super_module_included = true
33
+ base.__inside_super_module_included = true
34
+ block.binding.receiver.__inside_super_module_included = true
35
+ block.call(base)
36
+ block.binding.receiver.__inside_super_module_included = false
37
+ base.__inside_super_module_included = false
38
+ self.__inside_super_module_included = false
39
+ end
32
40
  if base.ancestors.include?(SuperModule) && !base.is_a?(Class)
33
41
  super_module_included.reverse.each do |block|
34
42
  base.super_module_included.unshift(block)
data/lib/super_module.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # SuperModule allows defining class methods and method invocations the same way a super class does without using def included(base).
2
2
  #
3
3
  # Author:: Andy Maleh
4
- # Copyright:: Copyright (c) 2014-2015 Andy Maleh
4
+ # Copyright:: Copyright (c) 2014-2024 Andy Maleh
5
5
  # License:: MIT License
6
6
 
7
7
  # This module allows defining class methods and method invocations the same way a super class does without using def included(base).
@@ -19,12 +19,6 @@ end
19
19
  module V1::SummarizedActiveModel
20
20
  include SuperModule
21
21
 
22
- super_module_included do |klass|
23
- if klass.name.split(/::/).last.start_with?('Fake')
24
- klass.extend(FakeClassMethods1)
25
- end
26
- end
27
-
28
22
  module FakeClassMethods1
29
23
  def fake_summary
30
24
  'This is a fake summary.'
@@ -43,7 +37,19 @@ module V1::SummarizedActiveModel
43
37
  def summary
44
38
  validations.flatten.map(&:to_s).join("/")
45
39
  end
40
+
41
+ def only_call_in_super_module_included
42
+ raise 'Error' unless self == ::V1::SummarizedActiveModel
43
+ end
46
44
  end
45
+
46
+ super_module_included do |klass|
47
+ if klass.name.split(/::/).last.start_with?('Fake')
48
+ klass.extend(FakeClassMethods1)
49
+ end
50
+ only_call_in_super_module_included # should not get recorded for submodules/subclasses
51
+ end
52
+
47
53
  end
48
54
 
49
55
  module V1::ExtraSummarizedActiveModel
data/super_module.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: super_module 1.4.0 ruby lib
5
+ # stub: super_module 1.4.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "super_module".freeze
9
- s.version = "1.4.0"
9
+ s.version = "1.4.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Andy Maleh".freeze]
14
- s.date = "2020-04-06"
14
+ s.date = "2024-07-28"
15
15
  s.description = "SuperModule allows defining class methods and method invocations the same way a super class does without using def included(base). This also succeeds ActiveSupport::Concern by offering lighter syntax".freeze
16
16
  s.extra_rdoc_files = [
17
17
  "CHANGELOG.md",
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  "LICENSE.txt",
25
25
  "README.md",
26
26
  "SuperModule.jpg",
27
+ "TODO.md",
27
28
  "VERSION",
28
29
  "lib/super_module.rb",
29
30
  "lib/super_module/v1.rb",
@@ -39,44 +40,31 @@ Gem::Specification.new do |s|
39
40
  ]
40
41
  s.homepage = "http://github.com/AndyObtiva/super_module".freeze
41
42
  s.licenses = ["MIT".freeze]
42
- s.rubygems_version = "3.0.8".freeze
43
+ s.rubygems_version = "3.3.5".freeze
43
44
  s.summary = "SuperModule allows defining class methods and method invocations the same way a super class does without using def included(base). This also succeeds ActiveSupport::Concern by offering lighter syntax".freeze
44
45
 
45
46
  if s.respond_to? :specification_version then
46
47
  s.specification_version = 4
48
+ end
47
49
 
48
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
- s.add_runtime_dependency(%q<method_source>.freeze, [">= 0.8.2", "< 1.1.0"])
50
- s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
51
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 4.2.0"])
52
- s.add_development_dependency(%q<rspec>.freeze, ["~> 3.2.0"])
53
- s.add_development_dependency(%q<puts_debuggerer>.freeze, ["~> 0.8.1"])
54
- s.add_development_dependency(%q<rake>.freeze, ["~> 10.4.2"])
55
- s.add_development_dependency(%q<rack>.freeze, ["~> 1.6.5"])
56
- s.add_development_dependency(%q<nokogiri>.freeze, ["~> 1.6.8.1"])
57
- s.add_development_dependency(%q<tins>.freeze, ["~> 1.6.0"])
58
- s.add_development_dependency(%q<term-ansicolor>.freeze, ["~> 1.3.2"])
59
- else
60
- s.add_dependency(%q<method_source>.freeze, [">= 0.8.2", "< 1.1.0"])
61
- s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
62
- s.add_dependency(%q<rdoc>.freeze, ["~> 4.2.0"])
63
- s.add_dependency(%q<rspec>.freeze, ["~> 3.2.0"])
64
- s.add_dependency(%q<puts_debuggerer>.freeze, ["~> 0.8.1"])
65
- s.add_dependency(%q<rake>.freeze, ["~> 10.4.2"])
66
- s.add_dependency(%q<rack>.freeze, ["~> 1.6.5"])
67
- s.add_dependency(%q<nokogiri>.freeze, ["~> 1.6.8.1"])
68
- s.add_dependency(%q<tins>.freeze, ["~> 1.6.0"])
69
- s.add_dependency(%q<term-ansicolor>.freeze, ["~> 1.3.2"])
70
- end
50
+ if s.respond_to? :add_runtime_dependency then
51
+ s.add_runtime_dependency(%q<method_source>.freeze, [">= 0.8.2", "< 2.0.0"])
52
+ s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
53
+ s.add_development_dependency(%q<rdoc>.freeze, ["~> 4.2.0"])
54
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.2.0"])
55
+ s.add_development_dependency(%q<puts_debuggerer>.freeze, ["> 0.8.1"])
56
+ s.add_development_dependency(%q<rake>.freeze, ["~> 10.4.2"])
57
+ s.add_development_dependency(%q<rack>.freeze, ["~> 1.6.5"])
58
+ s.add_development_dependency(%q<tins>.freeze, ["~> 1.6.0"])
59
+ s.add_development_dependency(%q<term-ansicolor>.freeze, ["~> 1.3.2"])
71
60
  else
72
- s.add_dependency(%q<method_source>.freeze, [">= 0.8.2", "< 1.1.0"])
61
+ s.add_dependency(%q<method_source>.freeze, [">= 0.8.2", "< 2.0.0"])
73
62
  s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
74
63
  s.add_dependency(%q<rdoc>.freeze, ["~> 4.2.0"])
75
64
  s.add_dependency(%q<rspec>.freeze, ["~> 3.2.0"])
76
- s.add_dependency(%q<puts_debuggerer>.freeze, ["~> 0.8.1"])
65
+ s.add_dependency(%q<puts_debuggerer>.freeze, ["> 0.8.1"])
77
66
  s.add_dependency(%q<rake>.freeze, ["~> 10.4.2"])
78
67
  s.add_dependency(%q<rack>.freeze, ["~> 1.6.5"])
79
- s.add_dependency(%q<nokogiri>.freeze, ["~> 1.6.8.1"])
80
68
  s.add_dependency(%q<tins>.freeze, ["~> 1.6.0"])
81
69
  s.add_dependency(%q<term-ansicolor>.freeze, ["~> 1.3.2"])
82
70
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_module
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-06 00:00:00.000000000 Z
11
+ date: 2024-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: method_source
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 0.8.2
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 1.1.0
22
+ version: 2.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 0.8.2
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 1.1.0
32
+ version: 2.0.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: jeweler
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -76,14 +76,14 @@ dependencies:
76
76
  name: puts_debuggerer
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">"
80
80
  - !ruby/object:Gem::Version
81
81
  version: 0.8.1
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">"
87
87
  - !ruby/object:Gem::Version
88
88
  version: 0.8.1
89
89
  - !ruby/object:Gem::Dependency
@@ -114,20 +114,6 @@ dependencies:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
116
  version: 1.6.5
117
- - !ruby/object:Gem::Dependency
118
- name: nokogiri
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: 1.6.8.1
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: 1.6.8.1
131
117
  - !ruby/object:Gem::Dependency
132
118
  name: tins
133
119
  requirement: !ruby/object:Gem::Requirement
@@ -159,7 +145,7 @@ dependencies:
159
145
  description: SuperModule allows defining class methods and method invocations the
160
146
  same way a super class does without using def included(base). This also succeeds
161
147
  ActiveSupport::Concern by offering lighter syntax
162
- email:
148
+ email:
163
149
  executables: []
164
150
  extensions: []
165
151
  extra_rdoc_files:
@@ -172,6 +158,7 @@ files:
172
158
  - LICENSE.txt
173
159
  - README.md
174
160
  - SuperModule.jpg
161
+ - TODO.md
175
162
  - VERSION
176
163
  - lib/super_module.rb
177
164
  - lib/super_module/v1.rb
@@ -188,7 +175,7 @@ homepage: http://github.com/AndyObtiva/super_module
188
175
  licenses:
189
176
  - MIT
190
177
  metadata: {}
191
- post_install_message:
178
+ post_install_message:
192
179
  rdoc_options: []
193
180
  require_paths:
194
181
  - lib
@@ -203,8 +190,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
190
  - !ruby/object:Gem::Version
204
191
  version: '0'
205
192
  requirements: []
206
- rubygems_version: 3.0.8
207
- signing_key:
193
+ rubygems_version: 3.3.5
194
+ signing_key:
208
195
  specification_version: 4
209
196
  summary: SuperModule allows defining class methods and method invocations the same
210
197
  way a super class does without using def included(base). This also succeeds ActiveSupport::Concern