torquebox-vfs 1.0.0.CR2-java → 1.0.0-java
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/torquebox-vfs.jar +0 -0
- data/lib/torquebox-vfs.rb +2 -2
- data/lib/torquebox/vfs/ext/dir.rb +3 -2
- data/lib/torquebox/vfs/glob_filter.rb +11 -3
- data/lib/torquebox/vfs/glob_translator.rb +11 -4
- data/spec/dir_spec.rb +27 -0
- metadata +5 -5
data/lib/torquebox-vfs.jar
CHANGED
Binary file
|
data/lib/torquebox-vfs.rb
CHANGED
@@ -121,7 +121,6 @@ class Dir
|
|
121
121
|
|
122
122
|
#str_pattern = "#{pattern}"
|
123
123
|
str_pattern = pattern.to_str
|
124
|
-
#puts "glob(#{str_pattern})"
|
125
124
|
|
126
125
|
segments = str_pattern.split( '/' )
|
127
126
|
|
@@ -156,6 +155,7 @@ class Dir
|
|
156
155
|
|
157
156
|
matcher_segments = segments - base_segments
|
158
157
|
matcher = matcher_segments.join( '/' )
|
158
|
+
dirs_only = (str_pattern[-1,1] == '/')
|
159
159
|
#puts "matcher [#{matcher}]"
|
160
160
|
|
161
161
|
begin
|
@@ -173,7 +173,8 @@ class Dir
|
|
173
173
|
child_path = "" if child_path == "/"
|
174
174
|
#puts "child_path=#{child_path}"
|
175
175
|
#puts "base=#{base}"
|
176
|
-
filter
|
176
|
+
# puts "preparing glob filter for path #{child_path} and match #{matcher}"
|
177
|
+
filter = TorqueBox::VFS::GlobFilter.new( child_path, matcher, dirs_only )
|
177
178
|
#puts "filter is #{filter}"
|
178
179
|
paths = starting_point.getChildrenRecursively( filter ).collect{|e|
|
179
180
|
#path_name = e.path_name
|
@@ -23,7 +23,7 @@ module TorqueBox
|
|
23
23
|
class GlobFilter
|
24
24
|
include Java::org.jboss.vfs.VirtualFileFilter
|
25
25
|
|
26
|
-
def initialize(child_path, glob)
|
26
|
+
def initialize(child_path, glob, dirs_only)
|
27
27
|
regexp_str = GlobTranslator.translate( glob )
|
28
28
|
if ( child_path && child_path != '' )
|
29
29
|
if ( child_path[-1,1] == '/' )
|
@@ -34,11 +34,19 @@ module TorqueBox
|
|
34
34
|
else
|
35
35
|
regexp_str = "^#{regexp_str}$"
|
36
36
|
end
|
37
|
-
@regexp = Regexp.new( regexp_str )
|
37
|
+
@regexp = Regexp.new( regexp_str )
|
38
|
+
@dirs_only = dirs_only
|
39
|
+
# puts "glob #{glob} ==> #{@regexp}"
|
38
40
|
end
|
39
41
|
|
40
42
|
def accepts(file)
|
41
|
-
!!( file.path_name =~ @regexp )
|
43
|
+
matched = !!( file.path_name =~ @regexp )
|
44
|
+
matched &&= file.directory? if @dirs_only
|
45
|
+
matched
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_s
|
49
|
+
"#{@regexp}, dirs_only: #{@dirs_only}"
|
42
50
|
end
|
43
51
|
end
|
44
52
|
end
|
@@ -31,7 +31,7 @@ module TorqueBox
|
|
31
31
|
def self.translate(glob_str)
|
32
32
|
translator = GlobTranslator.new( glob_str )
|
33
33
|
regexp_str = translator.glob()
|
34
|
-
#puts "#{glob_str} ==> #{regexp_str}"
|
34
|
+
# puts "#{glob_str} ==> #{regexp_str}"
|
35
35
|
regexp_str
|
36
36
|
end
|
37
37
|
|
@@ -62,7 +62,7 @@ module TorqueBox
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
65
|
-
result
|
65
|
+
result
|
66
66
|
end
|
67
67
|
|
68
68
|
def splat()
|
@@ -71,10 +71,12 @@ module TorqueBox
|
|
71
71
|
result = double_splat()
|
72
72
|
else
|
73
73
|
if ( cur() == 0 || lb() == '/' )
|
74
|
-
result = '[
|
74
|
+
result = '(?<=/|^)[^.][^/]*'
|
75
|
+
# result = '[^/.][^/]*'
|
75
76
|
else
|
76
77
|
result = '[^/]+'
|
77
78
|
end
|
79
|
+
|
78
80
|
consume('*')
|
79
81
|
end
|
80
82
|
#puts "exit splat()"
|
@@ -83,7 +85,12 @@ module TorqueBox
|
|
83
85
|
|
84
86
|
def double_splat()
|
85
87
|
#puts "enter double_splat()"
|
86
|
-
|
88
|
+
if la(2) == '/'
|
89
|
+
# result = '([^.][^/]+/){0,}'
|
90
|
+
result = '([^/.][^/]*/){0,}'
|
91
|
+
else
|
92
|
+
result = '([^/.][^/]*)'
|
93
|
+
end
|
87
94
|
consume('*')
|
88
95
|
consume('*')
|
89
96
|
consume('/') if ( la() == '/' )
|
data/spec/dir_spec.rb
CHANGED
@@ -42,7 +42,25 @@ describe "Dir extensions for VFS" do
|
|
42
42
|
when :vfs
|
43
43
|
prefix = test_data_base_path( :vfs )
|
44
44
|
end
|
45
|
+
|
46
|
+
it "should ignore dotdirs by default" do
|
47
|
+
items = Dir.glob( "#{prefix}/**/*" )
|
48
|
+
items.should_not be_empty
|
49
|
+
items.size.should eql(32)
|
50
|
+
end
|
45
51
|
|
52
|
+
it "should handle trailing double splats" do
|
53
|
+
items = Dir.glob( "#{prefix}/**" )
|
54
|
+
items.should_not be_empty
|
55
|
+
items.size.should eql(5)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should handle Rails 2 glob-related arglebargle" do
|
59
|
+
items = Dir.glob( "#{prefix}/**/*/**" )
|
60
|
+
items.should_not be_empty
|
61
|
+
items.size.should eql(27)
|
62
|
+
end
|
63
|
+
|
46
64
|
it "should ignore dotfiles by default" do
|
47
65
|
glob_pattern = "#{prefix}/dotfiles/*"
|
48
66
|
items = Dir.glob( glob_pattern )
|
@@ -216,6 +234,15 @@ describe "Dir extensions for VFS" do
|
|
216
234
|
items.should include( "#{prefix}/home/todd/index.html.haml" )
|
217
235
|
end
|
218
236
|
|
237
|
+
it "should match only directories if trailing slash" do
|
238
|
+
items = Dir.glob( "#{prefix}/*/" )
|
239
|
+
items.should_not be_empty
|
240
|
+
items.size.should eql(3)
|
241
|
+
items.should include( "#{prefix}/dotfiles" )
|
242
|
+
items.should include( "#{prefix}/home" )
|
243
|
+
items.should include( "#{prefix}/sound of music" )
|
244
|
+
end
|
245
|
+
|
219
246
|
it "should allow globbing of multiple patterns via []" do
|
220
247
|
items = []
|
221
248
|
lambda {
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: torquebox-vfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 1.0.0
|
4
|
+
prerelease:
|
5
|
+
version: 1.0.0
|
6
6
|
platform: java
|
7
7
|
authors: []
|
8
8
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-29 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -100,9 +100,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
100
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
101
|
none: false
|
102
102
|
requirements:
|
103
|
-
- - "
|
103
|
+
- - ">="
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version:
|
105
|
+
version: "0"
|
106
106
|
requirements: []
|
107
107
|
|
108
108
|
rubyforge_project:
|