pluggability 0.6.0 → 0.8.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
2
  SHA256:
3
- metadata.gz: e23ede1e5fd763077f3a64da3b661d1f769da80c52e951d251e49bff33a20cc8
4
- data.tar.gz: 77cc7a5f4b8454d0575ca95f3f4da6d41b6788348a5cbab058a30bda6bcc587c
3
+ metadata.gz: 4484023e3e262179c2c404956a61d7b2f45e39a4f35ec3a467ebb58487248a8c
4
+ data.tar.gz: 18c4dc97074347467326b56caaee97d198224179b5a2b927653999f3ef65cca6
5
5
  SHA512:
6
- metadata.gz: c6e5e411c4e132b979edf119454c3c92bdc6964d25a49ad7e1571a52321b2bb9a29d91d50817138af9a6337553b3a16fc6d9703a9066bdae5a632356a2ec2353
7
- data.tar.gz: c0e57bc0cf6f70345fe4bc247501a78d2dba35c602bfa640c54cd1e7babe74592467fb0999d91baae30ebf6b8faeef2f420486aa107aa8077df16e36456adc28
6
+ metadata.gz: c91ad9882dbe4106aeb597d48400a5e2ca9e83fb89ac3961f6cacbd20bd2fdeb437e4b3e1e16bcefe4822c468865c91b82ba12dbdb311f6add6728de95dd46b4
7
+ data.tar.gz: 74b488aee0aae9ff89b74631f1a412b27356a51f3e62653d61715226871bd685ae9051880d5f26c573049b9944fbc50b239b86becae8b185d19e7e373180d2d7
checksums.yaml.gz.sig CHANGED
Binary file
data/History.md CHANGED
@@ -1,5 +1,25 @@
1
+ # Release History for pluggability
2
+
3
+ ---
4
+ ## v0.8.0 [2022-12-01] Michael Granger <ged@faeriemud.org>
5
+
6
+ Improvements:
7
+
8
+ - Change default Ruby to 3.1
9
+ - Fix support for classes with number in their name
10
+
11
+
12
+ ## v0.7.0 [2020-02-05] Michael Granger <ged@faeriemud.org>
13
+
14
+ Improvements:
15
+
16
+ - Updated for Ruby 2.7
17
+
18
+
1
19
  ## v0.6.0 [2018-03-12] Michael Granger <ged@FaerieMUD.org>
2
20
 
21
+ Bugfix:
22
+
3
23
  - Switch back to require for loading derivatives
4
24
 
5
25
 
data/README.md CHANGED
@@ -1,13 +1,16 @@
1
1
  # pluggability
2
2
 
3
- project
4
- : https://bitbucket.org/ged/pluggability
3
+ home
4
+ : https://hg.sr.ht/~ged/Pluggability
5
5
 
6
6
  docs
7
- : http://deveiate.org/code/pluggability
7
+ : https://deveiate.org/code/pluggability
8
+
9
+ code
10
+ : https://hg.sr.ht/~ged/Pluggability/browse
8
11
 
9
12
  github
10
- : http://github.com/ged/pluggability
13
+ : https://github.com/ged/pluggability
11
14
 
12
15
 
13
16
  ## Description
@@ -239,9 +242,15 @@ This task will install any missing dependencies, run the tests/specs,
239
242
  and generate the API documentation.
240
243
 
241
244
 
245
+ ## Authors
246
+
247
+ - Michael Granger <ged@faeriemud.org>
248
+ - Martin Chase <outofculture@gmail.com>
249
+
250
+
242
251
  ## License
243
252
 
244
- Copyright (c) 2008-2018, Michael Granger and Martin Chase
253
+ Copyright (c) 2008-2020, Michael Granger and Martin Chase
245
254
  All rights reserved.
246
255
 
247
256
  Redistribution and use in source and binary forms, with or without
data/lib/pluggability.rb CHANGED
@@ -12,7 +12,7 @@ module Pluggability
12
12
 
13
13
 
14
14
  # Library version
15
- VERSION = '0.6.0'
15
+ VERSION = '0.8.0'
16
16
 
17
17
 
18
18
  # An exception class for Pluggability specific errors.
@@ -170,7 +170,7 @@ module Pluggability
170
170
 
171
171
  simple_name = subclass.name.sub( /^.*::/i, '' ).sub( /\W+$/, '' )
172
172
  keys << simple_name << simple_name.downcase
173
- keys << simple_name.gsub( /([a-z])([A-Z])/, "\\1_\\2" ).downcase
173
+ keys << simple_name.gsub( /([a-z0-9])([A-Z])/, "\\1_\\2" ).downcase
174
174
 
175
175
  # Handle class names like 'FooBar' for 'Bar' factories.
176
176
  Pluggability.log.debug "Inherited %p for %p-type plugins" % [ subclass, self.plugin_type ]
