pluginator 0.10.1 → 0.11.0

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
  SHA1:
3
- metadata.gz: 59d64edff8d110c4973f3904dc82b87169e5df85
4
- data.tar.gz: bfcaaf2bd8c78b659be273bef544cfaa11d5b852
3
+ metadata.gz: 0db9991966679d973e056d3fc78fdc31f6ee06ba
4
+ data.tar.gz: 8e7f9c12a90c8799dc1b8cb901ccda0a3794bddb
5
5
  SHA512:
6
- metadata.gz: b7a922e4fc107b5ba0a0c13e5f07747bb586bf4c013e1c4d2c9bc8c7756ebab49697875a93c06e6e90e3b41174688754036811f918496f77bb5ebf492973a7f8
7
- data.tar.gz: 7379ef2083b122ece8b36b9a38924438257246c16d3e8e3582252789e9c26d4555844bfcc8d4b2080b0a8add52a58349f5eb7aa9da3cfea8d4223d1cc7a228fc
6
+ metadata.gz: c8c4125ef8eb09e0b54d4c01be7c836310ed687874ab9c6cf09d20df00e972975b6a8581a836bcc5adcef4d6dce973da82e2602cd91039379a567164ec55a1bc
7
+ data.tar.gz: d782e278f8563218cabacab95c09c259b98dec719dc532ecb3edc8656b5e54ded69a4457ba7f5b572ccd8b5128e5828c616645566c8f91b2dd05841035c84c8d
data/.travis.yml CHANGED
@@ -1,9 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
3
  - 2.0.0
5
- - jruby-19mode
6
- - rbx-19mode
7
4
  notifications:
8
5
  irc:
