pairtree 0.0.0 → 0.1.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/.gitignore +44 -0
- data/Gemfile +2 -11
- data/LICENSE.txt +12 -20
- data/README.textile +37 -0
- data/Rakefile +20 -45
- data/lib/pairtree.rb +72 -1
- data/lib/pairtree/identifier.rb +13 -0
- data/lib/pairtree/obj.rb +47 -0
- data/lib/pairtree/path.rb +41 -2
- data/lib/pairtree/root.rb +72 -26
- data/lib/tasks/rdoc.rake +32 -0
- data/pairtree.gemspec +24 -0
- data/spec/pairtree/pairtree_encoding_spec.rb +87 -0
- data/spec/pairtree/pairtree_obj_spec.rb +69 -0
- data/spec/pairtree/pairtree_path_spec.rb +35 -0
- data/spec/pairtree/pairtree_root_spec.rb +63 -0
- data/spec/pairtree/pairtree_spec.rb +69 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/test_data/fixtures/pairtree_root_spec/pairtree_prefix +1 -0
- data/spec/test_data/fixtures/pairtree_root_spec/pairtree_root/ab/c1/23/de/f/abc123def/content.xml +1 -0
- data/spec/test_data/fixtures/pairtree_root_spec/pairtree_version0_1 +1 -0
- metadata +82 -100
- data/README.rdoc +0 -19
- data/VERSION +0 -1
- data/lib/pairtree/client.rb +0 -18
- data/test/helper.rb +0 -18
- data/test/test_pairtree.rb +0 -91
data/lib/tasks/rdoc.rake
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
desc "Generate RDoc"
|
2
|
+
task :doc => ['doc:generate']
|
3
|
+
|
4
|
+
namespace :doc do
|
5
|
+
project_root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
|
6
|
+
doc_destination = File.join(project_root, 'rdoc')
|
7
|
+
|
8
|
+
begin
|
9
|
+
require 'yard'
|
10
|
+
require 'yard/rake/yardoc_task'
|
11
|
+
|
12
|
+
YARD::Rake::YardocTask.new(:generate) do |yt|
|
13
|
+
yt.files = Dir.glob(File.join(project_root, 'lib', '*.rb')) +
|
14
|
+
Dir.glob(File.join(project_root, 'lib', '**', '*.rb')) +
|
15
|
+
[ File.join(project_root, 'README.rdoc') ] +
|
16
|
+
[ File.join(project_root, 'LICENSE') ]
|
17
|
+
|
18
|
+
yt.options = ['--output-dir', doc_destination, '--readme', 'README.rdoc']
|
19
|
+
end
|
20
|
+
rescue LoadError
|
21
|
+
desc "Generate YARD Documentation"
|
22
|
+
task :generate do
|
23
|
+
abort "Please install the YARD gem to generate rdoc."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Remove generated documenation"
|
28
|
+
task :clean do
|
29
|
+
rm_r doc_destination if File.exists?(doc_destination)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
data/pairtree.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = %q{pairtree}
|
3
|
+
s.summary = %q{Ruby Pairtree implementation}
|
4
|
+
s.version = "0.1.0"
|
5
|
+
s.homepage = %q{http://github.com/microservices/pairtree}
|
6
|
+
s.licenses = ["Apache2"]
|
7
|
+
s.rubygems_version = %q{1.3.7}
|
8
|
+
|
9
|
+
s.authors = ["Chris Beer"]
|
10
|
+
s.date = %q{2010-12-23}
|
11
|
+
s.email = %q{chris@cbeer.info}
|
12
|
+
s.files = `git ls-files`.split("\n")
|
13
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
|
+
s.extra_rdoc_files = ["LICENSE.txt", "README.textile"]
|
15
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
|
18
|
+
|
19
|
+
s.add_development_dependency "bundler", "~> 1.0.0"
|
20
|
+
s.add_development_dependency "rspec", ">= 2.0"
|
21
|
+
s.add_development_dependency "yard"
|
22
|
+
s.add_development_dependency "RedCloth"
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
require 'pairtree'
|
3
|
+
|
4
|
+
describe "Pairtree encoding" do
|
5
|
+
|
6
|
+
def roundtrip(id, expected_encoded=nil, expected_path=nil)
|
7
|
+
encoded = Pairtree::Identifier.encode(id)
|
8
|
+
unless expected_encoded.nil?
|
9
|
+
encoded.should == expected_encoded
|
10
|
+
end
|
11
|
+
unless expected_path.nil?
|
12
|
+
path = Pairtree::Path.id_to_path(id)
|
13
|
+
path.should == expected_path
|
14
|
+
end
|
15
|
+
Pairtree::Identifier.decode(encoded).should == id
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should handle a" do
|
19
|
+
roundtrip('a', 'a', 'a/a')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should handle ab" do
|
23
|
+
roundtrip('ab', 'ab', 'ab/ab')
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should handle abc" do
|
27
|
+
roundtrip('abc', 'abc', 'ab/c/abc')
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should handle abcd" do
|
31
|
+
roundtrip('abcd', 'abcd', 'ab/cd/abcd')
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should handle space" do
|
35
|
+
roundtrip('hello world', 'hello^20world', 'he/ll/o^/20/wo/rl/d/hello^20world')
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should handle slash" do
|
39
|
+
roundtrip("/","=",'=/=')
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should handle urn" do
|
43
|
+
roundtrip('http://n2t.info/urn:nbn:se:kb:repos-1','http+==n2t,info=urn+nbn+se+kb+repos-1','ht/tp/+=/=n/2t/,i/nf/o=/ur/n+/nb/n+/se/+k/b+/re/po/s-/1/http+==n2t,info=urn+nbn+se+kb+repos-1')
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should handle wtf" do
|
47
|
+
roundtrip('what-the-*@?#!^!?', "what-the-^2a@^3f#!^5e!^3f", "wh/at/-t/he/-^/2a/@^/3f/#!/^5/e!/^3/f/what-the-^2a@^3f#!^5e!^3f")
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should handle special characters" do
|
51
|
+
roundtrip('\\"*+,<=>?^|', "^5c^22^2a^2b^2c^3c^3d^3e^3f^5e^7c")
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should roundtrip hardcore Unicode" do
|
55
|
+
roundtrip(%{
|
56
|
+
1. Euro Symbol: €.
|
57
|
+
2. Greek: Μπορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα.
|
58
|
+
3. Íslenska / Icelandic: Ég get etið gler án þess að meiða mig.
|
59
|
+
4. Polish: Mogę jeść szkło, i mi nie szkodzi.
|
60
|
+
5. Romanian: Pot să mănânc sticlă și ea nu mă rănește.
|
61
|
+
6. Ukrainian: Я можу їсти шкло, й воно мені не пошкодить.
|
62
|
+
7. Armenian: Կրնամ ապակի ուտել և ինծի անհանգիստ չըներ։
|
63
|
+
8. Georgian: მინას ვჭამ და არა მტკივა.
|
64
|
+
9. Hindi: मैं काँच खा सकता हूँ, मुझे उस से कोई पीडा नहीं होती.
|
65
|
+
10. Hebrew(2): אני יכול לאכול זכוכית וזה לא מזיק לי.
|
66
|
+
11. Yiddish(2): איך קען עסן גלאָז און עס טוט מיר נישט װײ.
|
67
|
+
12. Arabic(2): أنا قادر على أكل الزجاج و هذا لا يؤلمني.
|
68
|
+
13. Japanese: 私はガラスを食べられます。それは私を傷つけません。
|
69
|
+
14. Thai: ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ "
|
70
|
+
})
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should roundtrip French" do
|
74
|
+
roundtrip('Années de Pèlerinage')
|
75
|
+
roundtrip(%{
|
76
|
+
Années de Pèlerinage (Years of Pilgrimage) (S.160, S.161,
|
77
|
+
S.163) is a set of three suites by Franz Liszt for solo piano. Liszt's
|
78
|
+
complete musical style is evident in this masterwork, which ranges from
|
79
|
+
virtuosic fireworks to sincerely moving emotional statements. His musical
|
80
|
+
maturity can be seen evolving through his experience and travel. The
|
81
|
+
third volume is especially notable as an example of his later style: it
|
82
|
+
was composed well after the first two volumes and often displays less
|
83
|
+
showy virtuosity and more harmonic experimentation.
|
84
|
+
})
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
require 'pairtree'
|
3
|
+
|
4
|
+
describe "Pairtree::Obj" do
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
@base_path = File.join(File.dirname(__FILE__), "../test_data/working")
|
8
|
+
Dir.chdir(File.join(File.dirname(__FILE__), "../test_data")) do
|
9
|
+
FileUtils.cp_r('fixtures/pairtree_root_spec', './working')
|
10
|
+
end
|
11
|
+
@root = Pairtree.at(@base_path)
|
12
|
+
@obj = @root.get('pfx:abc123def')
|
13
|
+
end
|
14
|
+
|
15
|
+
after(:all) do
|
16
|
+
FileUtils.rm_rf(@base_path)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should read a file" do
|
20
|
+
@obj.read('content.xml').should == '<content/>'
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should have entries" do
|
24
|
+
@obj.entries.should == ['content.xml']
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should glob" do
|
28
|
+
@obj['*.xml'].should == ['content.xml']
|
29
|
+
@obj['*.txt'].should == []
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should be enumerable" do
|
33
|
+
block_body = mock('block_body')
|
34
|
+
block_body.should_receive(:yielded).with('content.xml')
|
35
|
+
@obj.each { |file| block_body.yielded(file) }
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "Call a bunch of File methods" do
|
39
|
+
before(:each) do
|
40
|
+
@target = File.join(@base_path, 'pairtree_root/ab/c1/23/de/f/abc123def/content.xml')
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should open a file" do
|
44
|
+
File.should_receive(:open).with(@target,'r')
|
45
|
+
@obj.open('content.xml','r')
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should call delete" do
|
49
|
+
File.should_receive(:delete).with(@target)
|
50
|
+
@obj.delete('content.xml')
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should call link" do
|
54
|
+
File.should_receive(:link).with(@target,@target + '.2')
|
55
|
+
@obj.link('content.xml','content.xml.2')
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should call rename" do
|
59
|
+
File.should_receive(:rename).with(@target,@target + '.new')
|
60
|
+
@obj.rename('content.xml','content.xml.new')
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should call utime" do
|
64
|
+
File.should_receive(:utime).with(0,1,@target)
|
65
|
+
@obj.utime(0,1,'content.xml')
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
require 'pairtree'
|
3
|
+
|
4
|
+
describe "Pairtree::Path" do
|
5
|
+
|
6
|
+
after(:each) do
|
7
|
+
Pairtree::Path.set_leaf { |id| id }
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should generate an encoded id as the leaf path by default" do
|
11
|
+
Pairtree::Path.leaf('abc/def').should == "abc=def"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should accept a nil override" do
|
15
|
+
Pairtree::Path.set_leaf nil
|
16
|
+
Pairtree::Path.leaf('abc/def').should == ""
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should accept a scalar override" do
|
20
|
+
Pairtree::Path.set_leaf 'obj'
|
21
|
+
Pairtree::Path.leaf('abc/def').should == "obj"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should accept a Proc override" do
|
25
|
+
lp = Proc.new { |id| id.reverse }
|
26
|
+
Pairtree::Path.set_leaf(lp)
|
27
|
+
Pairtree::Path.leaf('abc/def').should == "fed=cba"
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should accept a block override" do
|
31
|
+
Pairtree::Path.set_leaf { |id| id.reverse }
|
32
|
+
Pairtree::Path.leaf('abc/def').should == "fed=cba"
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
require 'pairtree'
|
3
|
+
|
4
|
+
describe "Pairtree::Root" do
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
@base_path = File.join(File.dirname(__FILE__), "../test_data/working")
|
8
|
+
Dir.chdir(File.join(File.dirname(__FILE__), "../test_data")) do
|
9
|
+
FileUtils.cp_r('fixtures/pairtree_root_spec', './working')
|
10
|
+
end
|
11
|
+
@root = Pairtree.at(@base_path)
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:all) do
|
15
|
+
FileUtils.rm_rf(@base_path)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have the correct prefix" do
|
19
|
+
@root.prefix.should == 'pfx:'
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should be in the correct location" do
|
23
|
+
File.expand_path(@root.path).should == File.expand_path(@base_path)
|
24
|
+
File.expand_path(@root.root).should == File.expand_path(File.join(@base_path, "pairtree_root"))
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should list identifiers" do
|
28
|
+
@root.list.should == ['pfx:abc123def']
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should verify whether an identifier exists" do
|
32
|
+
@root.exists?('pfx:abc123def').should be_true
|
33
|
+
@root.exists?('pfx:abc123jkl').should be_false
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should raise an exception if an invalid prefix is used" do
|
37
|
+
lambda { @root.exists?('xfp:abc123def') }.should raise_error(Pairtree::IdentifierError)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should get a ppath for a valid ID" do
|
41
|
+
obj = @root.get 'pfx:abc123def'
|
42
|
+
obj.class.should == Pairtree::Obj
|
43
|
+
File.expand_path(obj.path).should == File.expand_path(File.join(@base_path, "pairtree_root/ab/c1/23/de/f/abc123def/"))
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should raise an exception when attempting to get a ppath for an invalid ID" do
|
47
|
+
lambda { @root.get 'pfx:abc123jkl' }.should raise_error(Errno::ENOENT)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should create a new ppath" do
|
51
|
+
obj = @root.mk 'pfx:abc123jkl'
|
52
|
+
obj.class.should == Pairtree::Obj
|
53
|
+
File.expand_path(obj.path).should == File.expand_path(File.join(@base_path, "pairtree_root/ab/c1/23/jk/l/abc123jkl/"))
|
54
|
+
@root.exists?('pfx:abc123jkl').should be_true
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should delete a ppath" do
|
58
|
+
@root.exists?('pfx:abc123jkl').should be_true
|
59
|
+
@root.purge!('pfx:abc123jkl')
|
60
|
+
@root.exists?('pfx:abc123jkl').should be_false
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
require 'pairtree'
|
3
|
+
|
4
|
+
describe "Pairtree" do
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
@base_path = File.join(File.dirname(__FILE__), "../test_data/working")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should raise an error if a non-existent is specified without :create" do
|
11
|
+
lambda { Pairtree.at(@base_path) }.should raise_error(Pairtree::PathError)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "new pairtree" do
|
15
|
+
after(:all) do
|
16
|
+
FileUtils.rm_rf(@base_path)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should create a new pairtree" do
|
20
|
+
prefix = 'my_prefix:'
|
21
|
+
pt = Pairtree.at(@base_path, :prefix => prefix, :create => true)
|
22
|
+
pt.prefix.should == prefix
|
23
|
+
File.read(File.join(@base_path, 'pairtree_prefix')).should == prefix
|
24
|
+
pt.root.should == File.join(@base_path, 'pairtree_root')
|
25
|
+
pt.pairtree_version.should == Pairtree::SPEC_VERSION
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "existing pairtree" do
|
31
|
+
before(:all) do
|
32
|
+
Dir.chdir(File.join(File.dirname(__FILE__), "../test_data")) do
|
33
|
+
FileUtils.cp_r('fixtures/pairtree_root_spec', './working')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
after(:all) do
|
38
|
+
FileUtils.rm_rf(@base_path)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should raise an error if a regular file is specified as a root" do
|
42
|
+
lambda { Pairtree.at(File.join(@base_path, "pairtree_prefix"), :create => true) }.should raise_error(Pairtree::PathError)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should read the prefix if none is specified" do
|
46
|
+
Pairtree.at(@base_path).prefix.should == File.read(File.join(@base_path, 'pairtree_prefix'))
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should not complain if the given prefix matches the saved prefix" do
|
50
|
+
Pairtree.at(@base_path, :prefix => 'pfx:').prefix.should == File.read(File.join(@base_path, 'pairtree_prefix'))
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should raise an error if the given prefix does not match the saved prefix" do
|
54
|
+
lambda { Pairtree.at(@base_path, :prefix => 'wrong-prefix:') }.should raise_error(Pairtree::IdentifierError)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should not complain if the given version matches the saved version" do
|
58
|
+
Pairtree.at(@base_path, :version => Pairtree::SPEC_VERSION).pairtree_version.should == Pairtree::SPEC_VERSION
|
59
|
+
Pairtree.at(@base_path, :version => Pairtree::SPEC_VERSION, :create => true).pairtree_version.should == Pairtree::SPEC_VERSION
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should raise an error if the given version does not match the saved version" do
|
63
|
+
lambda { Pairtree.at(@base_path, :version => 0.2) }.should raise_error(Pairtree::VersionMismatch)
|
64
|
+
lambda { Pairtree.at(@base_path, :version => 0.2, :create => true) }.should raise_error(Pairtree::VersionMismatch)
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pfx:
|
data/spec/test_data/fixtures/pairtree_root_spec/pairtree_root/ab/c1/23/de/f/abc123def/content.xml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<content/>
|
@@ -0,0 +1 @@
|
|
1
|
+
This directory conforms to Pairtree Version 0.1. Updated spec: http://www.cdlib.org/inside/diglib/pairtree/pairtreespec.html
|
metadata
CHANGED
@@ -1,141 +1,123 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: pairtree
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 0
|
10
|
-
version: 0.0.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Chris Beer
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2010-12-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: &2164523720 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.0.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
|
25
|
-
|
24
|
+
version_requirements: *2164523720
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &2164523000 !ruby/object:Gem::Requirement
|
26
28
|
none: false
|
27
|
-
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
segments:
|
32
|
-
- 0
|
33
|
-
version: "0"
|
34
|
-
requirement: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.0'
|
36
33
|
type: :development
|
37
34
|
prerelease: false
|
38
|
-
|
39
|
-
|
35
|
+
version_requirements: *2164523000
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: yard
|
38
|
+
requirement: &2164522020 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
segments:
|
46
|
-
- 1
|
47
|
-
- 0
|
48
|
-
- 0
|
49
|
-
version: 1.0.0
|
50
|
-
requirement: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
52
44
|
type: :development
|
53
45
|
prerelease: false
|
54
|
-
|
55
|
-
|
46
|
+
version_requirements: *2164522020
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: RedCloth
|
49
|
+
requirement: &2164521500 !ruby/object:Gem::Requirement
|
56
50
|
none: false
|
57
|
-
requirements:
|
58
|
-
- -
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
segments:
|
62
|
-
- 1
|
63
|
-
- 5
|
64
|
-
- 1
|
65
|
-
version: 1.5.1
|
66
|
-
requirement: *id003
|
67
|
-
- !ruby/object:Gem::Dependency
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
68
55
|
type: :development
|
69
56
|
prerelease: false
|
70
|
-
|
71
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
hash: 3
|
77
|
-
segments:
|
78
|
-
- 0
|
79
|
-
version: "0"
|
80
|
-
requirement: *id004
|
57
|
+
version_requirements: *2164521500
|
81
58
|
description:
|
82
59
|
email: chris@cbeer.info
|
83
60
|
executables: []
|
84
|
-
|
85
61
|
extensions: []
|
86
|
-
|
87
|
-
extra_rdoc_files:
|
62
|
+
extra_rdoc_files:
|
88
63
|
- LICENSE.txt
|
89
|
-
- README.
|
90
|
-
files:
|
64
|
+
- README.textile
|
65
|
+
files:
|
91
66
|
- .document
|
67
|
+
- .gitignore
|
92
68
|
- Gemfile
|
93
69
|
- LICENSE.txt
|
94
|
-
- README.
|
70
|
+
- README.textile
|
95
71
|
- Rakefile
|
96
|
-
- VERSION
|
97
72
|
- lib/pairtree.rb
|
98
|
-
- lib/pairtree/client.rb
|
99
73
|
- lib/pairtree/identifier.rb
|
100
74
|
- lib/pairtree/obj.rb
|
101
75
|
- lib/pairtree/path.rb
|
102
76
|
- lib/pairtree/root.rb
|
103
|
-
-
|
104
|
-
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
-
|
77
|
+
- lib/tasks/rdoc.rake
|
78
|
+
- pairtree.gemspec
|
79
|
+
- spec/pairtree/pairtree_encoding_spec.rb
|
80
|
+
- spec/pairtree/pairtree_obj_spec.rb
|
81
|
+
- spec/pairtree/pairtree_path_spec.rb
|
82
|
+
- spec/pairtree/pairtree_root_spec.rb
|
83
|
+
- spec/pairtree/pairtree_spec.rb
|
84
|
+
- spec/spec_helper.rb
|
85
|
+
- spec/test_data/fixtures/pairtree_root_spec/pairtree_prefix
|
86
|
+
- spec/test_data/fixtures/pairtree_root_spec/pairtree_root/ab/c1/23/de/f/abc123def/content.xml
|
87
|
+
- spec/test_data/fixtures/pairtree_root_spec/pairtree_version0_1
|
88
|
+
homepage: http://github.com/microservices/pairtree
|
89
|
+
licenses:
|
90
|
+
- Apache2
|
109
91
|
post_install_message:
|
110
92
|
rdoc_options: []
|
111
|
-
|
112
|
-
require_paths:
|
93
|
+
require_paths:
|
113
94
|
- lib
|
114
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
96
|
none: false
|
116
|
-
requirements:
|
117
|
-
- -
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
|
120
|
-
|
121
|
-
- 0
|
122
|
-
version: "0"
|
123
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ! '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
102
|
none: false
|
125
|
-
requirements:
|
126
|
-
- -
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
|
129
|
-
segments:
|
130
|
-
- 0
|
131
|
-
version: "0"
|
103
|
+
requirements:
|
104
|
+
- - ! '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
132
107
|
requirements: []
|
133
|
-
|
134
108
|
rubyforge_project:
|
135
|
-
rubygems_version: 1.
|
109
|
+
rubygems_version: 1.8.10
|
136
110
|
signing_key:
|
137
111
|
specification_version: 3
|
138
112
|
summary: Ruby Pairtree implementation
|
139
|
-
test_files:
|
140
|
-
-
|
141
|
-
-
|
113
|
+
test_files:
|
114
|
+
- spec/pairtree/pairtree_encoding_spec.rb
|
115
|
+
- spec/pairtree/pairtree_obj_spec.rb
|
116
|
+
- spec/pairtree/pairtree_path_spec.rb
|
117
|
+
- spec/pairtree/pairtree_root_spec.rb
|
118
|
+
- spec/pairtree/pairtree_spec.rb
|
119
|
+
- spec/spec_helper.rb
|
120
|
+
- spec/test_data/fixtures/pairtree_root_spec/pairtree_prefix
|
121
|
+
- spec/test_data/fixtures/pairtree_root_spec/pairtree_root/ab/c1/23/de/f/abc123def/content.xml
|
122
|
+
- spec/test_data/fixtures/pairtree_root_spec/pairtree_version0_1
|
123
|
+
has_rdoc:
|