@@ -346,7 +346,7 @@ module Pluggability
346
346
  raise Pluggability::PluginError, errmsg
347
347
  end
348
348
 
349
- Kernel.require( plugin_path.untaint )
349
+ Kernel.require( plugin_path )
350
350
 
351
351
  return plugin_path
352
352
  end
data/spec/helpers.rb CHANGED
@@ -11,6 +11,7 @@ RSpec.configure do |config|
11
11
  config.run_all_when_everything_filtered = true
12
12
  config.filter_run :focus
13
13
  config.order = 'random'
14
+ config.warnings = true
14
15
  config.mock_with( :rspec ) do |mock_config|
15
16
  mock_config.syntax = :expect
16
17
  end
@@ -17,6 +17,7 @@ end
17
17
  class SubPlugin < Plugin; end
18
18
  class TestingPlugin < Plugin; end
19
19
  class BlackSheep < Plugin; end
20
+ class Carbon14Robot < Plugin; end
20
21
  module Test
21
22
  class LoadablePlugin < Plugin; end
22
23
  end
@@ -35,7 +36,6 @@ describe Pluggability do
35
36
  end
36
37
 
37
38
 
38
-
39
39
  it "allows extended objects to declare one or more prefixes to use when requiring derviatives" do
40
40
  expect( Plugin.plugin_prefixes ).to eq( ['plugins', 'plugins/private'] )
41
41
  end
@@ -179,6 +179,7 @@ describe Pluggability do
179
179
  Plugin.load_all
180
180
  end
181
181
 
182
+
182
183
  it "doesn't preload derivatives whose path matches a Regexp exclusion" do
183
184
  expect( Gem ).to receive( :find_latest_files ).with( 'plugins/*.rb' ).
184
185
  and_return([ '/path/to/plugins/first.rb' ])
@@ -247,6 +248,11 @@ describe Pluggability do
247
248
  end
248
249
 
249
250
 
251
+ it "works for classes with numbers in them too" do
252
+ expect( Plugin.create('carbon14_robot') ).to be_an_instance_of( Carbon14Robot )
253
+ end
254
+
255
+
250
256
  it "knows what the simplest version of its plugin name is" do
251
257
  expect( BlackSheep.plugin_name ).to eq( 'black_sheep' )
252
258
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,42 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pluggability
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
- - Martin Chase
8
7
  - Michael Granger
9
- autorequire:
8
+ - Martin Chase
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - |
13
13
  -----BEGIN CERTIFICATE-----
14
- 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
- GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
16
- HhcNMTcwOTI3MDAzMDQ0WhcNMTgwOTI3MDAzMDQ0WjA+MQwwCgYDVQQDDANnZWQx
17
- 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
- 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
- 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
- ENcvWVZS4iUzi4dsYJGY6yEOsXh2CcF46+QevV8iE+UmbkU75V7Dy1JCaUOyizEt
21
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
35
+ btEP+7EplFuoiMfd
38
36
  -----END CERTIFICATE-----
39
- date: 2018-03-21 00:00:00.000000000 Z
37
+ date: 2022-12-01 00:00:00.000000000 Z
40
38
  dependencies:
41
39
  - !ruby/object:Gem::Dependency
42
40
  name: loggability
@@ -44,44 +42,30 @@ dependencies:
44
42
  requirements:
45
43
  - - "~>"
46
44
  - !ruby/object:Gem::Version
47
- version: '0.12'
45
+ version: '0.15'
48
46
  type: :runtime
49
47
  prerelease: false
50
48
  version_requirements: !ruby/object:Gem::Requirement
51
49
  requirements:
52
50
  - - "~>"
53
51
  - !ruby/object:Gem::Version
54
- version: '0.12'
55
- - !ruby/object:Gem::Dependency
56
- name: hoe-mercurial
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '1.4'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.4'
52
+ version: '0.15'
69
53
  - !ruby/object:Gem::Dependency
70
- name: hoe-deveiate
54
+ name: rake-deveiate
71
55
  requirement: !ruby/object:Gem::Requirement
72
56
  requirements:
73
57
  - - "~>"
74
58
  - !ruby/object:Gem::Version
75
- version: '0.9'
59
+ version: '0.21'
76
60
  type: :development
77
61
  prerelease: false
78
62
  version_requirements: !ruby/object:Gem::Requirement
79
63
  requirements:
80
64
  - - "~>"
81
65
  - !ruby/object:Gem::Version
82
- version: '0.9'
66
+ version: '0.21'
83
67
  - !ruby/object:Gem::Dependency
84
- name: hoe-highline
68
+ name: rdoc-generator-sixfish
85
69
  requirement: !ruby/object:Gem::Requirement
86
70
  requirements:
87
71
  - - "~>"