9
6
  channels:
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![Dependency Status](https://gemnasium.com/rvm/pluginator.png)](https://gemnasium.com/rvm/pluginator)
6
6
 
7
7
  Gem plugin system management, detects plugins using `Gem.find_file`.
8
- Is only supposed with ruby 1.9.3+
8
+ Is only supposed with ruby 2.0.0+ (requires keyword arguments)
9
9
 
10
10
  Pluginator tries to stay out of your way, you do not have to include or inherit anything.
11
11
  Pluginator only finds and groups plugins, rest is up to you,
@@ -30,7 +30,7 @@ where `<type>` can be nested
30
30
  ## Loading plugins
31
31
 
32
32
  ```ruby
33
- rvm2plugins = Pluginator::Autodetect.new("<group>")
33
+ rvm2plugins = Pluginator.find("<group>")
34
34
  type_plugins = rvm2plugins["<type>"]
35
35
  types = rvm2plugins.types
36
36
  ```
@@ -38,9 +38,9 @@ types = rvm2plugins.types
38
38
  ## Loading plugins of single type
39
39
 
40
40
  ```ruby
41
- rvm2plugins = Pluginator::Autodetect.new("<group>", "<type>")
41
+ rvm2plugins = Pluginator.find("<group>", "<type>")
42
42
  type_plugins = rvm2plugins["<type>"]
43
- types = rvm2plugins.types
43
+ rvm2plugins.types => ["<type>"]
44
44
  ```
45
45
 
46
46
  ## Examples
@@ -67,13 +67,22 @@ Now the plugin can be used:
67
67
  ```ruby
68
68
  require 'pluginator'
69
69
 
70
- rvm2plugins = Pluginator::Autodetect.new("rvm2")
70
+ rvm2plugins = Pluginator.find("rvm2")
71
71
  plugin = rvm2plugins["cli"].first{ |plugin|
72
72
  plugin.question?('echo')
73
73
  }
74
74
  plugin.new.answer("Hello world")
75
75
  ```
76
76
 
77
+ Or using extensions:
78
+
79
+ ```ruby
80
+ require 'pluginator'
81
+
82
+ plugin = Pluginator.find("rvm2", extends: %i{first_ask}).first_ask("cli", &:question?, 'echo')
83
+ plugin.new.answer("Hello world")
84
+ ```
85
+
77
86
  ### Example 2 - hook plugins
78
87
 
79
88
  `plugins/rvm2/hooks/after_install/show.rb`:
@@ -91,8 +100,7 @@ and using hooks:
91
100
  ```ruby
92
101
  require 'pluginator'
93
102
 
94
- rvm2plugins = Pluginator::Autodetect.new("rvm2")
95
- plugin = rvm2plugins["hooks/after_install"].each{ |plugin|
103
+ Pluginator.find("rvm2", type: "hooks/after_install").type.each{ |plugin|
96
104
  plugin.execute(name, path)
97
105
  }
98
106
  ```
@@ -1,4 +1,4 @@
1
- class Pluginator::Math::Decrease
1
+ class Something::Math::Decrease
2
2
  def self.type
3
3
  "decrease"
4
4
  end
@@ -1,4 +1,4 @@
1
- class Pluginator::Math::Increase
1
+ class Something::Math::Increase
2
2
  def self.type
3
3
  "increase"
4
4
  end
@@ -0,0 +1,10 @@
1
+ class Something::Stats::Max
2
+
3
+ def self.handles?(what)
4
+ %w{ max maximum }.include?(what)
5
+ end
6
+
7
+ def self.action
8
+ 42
9
+ end
10
+ end
@@ -1,19 +1,32 @@
1
+ require_relative "errors"
1
2
  require_relative "group"
2
3
  require_relative "name_converter"
3
4
 
4
5
  module Pluginator
5
6
  class Autodetect < Group
6
7
 
7
- def initialize(group, type=nil)
8
+ def initialize(group, type: nil)
8
9
  super(group)
9
- @force_type = type
10
- load_files(find_files)
10
+ setup_autodetect(type)
11
+ end
12
+
13
+ def type
14
+ @plugins[@force_type]
11
15
  end
12
16
 
13
17
  private
14
18
 
15
19
  include NameConverter
16
20
 
21
+ def setup_autodetect(type)
22
+ @force_type = type
23
+ load_files(find_files)
24
+ end
25
+
26
+ def find_files
27
+ Gem.find_files(file_name_pattern(@group, @force_type))
28
+ end
29
+
17
30
  def load_files(file_names)
18
31
  file_names.each do |file_name|
19
32
  path, name, type = split_file_name(file_name, @group)
@@ -22,10 +35,6 @@ module Pluginator
22
35
  end
23
36
  end
24
37
 
25
- def find_files
26
- Gem.find_files(file_name_pattern(@group, @force_type))
27
- end
28
-
29
38
  def load_plugin(path)
30
39
  gemspec = Gem::Specification.find_by_path(path)
31
40
  gemspec.activate if gemspec && !gemspec.activated?
@@ -0,0 +1,18 @@
1
+ module Pluginator
2
+ class PluginatorError < RuntimeError
3
+ end
4
+
5
+ class MissingPlugin < PluginatorError
6
+ def initialize(type, name, list)
7
+ list = list.map{|e| "'#{e}'" }.join(", ")
8
+ super("Can not find plugin '#{name}' in #{list} for type '#{type}'.")
9
+ end
10
+ end
11
+
12
+ class MissingType < PluginatorError
13
+ def initialize(type, list)
14
+ list = list.map{|e| "'#{e}'" }.join(", ")
15
+ super("Can not find type '#{type}' in #{list}.")
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,37 @@
1
+ require_relative "autodetect"
2
+
3
+ module Pluginator
4
+ class ExtendableAutodetect < Autodetect
5
+
6
+ def initialize(group, type: nil, extends: [])
7
+ super(group, type: type)
8
+ extend_plugins(extends)
9
+ end
10
+
11
+ def extend_plugins(extends)
12
+ extensions_matching(extends).each do |plugin|
13
+ extend plugin
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def flatten_and_stringify(extends)
20
+ extends = [extends].flatten.map(&:to_s)
21
+ extends
22
+ end
23
+
24
+ def pluginator_plugins
25
+ @pluginator_plugins ||= begin
26
+ plugins = Pluginator::Autodetect.new("pluginator")
27
+ plugins.extend(Pluginator::Extensions::Matching)
28
+ plugins
29
+ end
30
+ end
31
+
32
+ def extensions_matching(extends)
33
+ pluginator_plugins.filter!("extensions", flatten_and_stringify(extends))
34
+ end
35
+
36
+ end
37
+ end
@@ -3,7 +3,7 @@ module Pluginator
3
3
  attr_reader :group
4
4
 
5
5
  def initialize(group)
6
- setup(group)
6
+ setup_group(group)
7
7
  end
8
8
 
9
9
  def [](type)
@@ -22,7 +22,7 @@ module Pluginator
22
22
 
23
23
  private
24
24
 
25
- def setup(group)
25
+ def setup_group(group)
26
26
  @plugins = {}
27
27
  @group = group
28
28
  end
@@ -1,3 +1,3 @@
1
1
  module Pluginator
2
- VERSION = "0.10.1"
2
+ VERSION = "0.11.0"
3
3
  end
data/lib/pluginator.rb CHANGED
@@ -1,2 +1,8 @@
1
- require_relative "pluginator/autodetect"
1
+ require_relative "pluginator/extendable_autodetect"
2
2
  require_relative "pluginator/version"
3
+
4
+ module Pluginator
5
+ def self.group(group, type: nil, extends: [])
6
+ Pluginator::ExtendableAutodetect.new(group, type: type, extends: extends)
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ module Pluginator::Extensions
2
+ module Conversions
3
+ def class2string( klass )
4
+ klass.to_s.gsub(/([A-Z])/m){|match| "_#{$1.downcase}" }[1..-1]
5
+ end
6
+ def string2class( str )
7
+ str.to_s.capitalize.gsub(/_(.)/){ $1.upcase }
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,23 @@
1
+ require_relative "plugins_map"
2
+
3
+ module Pluginator::Extensions
4
+ module FirstAsk
5
+ include PluginsMap
6
+
7
+ def first_ask(type, method_name, *params)
8
+ @plugins[type] or return nil
9
+ @plugins[type].detect do |plugin|
10
+ plugin.public_send(method_name, *params)
11
+ end
12
+ end
13
+
14
+ def first_ask!(type, method_name, *params)
15
+ @plugins[type] or raise Pluginator::MissingType.new(type, @plugins.types)
16
+ @plugins[type].detect do |plugin|
17
+ plugin.public_send(method_name, *params)
18
+ end or
19
+ raise Pluginator::MissingPlugin.new(type, "first_ask: #{method_name}", plugins_map(type).keys)
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ require_relative "plugins_map"
2
+ require_relative "conversions"
3
+
4
+ module Pluginator::Extensions
5
+ module Matching
6
+ include PluginsMap
7
+ include Conversions
8
+
9
+ def filter(type, list)
10
+ list.map do |plugin|
11
+ (plugins_map(type) || {})[string2class(plugin)]
12
+ end
13
+ end
14
+
15
+ def filter!(type, list)
16
+ @plugins[type] or raise Pluginator::MissingType.new(type, @plugins.types)
17
+ list.map do |plugin|
18
+ plugin = string2class(plugin)
19
+ plugins_map(type)[plugin] or
20
+ raise Pluginator::MissingPlugin.new(type, plugin, plugins_map(type).keys)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,9 @@
1
+ module Pluginator::Extensions
2
+ module PluginsMap
3
+ def plugins_map( type )
4
+ @plugins_map ||= {}
5
+ type = type.to_s
6
+ @plugins_map[type] ||= Hash[ @plugins[type].map{|plugin| [plugin.name.split('::').last, plugin] } ]
7
+ end
8
+ end
9
+ end
@@ -1,8 +1,10 @@
1
1
  require 'minitest/autorun'
2
2
  require 'pluginator/autodetect'
3
3
 
4
- module Pluginator::Math; end
5
- module Pluginator::Stats; end
4
+ module Something
5
+ module Math; end
6
+ module Stats; end
7
+ end
6
8
 
7
9
  def demo_file(path)
8
10
  File.expand_path(File.join("..", "..", "demo", path), __FILE__)
@@ -14,40 +16,45 @@ end
14
16
 
15
17
  describe Pluginator::Autodetect do
16
18
  before do
17
- @math_files = demo_files("plugins/pluginator/math/increase.rb", "plugins/pluginator/math/decrease.rb")
18
- @all_files = demo_files("plugins/pluginator/math/increase.rb", "plugins/pluginator/math/decrease.rb", "plugins/pluginator/stats/max.rb")
19
+ @math_files = demo_files("plugins/something/math/increase.rb", "plugins/something/math/decrease.rb")
20
+ @all_files = demo_files("plugins/something/math/increase.rb", "plugins/something/math/decrease.rb", "plugins/something/stats/max.rb")
19
21
  end
20
22
 
21
23
  describe "separate" do
22
24
  before do
23
25
  @pluginator = Pluginator::Autodetect.allocate
24
- @pluginator.send(:setup, "pluginator")
26
+ @pluginator.send(:setup_group, "something")
25
27
  end
26
28
 
27
29
  it "has name" do
28
- @pluginator.group.must_equal("pluginator")
30
+ @pluginator.group.must_equal("something")
29
31
  end
30
32
 
31
33
  it "has demo file" do
32
- File.exists?(demo_file("plugins/pluginator/math/increase.rb")).must_equal(true)
34
+ File.exists?(demo_file("plugins/something/math/increase.rb")).must_equal(true)
33
35
  end
34
36
 
35
37
  it "loads plugin" do
36
- @pluginator.send(:load_plugin, "plugins/pluginator/math/increase.rb")
38
+ @pluginator.send(:load_plugin, "plugins/something/math/increase.rb")
37
39
  end
38
40
 
39
41
  it "finds files existing group" do
40
42
  @pluginator.send(:find_files).sort.must_equal(@all_files.sort)
41
43
  end
42
44
 
45
+ it "finds files group and missing type" do
46
+ @pluginator.instance_variable_set(:@force_type, "none")
47
+ @pluginator.send(:find_files).must_equal([])
48
+ end
49
+
43
50
  it "finds files group and existing type" do
44
51
  @pluginator.instance_variable_set(:@force_type, "math")
45
52
  @pluginator.send(:find_files).sort.must_equal(@math_files.sort)
46
53
  end
47
54
 
48
- it "finds files group and missing type" do
49
- @pluginator.instance_variable_set(:@force_type, "none")
50
- @pluginator.send(:find_files).must_equal([])
55
+ it "finds files group and existing type" do
56
+ @pluginator.instance_variable_set(:@force_type, "math")
57
+ @pluginator.type.must_equal( @pluginator["math"] )
51
58
  end
52
59
 
53
60
  it "loads files" do
@@ -55,38 +62,38 @@ describe Pluginator::Autodetect do
55
62
  @pluginator.types.must_include('math')
56
63
  plugins = @pluginator["math"].map(&:to_s)
57
64
  plugins.size.must_equal(2)
58
- plugins.must_include("Pluginator::Math::Increase")
59
- plugins.must_include("Pluginator::Math::Decrease")
60
- plugins.wont_include("Pluginator::Math::Substract")
65
+ plugins.must_include("Something::Math::Increase")
66
+ plugins.must_include("Something::Math::Decrease")
67
+ plugins.wont_include("Something::Math::Substract")
61
68
  end
62
69
  end
63
70
 
64
71
  it "loads plugins automatically for group" do
65
- pluginator = Pluginator::Autodetect.new("pluginator")
72
+ pluginator = Pluginator::Autodetect.new("something")
66
73
  pluginator.types.must_include('stats')
67
74
  pluginator.types.must_include('math')
68
75
  pluginator.types.size.must_equal(2)
69
76
  plugins = pluginator["math"].map(&:to_s)
70
77
  plugins.size.must_equal(2)
71
- plugins.must_include("Pluginator::Math::Increase")
72
- plugins.must_include("Pluginator::Math::Decrease")
73
- plugins.wont_include("Pluginator::Math::Add")
78
+ plugins.must_include("Something::Math::Increase")
79
+ plugins.must_include("Something::Math::Decrease")
80
+ plugins.wont_include("Something::Math::Add")
74
81
  end
75
82
 
76
83
  it "loads plugins automatically for group/type" do
77
- pluginator = Pluginator::Autodetect.new("pluginator", "stats")
84
+ pluginator = Pluginator::Autodetect.new("something", type: "stats")
78
85
  pluginator.types.must_include('stats')
79
86
  pluginator.types.size.must_equal(1)
80
87
  end
81
88
 
82
89
  it "makes group plugins work" do
83
- pluginator = Pluginator::Autodetect.new("pluginator")
90
+ pluginator = Pluginator::Autodetect.new("something")
84
91
  pluginator["math"].detect{|plugin| plugin.type == "increase" }.action(2).must_equal(3)
85
92
  pluginator["math"].detect{|plugin| plugin.type == "decrease" }.action(5).must_equal(4)
86
93
  end
87
94
 
88
95
  it "hides methods" do
89
- pluginator = Pluginator::Autodetect.new("pluginator")
96
+ pluginator = Pluginator::Autodetect.new("something")
90
97
  pluginator.public_methods.must_include(:register_plugin)
91
98
  pluginator.public_methods.wont_include(:load_plugins)
92
99
  pluginator.public_methods.wont_include(:split_file_name)
@@ -0,0 +1,24 @@
1
+ require 'minitest/autorun'
2
+ require 'pluginator/extendable_autodetect'
3
+
4
+ describe Pluginator::ExtendableAutodetect do
5
+ it "loads existing extensions - array" do
6
+ pluginator = Pluginator::ExtendableAutodetect.new("something", extends: %i{conversions})
7
+ pluginator.public_methods.must_include(:class2string)
8
+ pluginator.public_methods.must_include(:string2class)
9
+ pluginator.public_methods.wont_include(:plugins_map)
10
+ end
11
+
12
+ it "loads existing extensions - symbol" do
13
+ pluginator = Pluginator::ExtendableAutodetect.new("something", extends: :conversions)
14
+ pluginator.public_methods.must_include(:class2string)
15
+ pluginator.public_methods.must_include(:string2class)
16
+ pluginator.public_methods.wont_include(:plugins_map)
17
+ end
18
+
19
+ it "fails to load missing extension" do
20
+ lambda {
21
+ Pluginator::ExtendableAutodetect.new("something", extends: %i{missing_conversions})
22
+ }.must_raise(Pluginator::MissingPlugin)
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ require 'minitest/autorun'
2
+ require 'plugins/pluginator/extensions/conversions'
3
+
4
+ class ConversionsTester
5
+ extend Pluginator::Extensions::Conversions
6
+ end
7
+
8
+ describe Pluginator::Extensions::Conversions do
9
+ it "class2string" do
10
+ ConversionsTester.class2string('SomethingLong').must_match('something_long')
11
+ end
12
+ it "string2class" do
13
+ ConversionsTester.string2class('something_long').must_match('SomethingLong')
14
+ end
15
+ end
@@ -0,0 +1,39 @@
1
+ require 'minitest/autorun'
2
+ require 'plugins/pluginator/extensions/first_ask'
3
+ require 'plugins/something/stats/max'
4
+
5
+ module Something
6
+ module Stats; end
7
+ end
8
+
9
+ class FirstAskTester
10
+ attr_accessor :plugins
11
+ include Pluginator::Extensions::FirstAsk
12
+ end
13
+
14
+ describe Pluginator::Extensions::FirstAsk do
15
+ before do
16
+ @tester = FirstAskTester.new
17
+ @tester.plugins = { "stats" => [
18
+ Something::Stats::Max
19
+ ] }
20
+ end
21
+
22
+ it "finds existing plugin" do
23
+ @tester.first_ask("stats", "handles?", "max").must_equal( Something::Stats::Max )
24
+ end
25
+
26
+ it "finds existing plugin - no exception" do
27
+ @tester.first_ask!("stats", "handles?", "max").must_equal( Something::Stats::Max )
28
+ end
29
+
30
+ it "does not find missing plugin - no exception" do
31
+ @tester.first_ask("stats", "handles?", "min").must_equal( nil )
32
+ end
33
+
34
+ it "finds existing plugin" do
35
+ lambda {
36
+ @tester.first_ask!("stats", "handles?", "min")
37
+ }.must_raise(Pluginator::MissingPlugin)
38
+ end
39
+ end
@@ -0,0 +1,36 @@
1
+ require 'minitest/autorun'
2
+ require 'plugins/pluginator/extensions/matching'
3
+
4
+ class MatchingTester
5
+ attr_accessor :plugins
6
+ include Pluginator::Extensions::Matching
7
+ end
8
+
9
+ describe Pluginator::Extensions::Matching do
10
+ before do
11
+ @tester = MatchingTester.new
12
+ @tester.plugins = { "extensions" => [
13
+ Pluginator::Extensions::PluginsMap,
14
+ Pluginator::Extensions::Conversions,
15
+ Pluginator::Extensions::Matching
16
+ ] }
17
+ end
18
+
19
+ it "finds existing plugin" do
20
+ @tester.filter("extensions", ["plugins_map"]).must_equal( [Pluginator::Extensions::PluginsMap] )
21
+ end
22
+
23
+ it "finds existing plugin - no exception" do
24
+ @tester.filter!("extensions", ["plugins_map"]).must_equal( [Pluginator::Extensions::PluginsMap] )
25
+ end
26
+
27
+ it "does not find missing plugin - no exception" do
28
+ @tester.filter("extensions", ["plugins_map2"]).must_equal( [nil] )
29
+ end
30
+
31
+ it "finds existing plugin" do
32
+ lambda {
33
+ @tester.filter!("extensions", ["plugins_map2"])
34
+ }.must_raise(Pluginator::MissingPlugin)
35
+ end
36
+ end
@@ -0,0 +1,16 @@
1
+ require 'minitest/autorun'
2
+ require 'plugins/pluginator/extensions/plugins_map'
3
+
4
+ class PluginsMapTester
5
+ attr_accessor :plugins
6
+ include Pluginator::Extensions::PluginsMap
7
+ end
8
+
9
+ describe Pluginator::Extensions::PluginsMap do
10
+ it "creates map" do
11
+ tester = PluginsMapTester.new
12
+ tester.plugins = { "extensions" => [Pluginator::Extensions::PluginsMap] }
13
+ expected = { "PluginsMap" => Pluginator::Extensions::PluginsMap }
14
+ tester.plugins_map("extensions").must_equal( expected )
15
+ end
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pluginator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Papis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-09 00:00:00.000000000 Z
11
+ date: 2013-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -50,18 +50,29 @@ files:
50
50
  - Gemfile
51
51
  - README.md
52
52
  - Rakefile
53
- - demo/plugins/pluginator/math/decrease.rb
54
- - demo/plugins/pluginator/math/increase.rb
55
- - demo/plugins/pluginator/stats/max.rb
53
+ - demo/plugins/something/math/decrease.rb
54
+ - demo/plugins/something/math/increase.rb
55
+ - demo/plugins/something/stats/max.rb
56
56
  - lib/pluginator.rb
57
57
  - lib/pluginator/autodetect.rb
58
+ - lib/pluginator/errors.rb
59
+ - lib/pluginator/extendable_autodetect.rb
58
60
  - lib/pluginator/group.rb
59
61
  - lib/pluginator/name_converter.rb
60
62
  - lib/pluginator/version.rb
63
+ - lib/plugins/pluginator/extensions/conversions.rb
64
+ - lib/plugins/pluginator/extensions/first_ask.rb
65
+ - lib/plugins/pluginator/extensions/matching.rb
66
+ - lib/plugins/pluginator/extensions/plugins_map.rb
61
67
  - pluginator.gemspec
62
68
  - test/autodetect_test.rb
69
+ - test/extendable_autodetect_test.rb
63
70
  - test/group_test.rb
64
71
  - test/name_converter_test.rb
72
+ - test/plugins/extensions/conversions_test.rb
73
+ - test/plugins/extensions/first_ask_test.rb
74
+ - test/plugins/extensions/matching_test.rb
75
+ - test/plugins/extensions/plugins_map_test.rb
65
76
  homepage: https://github.com/rvm/pluginator
66
77
  licenses: []
67
78
  metadata: {}
@@ -87,5 +98,11 @@ specification_version: 4
87
98
  summary: Rubygems plugin system using Gem.find_files.
88
99
  test_files:
89
100
  - test/autodetect_test.rb
101
+ - test/extendable_autodetect_test.rb
90
102
  - test/group_test.rb
91
103
  - test/name_converter_test.rb
104
+ - test/plugins/extensions/conversions_test.rb
105
+ - test/plugins/extensions/first_ask_test.rb
106
+ - test/plugins/extensions/matching_test.rb
107
+ - test/plugins/extensions/plugins_map_test.rb
108
+ has_rdoc:
@@ -1,5 +0,0 @@
1
- class Pluginator::Stats::Max
2
- def self.action
3
- 42
4
- end
5
- end