finder 0.2.1 → 0.3.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.
- data/.ruby +12 -5
- data/HISTORY.md +17 -1
- data/LICENSE.txt +31 -0
- data/README.md +14 -8
- data/demo/00_intro.md +6 -0
- data/demo/{load_path.md → 01_load_path.md} +3 -7
- data/demo/02_feature.md +21 -0
- data/demo/applique/helper.rb +2 -0
- data/lib/finder.rb +15 -5
- data/lib/finder/base.rb +69 -0
- data/lib/finder/find.rb +43 -8
- data/lib/finder/gem.rb +10 -5
- data/lib/finder/roll.rb +47 -9
- data/lib/finder/site.rb +13 -8
- metadata +14 -9
data/.ruby
CHANGED
@@ -29,16 +29,23 @@ repositories:
|
|
29
29
|
scm: git
|
30
30
|
name: upstream
|
31
31
|
resources:
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
- uri: http://rubyworks.github.com/finder
|
33
|
+
label: Website
|
34
|
+
type: home
|
35
|
+
- uri: http://github.com/rubyworks/finder
|
36
|
+
label: Source Code
|
37
|
+
type: code
|
38
|
+
- uri: http://groups.google.com/rubyworks-mailinglist
|
39
|
+
label: Mailing List
|
40
|
+
type: mail
|
41
|
+
categories: []
|
35
42
|
extra: {}
|
36
43
|
load_path:
|
37
44
|
- lib
|
38
45
|
revision: 0
|
39
46
|
name: finder
|
40
47
|
title: Finder
|
41
|
-
version: 0.
|
48
|
+
version: 0.3.0
|
42
49
|
summary: Robust library file locator
|
43
50
|
created: '2009-11-24'
|
44
51
|
description: Finder is a general purpose file finder for Ruby. Finder can search RubyGems,
|
@@ -46,4 +53,4 @@ description: Finder is a general purpose file finder for Ruby. Finder can search
|
|
46
53
|
active or the most current library files. It is especially useful for implementing
|
47
54
|
library-based plugin systems.
|
48
55
|
organization: rubyworks
|
49
|
-
date: '2012-
|
56
|
+
date: '2012-05-22'
|
data/HISTORY.md
CHANGED
@@ -1,9 +1,25 @@
|
|
1
1
|
# RELEASE HISTORY
|
2
2
|
|
3
|
+
## 0.3.0 / 2012-05-22
|
4
|
+
|
5
|
+
This is a significant release in that the behavior of `Find.load_path` has
|
6
|
+
changed to return absolute paths by default. To get relative paths set
|
7
|
+
the `:relative` options to `true`. However, if you are doing that you
|
8
|
+
likely want to use the new `Find.feature` method which specifically searches
|
9
|
+
for requirable files and returns relative paths by default.
|
10
|
+
|
11
|
+
Changes:
|
12
|
+
|
13
|
+
* Find.load_path now returns absolute paths by default.
|
14
|
+
* Adds option `:relative=>true` to get relative paths.
|
15
|
+
* Adds new `Find.feature` for finding requirable files.
|
16
|
+
* New Base module provides shared methods to all systems.
|
17
|
+
|
18
|
+
|
3
19
|
## 0.2.1 / 2012-03-15
|
4
20
|
|
5
21
|
Fix Gem finder so that is places spec in Array, and catches
|
6
|
-
error
|
22
|
+
error if gem is not found.
|
7
23
|
|
8
24
|
Changes:
|
9
25
|
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
Finder
|
2
|
+
|
3
|
+
Copyright (c) 2012 Rubyworks. All rights reserved.
|
4
|
+
|
5
|
+
License (spdx) BSD-2-Clause
|
6
|
+
|
7
|
+
Redistribution and use in source and binary forms, with or without
|
8
|
+
modification, are permitted provided that the following conditions are met:
|
9
|
+
|
10
|
+
1. Redistributions of source code must retain the above copyright notice,
|
11
|
+
this list of conditions and the following disclaimer.
|
12
|
+
|
13
|
+
2. Redistributions in binary form must reproduce the above copyright
|
14
|
+
notice, this list of conditions and the following disclaimer in the
|
15
|
+
documentation and/or other materials provided with the distribution.
|
16
|
+
|
17
|
+
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
18
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
20
|
+
COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
21
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
22
|
+
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
24
|
+
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
25
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
26
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
|
28
|
+
-----
|
29
|
+
* http://rubyworks.github.com/finder
|
30
|
+
* http://spdx.com/licenses/BSD-2_clause
|
31
|
+
|
data/README.md
CHANGED
@@ -19,21 +19,27 @@ $LOAD_PATH manually.
|
|
19
19
|
|
20
20
|
## INSTRUCTION
|
21
21
|
|
22
|
-
To find
|
23
|
-
and it will return all matches found within current
|
24
|
-
of a library.
|
22
|
+
To find paths, simply provide a glob to the appropriate Finder function,
|
23
|
+
and it will return all matches found within current or most recent
|
24
|
+
versions of a library.
|
25
25
|
|
26
|
-
For example, a common use case
|
27
|
-
the
|
26
|
+
For example, a common use case for plug-in enabled application is to
|
27
|
+
require all the files found in library load paths:
|
28
28
|
|
29
29
|
require 'finder'
|
30
30
|
|
31
|
-
Find.
|
31
|
+
Find.feature('myapp/*').each do |file|
|
32
32
|
require(file)
|
33
33
|
end
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
This is basically equivalent to:
|
36
|
+
|
37
|
+
Find.load_path('myapp/*.rb', :relative=>true).each do |file|
|
38
|
+
require(file)
|
39
|
+
end
|
40
|
+
|
41
|
+
Alternately you might load files only as needed. For instance, if a
|
42
|
+
command-line option calls for it.
|
37
43
|
|
38
44
|
|
39
45
|
## COPYRIGHTS
|
data/demo/00_intro.md
ADDED
@@ -1,13 +1,9 @@
|
|
1
|
-
#
|
1
|
+
# Load Path Lookup
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
require 'finder'
|
6
|
-
|
7
|
-
Now use +Find.load+path+ to seach for a file pattern of our
|
3
|
+
Use +Find.load_path+ to search for a file pattern of our
|
8
4
|
choosing within library load paths.
|
9
5
|
|
10
|
-
files = Find.load_path('example.rb')
|
6
|
+
files = Find.load_path('example.rb', :relative=>true)
|
11
7
|
file = files.first
|
12
8
|
|
13
9
|
The +find+ method returns path name relative to the load path.
|
data/demo/02_feature.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# Feature Lookup
|
2
|
+
|
3
|
+
We can use +Find.feature+ to seach for requireable files from within
|
4
|
+
library load paths. The `feature` method returns relatvie paths
|
5
|
+
by default and automatically handles extensions --just like `require`.
|
6
|
+
|
7
|
+
files = Find.feature('example')
|
8
|
+
file = files.first
|
9
|
+
|
10
|
+
The +find+ method returns path name relative to the load path.
|
11
|
+
|
12
|
+
file.assert == 'example.rb'
|
13
|
+
|
14
|
+
We can use the `realtive` or `aboslute` options to get the full path.
|
15
|
+
|
16
|
+
files = Find.feature('example', :absolute=>true)
|
17
|
+
file = files.first
|
18
|
+
|
19
|
+
File.expand_path(file).assert == file
|
20
|
+
file.assert.end_with?('example.rb')
|
21
|
+
|
data/demo/applique/helper.rb
CHANGED
data/lib/finder.rb
CHANGED
@@ -3,26 +3,36 @@ require 'finder/find'
|
|
3
3
|
module Finder
|
4
4
|
|
5
5
|
# Current version.
|
6
|
-
VERSION = '0.
|
6
|
+
VERSION = '0.2.0'
|
7
7
|
|
8
8
|
# Clean module that can be included elsewhere, to proved #path, #load_path
|
9
9
|
# and #data_path methods without including the Gem, Roll, and Site constants.
|
10
|
+
#
|
10
11
|
module Findable
|
11
12
|
def path(match, options={})
|
12
13
|
Find.path(match, options)
|
13
14
|
end
|
14
15
|
|
16
|
+
def data_path(match, options={})
|
17
|
+
Find.data_path(match, options)
|
18
|
+
end
|
19
|
+
|
15
20
|
def load_path(match, options={})
|
16
21
|
Find.load_path(match, options)
|
17
22
|
end
|
18
23
|
|
19
|
-
def
|
20
|
-
Find.
|
24
|
+
def require_path(match, options={})
|
25
|
+
Find.require_path(match, options)
|
26
|
+
end
|
27
|
+
|
28
|
+
def feature(match, options={})
|
29
|
+
Find.feature(match, options)
|
21
30
|
end
|
22
31
|
end
|
23
32
|
|
24
33
|
end
|
25
34
|
|
26
|
-
|
27
|
-
|
35
|
+
module Find
|
36
|
+
extend Finder::Find
|
37
|
+
end
|
28
38
|
|
data/lib/finder/base.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
module Finder
|
2
|
+
module Find
|
3
|
+
|
4
|
+
# Base module provides helper methods to other
|
5
|
+
# finders.
|
6
|
+
#
|
7
|
+
module Base
|
8
|
+
|
9
|
+
#
|
10
|
+
# When included into a module, that module is atuomatically
|
11
|
+
# self extended.
|
12
|
+
#
|
13
|
+
def self.included(mod)
|
14
|
+
mod.extend(mod)
|
15
|
+
end
|
16
|
+
|
17
|
+
##
|
18
|
+
## Like #load_path but searches only for requirable files.
|
19
|
+
##
|
20
|
+
## NOTE: This may be somewhat limited at the moment until we
|
21
|
+
## figure out how best to determine all possible extensions.
|
22
|
+
##
|
23
|
+
#def require_path(match, options={})
|
24
|
+
# match = append_extensions(match, options)
|
25
|
+
# load_path(match, options)
|
26
|
+
#end
|
27
|
+
|
28
|
+
#
|
29
|
+
# Like #load_path but searches only for requirable feature files
|
30
|
+
# and returns relative paths by default.
|
31
|
+
#
|
32
|
+
def feature(match, options={})
|
33
|
+
options[:relative] = true unless options.key?(:relative) or options.key?(:absolute)
|
34
|
+
match = append_extensions(match, options)
|
35
|
+
load_path(match, options)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
#
|
41
|
+
# Validate and normalize load options.
|
42
|
+
#
|
43
|
+
# @param [Hash] options
|
44
|
+
#
|
45
|
+
def valid_load_options(options)
|
46
|
+
if options.key?(:relative) && options.key?(:absolute)
|
47
|
+
raise ArgumentError, "must be either relative or absolute" unless options[:relative] ^ options[:absolute]
|
48
|
+
end
|
49
|
+
|
50
|
+
options[:relative] = false if options[:absolute]
|
51
|
+
|
52
|
+
options
|
53
|
+
end
|
54
|
+
|
55
|
+
#
|
56
|
+
# Append requirable extensions to match glob.
|
57
|
+
#
|
58
|
+
#
|
59
|
+
def append_extensions(match, options={})
|
60
|
+
unless Find::EXTENSIONS.include?(File.extname(match))
|
61
|
+
match = match + '{' + Find::EXTENSIONS.join(',') + '}'
|
62
|
+
end
|
63
|
+
match
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
data/lib/finder/find.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rbconfig'
|
2
|
+
require 'finder/base'
|
1
3
|
require 'finder/roll'
|
2
4
|
require 'finder/gem'
|
3
5
|
require 'finder/site'
|
@@ -9,6 +11,9 @@ module Finder
|
|
9
11
|
module Find
|
10
12
|
extend self
|
11
13
|
|
14
|
+
# TODO: expand on extensions
|
15
|
+
EXTENSIONS = %w{.rb .rbx .so}
|
16
|
+
|
12
17
|
# Find matching paths, searching through Rolled libraries, Gem-installed libraries
|
13
18
|
# and site locations in `$LOAD_PATH` and `RbConfig::CONFIG['datadir']`.
|
14
19
|
#
|
@@ -28,12 +33,27 @@ module Finder
|
|
28
33
|
|
29
34
|
# Shortcut for #path.
|
30
35
|
#
|
31
|
-
#
|
36
|
+
# Find['lib/foo/*']
|
32
37
|
#
|
33
38
|
alias_method :[], :path
|
34
39
|
|
35
|
-
# Searching through
|
36
|
-
#
|
40
|
+
# Searching through all systems for matching data paths.
|
41
|
+
#
|
42
|
+
# @param [String] match
|
43
|
+
# File glob to match against.
|
44
|
+
#
|
45
|
+
# @example
|
46
|
+
# Find.data_path('bar/*')
|
47
|
+
#
|
48
|
+
def data_path(match, options={})
|
49
|
+
found = []
|
50
|
+
systems.each do |system|
|
51
|
+
found.concat system.data_path(match, options)
|
52
|
+
end
|
53
|
+
found.uniq
|
54
|
+
end
|
55
|
+
|
56
|
+
# Searching through all systems for matching load paths.
|
37
57
|
#
|
38
58
|
# @param [String] match
|
39
59
|
# File glob to match against.
|
@@ -49,19 +69,34 @@ module Finder
|
|
49
69
|
found.uniq
|
50
70
|
end
|
51
71
|
|
52
|
-
|
53
|
-
|
72
|
+
## Searching through all systems for matching load paths.
|
73
|
+
##
|
74
|
+
## @param [String] match
|
75
|
+
## File glob to match against.
|
76
|
+
##
|
77
|
+
## @example
|
78
|
+
## Find.require_path('bar/*')
|
79
|
+
##
|
80
|
+
#def require_path(match, options={})
|
81
|
+
# found = []
|
82
|
+
# systems.each do |system|
|
83
|
+
# found.concat system.require_path(match, options)
|
84
|
+
# end
|
85
|
+
# found.uniq
|
86
|
+
#end
|
87
|
+
|
88
|
+
# Searching through all systems for matching requirable feature files.
|
54
89
|
#
|
55
90
|
# @param [String] match
|
56
91
|
# File glob to match against.
|
57
92
|
#
|
58
93
|
# @example
|
59
|
-
# Find.
|
94
|
+
# Find.feature('ostruct')
|
60
95
|
#
|
61
|
-
def
|
96
|
+
def feature(match, options={})
|
62
97
|
found = []
|
63
98
|
systems.each do |system|
|
64
|
-
found.concat system.
|
99
|
+
found.concat system.feature(match, options)
|
65
100
|
end
|
66
101
|
found.uniq
|
67
102
|
end
|
data/lib/finder/gem.rb
CHANGED
@@ -4,7 +4,7 @@ module Finder
|
|
4
4
|
# RubyGems finder methods.
|
5
5
|
#
|
6
6
|
module Gem
|
7
|
-
|
7
|
+
include Base
|
8
8
|
|
9
9
|
#
|
10
10
|
# Search gems.
|
@@ -57,6 +57,8 @@ module Finder
|
|
57
57
|
# @return [Array<String>] List of paths.
|
58
58
|
#
|
59
59
|
def load_path(match, options={})
|
60
|
+
options = valid_load_options(options)
|
61
|
+
|
60
62
|
specs = specifications(options)
|
61
63
|
|
62
64
|
matches = []
|
@@ -67,7 +69,7 @@ module Finder
|
|
67
69
|
list = Dir[glob] #.map{ |f| f.untaint }
|
68
70
|
list = list.map{ |d| d.chomp('/') }
|
69
71
|
# return relative paths unless absolute flag
|
70
|
-
if not options[:absolute]
|
72
|
+
if options[:relative] #not options[:absolute]
|
71
73
|
# the extra '' in File.join adds a '/' to the end of the path
|
72
74
|
list = list.map{ |f| f.sub(File.join(spec.full_gem_path, path, ''), '') }
|
73
75
|
end
|
@@ -108,17 +110,20 @@ module Finder
|
|
108
110
|
|
109
111
|
private
|
110
112
|
|
113
|
+
#
|
111
114
|
def specifications(options)
|
112
115
|
name = options[:from] || options[:gem]
|
113
116
|
if name
|
117
|
+
criteria = [options[:version]].compact
|
114
118
|
begin
|
115
|
-
specs = [::Gem::Specification.find_by_name(name.to_s)]
|
119
|
+
specs = [::Gem::Specification.find_by_name(name.to_s, *criteria)]
|
116
120
|
rescue ::Gem::LoadError
|
117
|
-
|
121
|
+
specs = []
|
118
122
|
end
|
119
123
|
else
|
120
|
-
::Gem::Specification.current_specs
|
124
|
+
specs = ::Gem::Specification.current_specs
|
121
125
|
end
|
126
|
+
return specs
|
122
127
|
end
|
123
128
|
|
124
129
|
end
|
data/lib/finder/roll.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
module Finder
|
2
2
|
module Find
|
3
3
|
|
4
|
-
# Library
|
4
|
+
# Finder methods for `Library` system.
|
5
5
|
#
|
6
6
|
module Roll
|
7
|
-
|
7
|
+
include Base
|
8
8
|
|
9
9
|
#
|
10
10
|
# Search for current or latest files within a library.
|
@@ -26,10 +26,18 @@ module Finder
|
|
26
26
|
ledger = ::Library.ledger
|
27
27
|
end
|
28
28
|
|
29
|
-
|
29
|
+
criteria = [options[:version]].compact
|
30
|
+
matches = []
|
30
31
|
|
31
32
|
ledger.each do |name, lib|
|
32
|
-
|
33
|
+
if Array === lib
|
34
|
+
lib = lib.select do |l|
|
35
|
+
criteria.all?{ |c| l.version.satisfy?(c) }
|
36
|
+
end
|
37
|
+
lib = lib.sort.first
|
38
|
+
else
|
39
|
+
next unless criteria.all?{ |c| l.version.satisfy?(c) }
|
40
|
+
end
|
33
41
|
find = File.join(lib.location, match)
|
34
42
|
list = Dir.glob(find)
|
35
43
|
list = list.map{ |d| d.chomp('/') }
|
@@ -62,24 +70,43 @@ module Finder
|
|
62
70
|
#
|
63
71
|
def load_path(match, options={})
|
64
72
|
return [] unless defined?(::Library)
|
73
|
+
options = valid_load_options(options)
|
65
74
|
|
66
75
|
if from = options[:from]
|
67
|
-
|
76
|
+
libs = ::Library.ledger[from.to_s]
|
77
|
+
if libs
|
78
|
+
case libs
|
79
|
+
when ::Array
|
80
|
+
ledger = libs.empty? ? {} : {from.to_s => libs}
|
81
|
+
else
|
82
|
+
ledger = {from.to_s => libs}
|
83
|
+
end
|
84
|
+
else
|
85
|
+
ledger = {}
|
86
|
+
end
|
68
87
|
else
|
69
88
|
ledger = ::Library.ledger
|
70
89
|
end
|
71
90
|
|
91
|
+
criteria = [options[:version]].compact
|
72
92
|
matches = []
|
73
93
|
|
74
94
|
ledger.each do |name, lib|
|
75
95
|
list = []
|
76
|
-
|
96
|
+
if Array===lib
|
97
|
+
lib = lib.select do |l|
|
98
|
+
criteria.all?{ |c| l.version.satisfy?(c) }
|
99
|
+
end
|
100
|
+
lib = lib.sort.first
|
101
|
+
else
|
102
|
+
next unless criteria.all?{ |c| lib.version.satisfy?(c) }
|
103
|
+
end
|
77
104
|
lib.loadpath.each do |path|
|
78
105
|
find = File.join(lib.location, path, match)
|
79
106
|
list = Dir.glob(find)
|
80
107
|
list = list.map{ |d| d.chomp('/') }
|
81
|
-
# return relative load path unless
|
82
|
-
if
|
108
|
+
# return relative load path unless absolute flag
|
109
|
+
if options[:relative]
|
83
110
|
# the extra '' in File.join adds a '/' to the end of the path
|
84
111
|
list = list.map{ |f| f.sub(File.join(lib.location, path, ''), '') }
|
85
112
|
end
|
@@ -100,6 +127,9 @@ module Finder
|
|
100
127
|
# ::Library.find_files(match)
|
101
128
|
#end
|
102
129
|
|
130
|
+
#
|
131
|
+
# Search project's data paths.
|
132
|
+
#
|
103
133
|
def data_path(match, options={})
|
104
134
|
return [] unless defined?(::Library)
|
105
135
|
|
@@ -109,11 +139,19 @@ module Finder
|
|
109
139
|
ledger = ::Library.ledger
|
110
140
|
end
|
111
141
|
|
142
|
+
criteria = [options[:version]].compact
|
112
143
|
matches = []
|
113
144
|
|
114
145
|
ledger.each do |name, lib|
|
115
146
|
list = []
|
116
|
-
|
147
|
+
if Array === lib
|
148
|
+
lib = lib.select do |l|
|
149
|
+
criteria.all?{ |c| l.version.satisfy?(c) }
|
150
|
+
end
|
151
|
+
lib = lib.sort.first
|
152
|
+
else
|
153
|
+
next unless criteria.all?{ |c| l.version.satisfy?(c) }
|
154
|
+
end
|
117
155
|
find = File.join(lib.location, 'data', match)
|
118
156
|
list = Dir.glob(find)
|
119
157
|
list = list.map{ |d| d.chomp('/') }
|
data/lib/finder/site.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
require 'rbconfig'
|
2
|
-
|
3
1
|
module Finder
|
4
2
|
module Find
|
5
3
|
|
6
4
|
# System location finder methods.
|
7
5
|
#
|
8
6
|
module Site
|
9
|
-
|
7
|
+
include Base
|
10
8
|
|
9
|
+
#
|
10
|
+
# System's data path.
|
11
|
+
#
|
11
12
|
DATA_PATH = RbConfig::CONFIG['datadir']
|
12
13
|
|
13
14
|
# TODO: Might this support `:from` option via
|
@@ -23,7 +24,7 @@ module Finder
|
|
23
24
|
# Search options.
|
24
25
|
#
|
25
26
|
# @return [Array<String>] List of paths.
|
26
|
-
#
|
27
|
+
#
|
27
28
|
def path(match, options={})
|
28
29
|
return [] if options[:from]
|
29
30
|
|
@@ -37,6 +38,7 @@ module Finder
|
|
37
38
|
found
|
38
39
|
end
|
39
40
|
|
41
|
+
#
|
40
42
|
# Search load path for matching patterns.
|
41
43
|
#
|
42
44
|
# @param [String] match
|
@@ -44,7 +46,7 @@ module Finder
|
|
44
46
|
#
|
45
47
|
# @param [Hash] options
|
46
48
|
# Search options.
|
47
|
-
#
|
49
|
+
#
|
48
50
|
# @option options [true,false] :absolute
|
49
51
|
# Return absolute paths instead of relative to load path.
|
50
52
|
#
|
@@ -53,12 +55,14 @@ module Finder
|
|
53
55
|
def load_path(match, options={})
|
54
56
|
return [] if options[:from]
|
55
57
|
|
58
|
+
options = valid_load_options(options)
|
59
|
+
|
56
60
|
found = []
|
57
|
-
$LOAD_PATH.uniq.
|
61
|
+
$LOAD_PATH.uniq.each do |path|
|
58
62
|
list = Dir.glob(File.join(File.expand_path(path), match))
|
59
63
|
list = list.map{ |d| d.chomp('/') }
|
60
|
-
# return
|
61
|
-
if
|
64
|
+
# return absolute path unless relative flag
|
65
|
+
if options[:relative]
|
62
66
|
# the extra '' in File.join adds a '/' to the end of the path
|
63
67
|
list = list.map{ |f| f.sub(File.join(path, ''), '') }
|
64
68
|
end
|
@@ -67,6 +71,7 @@ module Finder
|
|
67
71
|
found
|
68
72
|
end
|
69
73
|
|
74
|
+
#
|
70
75
|
# Search data path.
|
71
76
|
#
|
72
77
|
def data_path(match, options={})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: finder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: detroit
|
16
|
-
requirement: &
|
16
|
+
requirement: &28070020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *28070020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: qed
|
27
|
-
requirement: &
|
27
|
+
requirement: &28069460 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *28069460
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: ae
|
38
|
-
requirement: &
|
38
|
+
requirement: &28068940 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *28068940
|
47
47
|
description: Finder is a general purpose file finder for Ruby. Finder can search RubyGems,
|
48
48
|
Roll libraries and Ruby's standard $LOAD_PATH and system data directory for the
|
49
49
|
active or the most current library files. It is especially useful for implementing
|
@@ -53,20 +53,25 @@ email:
|
|
53
53
|
executables: []
|
54
54
|
extensions: []
|
55
55
|
extra_rdoc_files:
|
56
|
+
- LICENSE.txt
|
56
57
|
- HISTORY.md
|
57
58
|
- README.md
|
58
59
|
files:
|
59
60
|
- .ruby
|
60
61
|
- .yardopts
|
62
|
+
- demo/00_intro.md
|
63
|
+
- demo/01_load_path.md
|
64
|
+
- demo/02_feature.md
|
61
65
|
- demo/applique/ae.rb
|
62
66
|
- demo/applique/helper.rb
|
63
67
|
- demo/fixtures/example.rb
|
64
|
-
-
|
68
|
+
- lib/finder/base.rb
|
65
69
|
- lib/finder/find.rb
|
66
70
|
- lib/finder/gem.rb
|
67
71
|
- lib/finder/roll.rb
|
68
72
|
- lib/finder/site.rb
|
69
73
|
- lib/finder.rb
|
74
|
+
- LICENSE.txt
|
70
75
|
- HISTORY.md
|
71
76
|
- README.md
|
72
77
|
homepage: http://rubyworks.github.com/finder
|