@@ -94,96 +78,45 @@ dependencies:
94
78
  - - "~>"
95
79
  - !ruby/object:Gem::Version
96
80
  version: '0.2'
97
- - !ruby/object:Gem::Dependency
98
- name: rdoc
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '5.1'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '5.1'
111
- - !ruby/object:Gem::Dependency
112
- name: hoe
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '3.16'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '3.16'
125
- description: "Pluggability is a toolkit for creating plugins.\n\nIt provides a mixin
126
- that extends your class with methods to load and instantiate its subclasses by name.
127
- So instead of:\n\n require 'acme/adapter/png'\n png_adapter = Acme::Adapter::PNG.new(
128
- 'file.png' )\n \nyou can do:\n\n require 'acme/adapter'\n png_adapter = Acme::Adapter.create(
129
- :png, 'file.png' )\n\nA full example of where this might be useful is in a program
130
- which generates\noutput with a 'driver' object, which provides a unified interface
131
- but generates\ndifferent kinds of output.\n\nFirst the abstract base class, which
132
- is extended with Pluggability:\n\n # in mygem/driver.rb:\n require 'pluggability'\n
133
- \ require 'mygem' unless defined?( MyGem )\n \n class MyGem::Driver\n extend
134
- Pluggability\n plugin_prefixes \"mygem/drivers\"\n end\n\nWe can have
135
- one driver that outputs PDF documents:\n\n # mygem/drivers/pdf.rb:\n require
136
- 'mygem/driver' unless defined?( MyGem::Driver )\n \n class MyGem::Driver::PDF
137
- < Driver\n ...implementation...\n end\n\nand another that outputs plain
138
- ascii text:\n\n #mygem/drivers/ascii.rb:\n require 'mygem/driver' unless defined?(
139
- MyGem::Driver )\n \n class MyGem::Driver::ASCII < Driver\n ...implementation...\n
140
- \ end\n\nNow the driver is configurable by the end-user, who can just set\nit
141
- by its short name:\n\n require 'mygem'\n \n config[:driver_type] #=> \"pdf\"\n
142
- \ driver = MyGem::Driver.create( config[:driver_type] )\n driver.class #=>
143
- MyGem::Driver::PDF\n\n # You can also pass arguments to the constructor, too:\n
144
- \ ascii_driver = MyGem::Driver.create( :ascii, :columns => 80 )"
81
+ description: Pluggability is a toolkit for creating plugins.
145
82
  email:
146
- - stillflame@FaerieMUD.org
147
- - ged@FaerieMUD.org
83
+ - ged@faeriemud.org
84
+ - outofculture@gmail.com
148
85
  executables: []
149
86
  extensions: []
150
- extra_rdoc_files:
151
- - History.md
152
- - Manifest.txt
153
- - README.md
87
+ extra_rdoc_files: []
154
88
  files:
155
- - ChangeLog
156
89
  - History.md
157
- - Manifest.txt
158
90
  - README.md
159
- - Rakefile
160
91
  - lib/pluggability.rb
161
92
  - spec/helpers.rb
162
93
  - spec/pluggability_spec.rb
163
- homepage: http://bitbucket.org/ged/pluggability
94
+ homepage: https://hg.sr.ht/~ged/Pluggability
164
95
  licenses:
165
96
  - BSD-3-Clause
166
- metadata: {}
167
- post_install_message:
168
- rdoc_options:
169
- - "--main"
170
- - README.md
97
+ metadata:
98
+ homepage_uri: https://hg.sr.ht/~ged/Pluggability
99
+ documentation_uri: https://deveiate.org/code/pluggability
100
+ changelog_uri: https://deveiate.org/code/pluggability/History_md.html
101
+ source_uri: https://hg.sr.ht/~ged/Pluggability/browse
102
+ bug_tracker_uri: https://todo.sr.ht/~ged/Pluggability/browse
103
+ post_install_message:
104
+ rdoc_options: []
171
105
  require_paths:
172
106
  - lib
173
107
  required_ruby_version: !ruby/object:Gem::Requirement
174
108
  requirements:
175
109
  - - ">="
176
110
  - !ruby/object:Gem::Version
177
- version: 2.3.4
111
+ version: '0'
178
112
  required_rubygems_version: !ruby/object:Gem::Requirement
179
113
  requirements:
180
114
  - - ">="
181
115
  - !ruby/object:Gem::Version
182
116
  version: '0'
183
117
  requirements: []
184
- rubyforge_project:
185
- rubygems_version: 2.7.4
186
- signing_key:
118
+ rubygems_version: 3.3.7
119
+ signing_key:
187
120
  specification_version: 4
188
- summary: Pluggability is a toolkit for creating plugins
121
+ summary: Pluggability is a toolkit for creating plugins.
189
122
  test_files: []
metadata.gz.sig CHANGED
Binary file