filepath 0.1
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/.gitignore +6 -0
- data/.yardopts +3 -0
- data/README.md +135 -0
- data/Rakefile +26 -0
- data/UNLICENSE +24 -0
- data/lib/filepath.rb +551 -0
- data/lib/filepathlist.rb +74 -0
- data/spec/filepath_spec.rb +440 -0
- data/spec/filepathlist_spec.rb +65 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/tasks.rb +40 -0
- metadata +72 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
# This is free and unencumbered software released into the public domain.
|
2
|
+
# See the `UNLICENSE` file or <http://unlicense.org/> for more details.
|
3
|
+
|
4
|
+
require File.join(File.dirname(__FILE__), 'spec_helper')
|
5
|
+
|
6
|
+
describe FilePathList do
|
7
|
+
describe "#/" do
|
8
|
+
it "adds the same string to all the paths" do
|
9
|
+
list = FilePathList.new(%w{foo faa}) / 'bar'
|
10
|
+
list[0].should eq 'foo/bar'
|
11
|
+
list[1].should eq 'faa/bar'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#*" do
|
16
|
+
describe "calculates the cartesian product between" do
|
17
|
+
it "two FilePathLists" do
|
18
|
+
p1 = %w{a b c}
|
19
|
+
p2 = %w{1 2}
|
20
|
+
list1 = FilePathList.new(p1)
|
21
|
+
list2 = FilePathList.new(p2)
|
22
|
+
|
23
|
+
all_paths = p1.product(p2).map { |x| x.join('/') }
|
24
|
+
|
25
|
+
list = list1 * list2
|
26
|
+
list.should have(6).items
|
27
|
+
list.should include(*all_paths)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "a FilePathList and a string" do
|
31
|
+
p1 = %w{a b c}
|
32
|
+
p2 = "abc"
|
33
|
+
|
34
|
+
list = FilePathList.new(p1) * p2
|
35
|
+
list.should have(3).items
|
36
|
+
list.should include(*%w{a/abc b/abc c/abc})
|
37
|
+
end
|
38
|
+
|
39
|
+
it "a FilePathList and a FilePath" do
|
40
|
+
p1 = %w{a b c}
|
41
|
+
p2 = FilePath.new("x")
|
42
|
+
|
43
|
+
list = FilePathList.new(p1) * p2
|
44
|
+
list.should have(3).items
|
45
|
+
list.should include(*%w{a/x b/x c/x})
|
46
|
+
end
|
47
|
+
|
48
|
+
it "a FilePath and an array of strings" do
|
49
|
+
p1 = %w{a b c}
|
50
|
+
p2 = ["1", "2"]
|
51
|
+
|
52
|
+
list = FilePathList.new(p1) * p2
|
53
|
+
list.should have(6).items
|
54
|
+
list.should include(*%w{a/1 b/1 a/2 b/2 c/1 c/2})
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#include?" do
|
60
|
+
it "says that `a/c` in included in [<a/b>, <a/c>, </a/d>]" do
|
61
|
+
list = FilePathList.new(%w{a/b a/c /a/d})
|
62
|
+
list.should include("a/c")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
LIB_DIR = File.expand_path(File.join(File.dirname(__FILE__), %w[.. lib]))
|
2
|
+
$LOAD_PATH.unshift(LIB_DIR) unless $LOAD_PATH.include?(LIB_DIR)
|
3
|
+
|
4
|
+
require 'filepath'
|
5
|
+
require 'filepathlist'
|
6
|
+
|
7
|
+
RSpec.configure do |config|
|
8
|
+
end
|
9
|
+
|
10
|
+
FIXTURES_DIR = File.join(%w{spec fixtures})
|
data/spec/tasks.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# This is free and unencumbered software released into the public domain.
|
2
|
+
# See the `UNLICENSE` file or <http://unlicense.org/> for more details.
|
3
|
+
|
4
|
+
FIXTURES_DIR = File.join(%w{spec fixtures})
|
5
|
+
FIXTURES_FAKE_ENTRIES = [
|
6
|
+
'd1',
|
7
|
+
['d1', 'd11'],
|
8
|
+
['d1', 'd12'],
|
9
|
+
['d1', 'd13'],
|
10
|
+
['d1', 'f11'],
|
11
|
+
['d1', 'f12'],
|
12
|
+
['d1', 'l11'],
|
13
|
+
'd2',
|
14
|
+
['d2', 'd21'],
|
15
|
+
['d2', 'd22'],
|
16
|
+
'd3',
|
17
|
+
'f1',
|
18
|
+
'dx',
|
19
|
+
].map { |entry| File.join(FIXTURES_DIR, *Array(entry)) }
|
20
|
+
|
21
|
+
CLEAN.concat FIXTURES_FAKE_ENTRIES
|
22
|
+
|
23
|
+
namespace :spec do
|
24
|
+
namespace :fixtures do
|
25
|
+
rule %r{/d[0-9x]+$} do |t|
|
26
|
+
mkdir_p t.name
|
27
|
+
end
|
28
|
+
|
29
|
+
rule %r{/f[0-9]+$} do |t|
|
30
|
+
touch t.name
|
31
|
+
end
|
32
|
+
|
33
|
+
rule %r{/l[0-9]+$} do |t|
|
34
|
+
ln_s '/dev/null', t.name
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Generate fake dirs and files"
|
38
|
+
task :gen => FIXTURES_FAKE_ENTRIES
|
39
|
+
end
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: filepath
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Gioele Barabucci
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-14 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bones
|
16
|
+
requirement: &14096440 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.7.3
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *14096440
|
25
|
+
description: ! '`FilePath` is a class that helps dealing with files, directories and
|
26
|
+
paths in
|
27
|
+
|
28
|
+
general; a modern replacement for the standard Pathname.'
|
29
|
+
email: gioele@svario.it
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- .gitignore
|
35
|
+
- .yardopts
|
36
|
+
- README.md
|
37
|
+
- Rakefile
|
38
|
+
- UNLICENSE
|
39
|
+
- lib/filepath.rb
|
40
|
+
- lib/filepathlist.rb
|
41
|
+
- spec/filepath_spec.rb
|
42
|
+
- spec/filepathlist_spec.rb
|
43
|
+
- spec/spec_helper.rb
|
44
|
+
- spec/tasks.rb
|
45
|
+
homepage: http://github.com/gioele/filepath
|
46
|
+
licenses: []
|
47
|
+
post_install_message:
|
48
|
+
rdoc_options:
|
49
|
+
- --main
|
50
|
+
- README.md
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ! '>='
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
requirements: []
|
66
|
+
rubyforge_project: filepath
|
67
|
+
rubygems_version: 1.8.12
|
68
|
+
signing_key:
|
69
|
+
specification_version: 3
|
70
|
+
summary: ! '`FilePath` is a class that helps dealing with files, directories and paths
|
71
|
+
in general; a modern replacement for the standard Pathname.'
|
72
|
+
test_files: []
|