expand 1.0.2 → 1.0.3

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: fa05996ba3e525e97297fadc5e958ede85494fb8
4
- data.tar.gz: 6f4425acb6142ef5e273c39bcc00b6140812dccf
2
+ SHA256:
3
+ metadata.gz: 2ea9a1efdd9f3eb0013dcf094347e32d3c48aeb6d819d95d76a368c14de20862
4
+ data.tar.gz: d21f446e4e5a1d793da4cc23c9017d6e15ba80066905cd302e9be33e25cfff2f
5
5
  SHA512:
6
- metadata.gz: 557437e0b3f3677503e81e591eccbbb41c46603a26674d95e02c394f8cb87e590bd5fec8cb33eaf162a7c5c963f3a178760592f9d9b22822cf4fcb3085a57ff4
7
- data.tar.gz: dcc31bf73a0a410bd6b81958d8acc4a602a687331f90d5080fd53ca59079da07ea66f091678b8119483cad8af3516086dabdb4f7d4be50ecb0ab382dd94ad97c
6
+ metadata.gz: 0660ff8939459c77f34920c14d5b678ed5a8703bc3dfab0b2a523afd75a07b516e9d25596b0ca333ad3c3f52ae1fd623047bb4033961a68e306fef25970f8401
7
+ data.tar.gz: 3e51316a7a7a0b7c5ca31de138b6c09ebba2446f450166ce1a43ec4a1912b86f1cce7baf3c3e063bd05bd55c34513b67304a8ac99ddeb068b830102afde4d0ad
@@ -0,0 +1,8 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "10:00"
8
+ open-pull-requests-limit: 10
@@ -0,0 +1,37 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ "master" ]
13
+ pull_request:
14
+ branches: [ "master" ]
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ jobs:
20
+ test:
21
+
22
+ runs-on: ubuntu-latest
23
+ strategy:
24
+ matrix:
25
+ ruby-version: ['2.6', '2.7', '3.0', '3.1']
26
+
27
+ steps:
28
+ - uses: actions/checkout@v3
29
+ - name: Set up Ruby
30
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
31
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
32
+ uses: ruby/setup-ruby@v1
33
+ with:
34
+ ruby-version: ${{ matrix.ruby-version }}
35
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
36
+ - name: Run tests
37
+ run: bundle exec rake
data/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
- ## 1.0.1
2
- - allow specified namespace to be a module instead of a string
1
+ ## 1.0.3
3
2
 
4
- ## 1.0.0 (2016-01-14)
5
- Initial release.
6
- - allow creation of classes and modules under a namespace
3
+ - allow the creation of a module or class in the namespace/expand method itself.
4
+
5
+ ## 1.0.2
6
+
7
+ - Add documentation
8
+
9
+ ## 1.0.1
10
+ - allow specified namespace to be a module instead of a string
11
+
12
+ ## 1.0.0 (2016-01-14)
13
+ Initial release.
14
+ - allow creation of classes and modules under a namespace
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in expand.gemspec
4
4
  gemspec
5
+
6
+ gem "minitest"
7
+ gem "simplecov"
8
+ gem "rake"
data/README.md CHANGED
@@ -34,6 +34,21 @@ end
34
34
  SomeGem::Thing::NewThing #=> SomeGem::Thing::NewThing
35
35
  ```
36
36
 
37
+ And even simpler, you can do it all in one line:
38
+
39
+ ```ruby
40
+ require 'expand'
41
+ extend Expand
42
+
43
+ namespace SomeGem::Thing, class: :NewThing, parent: SomeExistingOtherClass do
44
+ # define methods here
45
+ end
46
+
47
+ namespace SomeGem::Thing, class: :NewModule do
48
+ # define methods here
49
+ end
50
+ ```
51
+
37
52
  ## Installation
38
53
 
39
54
  Add this line to your application's Gemfile:
data/expand.gemspec CHANGED
@@ -18,8 +18,4 @@ Gem::Specification.new do |spec|
18
18
  spec.bindir = "exe"
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
-
22
- spec.add_development_dependency "bundler", "~> 1.11"
23
- spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "minitest", "~> 5.0"
25
21
  end
@@ -1,3 +1,3 @@
1
1
  module Expand
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
data/lib/expand.rb CHANGED
@@ -8,7 +8,7 @@ module Expand
8
8
  #
9
9
  class Manager
10
10
  # @see Expand#namespace
11
- def initialize(namespace)
11
+ def initialize(namespace, **class_or_module, &block)
12
12
  @managed = namespace
13
13
  end
14
14
 
@@ -71,13 +71,29 @@ module Expand
71
71
  # @see Expand::Manager#create_class
72
72
  # @see Expand::Manager#create_module
73
73
  #
74
- def namespace(context, &block)
74
+ def namespace(context, **class_or_module, &block)
75
75
  unless context.is_a?(Module)
76
76
  context = context.to_s.split('::').inject(Object) do |base, mod|
77
77
  base.const_get(mod)
78
78
  end
79
79
  end
80
- Manager.new(context).instance_eval(&block)
80
+ manager = Manager.new(context)
81
+
82
+ creating_class, creating_module = class_or_module[:class], class_or_module[:module]
83
+ raise ArgumentError, "You must choose either class: or module: but not both." if creating_class && creating_module
84
+
85
+ case
86
+ when creating_class
87
+ parent = class_or_module[:parent] || Object
88
+ manager.create_class(creating_class, parent: parent, &block)
89
+ when creating_module
90
+ if class_or_module[:parent]
91
+ warn "An option for :parent was provided as `#{class_or_module[:parent]}' but was ignored when creating the module: #{class_or_module[:module]}"
92
+ end
93
+ manager.create_module(creating_module, &block)
94
+ else
95
+ manager.instance_eval(&block)
96
+ end
81
97
  end
82
98
  alias expand namespace
83
99
  end
metadata CHANGED
@@ -1,57 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expand
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - "'Jim Gay'"
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-16 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.11'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.11'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
- - !ruby/object:Gem::Dependency
42
- name: minitest
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '5.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '5.0'
11
+ date: 2022-07-20 00:00:00.000000000 Z
12
+ dependencies: []
55
13
  description: Create classes and modules under an existing namespace
56
14
  email:
57
15
  - jim@saturnflyer.com
@@ -59,8 +17,9 @@ executables: []
59
17
  extensions: []
60
18
  extra_rdoc_files: []
61
19
  files:
20
+ - ".github/dependabot.yml"
21
+ - ".github/workflows/test.yml"
62
22
  - ".gitignore"
63
- - ".travis.yml"
64
23
  - CHANGELOG.md
65
24
  - CODE_OF_CONDUCT.md
66
25
  - Gemfile
@@ -76,7 +35,7 @@ homepage: https://github.com/saturnflyer/expand
76
35
  licenses:
77
36
  - MIT
78
37
  metadata: {}
79
- post_install_message:
38
+ post_install_message:
80
39
  rdoc_options: []
81
40
  require_paths:
82
41
  - lib
@@ -91,10 +50,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
50
  - !ruby/object:Gem::Version
92
51
  version: '0'
93
52
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 2.5.1
96
- signing_key:
53
+ rubygems_version: 3.3.17
54
+ signing_key:
97
55
  specification_version: 4
98
56
  summary: Create classes and modules under an existing namespace
99
57
  test_files: []
100
- has_rdoc:
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.3.0
4
- before_install: gem install bundler -v 1.11.2