expand 1.0.2 → 1.0.3

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
- 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