docbook_files 0.4.0 → 0.5.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.
@@ -7,7 +7,7 @@ module DocbookFiles
7
7
  it "can cope with invalid xml files" do
8
8
  dbf = DocbookFiles::Docbook.new("spec/fixtures/no-xml.xml")
9
9
  actual = dbf.list()
10
- actual.class.should == DocbookFiles::FileData
10
+ actual.class.should == DocbookFiles::FileRef
11
11
  actual.name.should == "no-xml.xml"
12
12
  actual.size.should == 15
13
13
  actual.docbook.should be_false
@@ -5,74 +5,84 @@ require 'time'
5
5
  module DocbookFiles
6
6
  describe FileData do
7
7
 
8
+ before(:each) do
9
+ FileData.reset()
10
+ end
11
+
8
12
  it "calculates a checksum" do
9
- f = FileData.new("spec/fixtures/bookxi.xml")
13
+ f = FileData.for("spec/fixtures/bookxi.xml")
10
14
  f.checksum.should == "7d240e7a084c16665ac59e5b927acd6a06953897"
11
15
  end
12
16
 
13
17
  it "finds a XML MIME type" do
14
- f = FileData.new("spec/fixtures/bookxi.xml")
18
+ f = FileData.for("spec/fixtures/bookxi.xml")
15
19
  f.mime.should == "application/xml"
16
20
  end
17
21
 
18
22
  it "finds a plain text MIME type" do
19
23
  pending("different MIME lib?") do
20
- f = FileData.new("spec/fixtures/no-xml.xml")
24
+ f = FileData.for("spec/fixtures/no-xml.xml")
21
25
  f.mime.should_not == "application/xml"
22
26
  end
23
27
  end
24
-
25
- it "converts a single FileData instance to a hash" do
26
- f = FileData.new("spec/fixtures/bookxi.xml")
27
- actual = f.to_hash([:name,:mime,:size],FileData::TYPE_MAIN)
28
- actual.should == {:type => :main, :name=>"bookxi.xml", :mime=>"application/xml", :size=>481}
29
- actual = f.to_hash([:name, :full_name, :namespace, :docbook, :version, :tag, :parent, :status, :ts, :size, :checksum, :mime],FileData::TYPE_MAIN)
30
- expected = {:type => :main, :name=>"bookxi.xml",
31
- :full_name=>File.expand_path(".")+"/spec/fixtures/bookxi.xml",
32
- :namespace=>"", :docbook=>false, :version=>"", :tag=>"", :parent=>nil, :status=>FileData::STATUS_OK,
33
- :ts=>File.mtime(File.expand_path(".")+"/spec/fixtures/bookxi.xml"), :size=>481,
34
- :checksum=>"7d240e7a084c16665ac59e5b927acd6a06953897", :mime=>"application/xml"}
35
- actual.should == expected
28
+
29
+ it "constructs file names (path) relative to the main file" do
30
+ f1 = FileData.for("spec/fixtures/bookxi.xml")
31
+ f2 = FileData.for("spec/fixtures/chapter2xi.xml")
32
+ f3 = FileData.for("spec/fixtures/c4/chapter4xi.xml")
33
+ f1.add_includes([f2,f3])
34
+ f1.name.should == "bookxi.xml"
35
+ f1.path.should == "bookxi.xml"
36
+ f1.full_name.should == File.expand_path(".")+"/spec/fixtures/bookxi.xml"
37
+ f3.name.should == "chapter4xi.xml"
38
+ f3.path.should == "c4/chapter4xi.xml"
39
+ f3.full_name.should == File.expand_path(".")+"/spec/fixtures/c4/chapter4xi.xml"
36
40
  end
37
41
 
38
- it "converts a FileData tree to an array of hashes" do
39
- f1 = FileData.new("spec/fixtures/bookxi.xml")
40
- f2 = FileData.new("spec/fixtures/chapter2xi.xml")
41
- f3 = FileData.new("spec/fixtures/chapter3xi.xml")
42
- f1.includes = [f2]
43
- f2.includes = [f3]
44
- expected = [{:type => :main, :name=>"bookxi.xml", :mime=>"application/xml", :size=>481},
45
- [{:type => :inc, :name=>"chapter2xi.xml", :mime=>"application/xml", :size=>366},
46
- [{:type => :inc, :name=>"chapter3xi.xml", :mime=>"application/xml", :size=>286}]]]
47
- actual = f1.traverse([:name,:mime,:size],FileData::TYPE_MAIN)
48
- actual.should == expected
42
+ it "doesn't change absolute file names in path construction" do
43
+ f1 = FileData.for("spec/fixtures/bookxi.xml")
44
+ f2 = FileData.for("/spec/fixtures/chapter2xi.xml")
45
+ f2.name.should == "chapter2xi.xml"
46
+ f2.path.should == "/spec/fixtures/chapter2xi.xml"
47
+ f2.full_name.should == "/spec/fixtures/chapter2xi.xml"
49
48
  end
49
+
50
+ it "doesn't change file names outside the main dir in path construction" do
51
+ f1 = FileData.for("spec/fixtures/bookxi.xml")
52
+ f2 = FileData.for("../spec2/fixtures/chapter2xi.xml")
53
+ f2.name.should == "chapter2xi.xml"
54
+ f2.path.should == File.expand_path("..")+"/spec2/fixtures/chapter2xi.xml"
55
+ f2.full_name.should == File.expand_path("..")+"/spec2/fixtures/chapter2xi.xml"
56
+ end
50
57
 
51
- it "converts a FileData tree to a table of hashes" do
52
- f1 = FileData.new("spec/fixtures/bookxi.xml")
53
- f2 = FileData.new("spec/fixtures/chapter2xi.xml")
54
- f3 = FileData.new("spec/fixtures/chapter3xi.xml")
55
- f1.includes = [f2]
56
- f2.includes = [f3]
57
- expected = [{:type => :main, :name=>"bookxi.xml", :mime=>"application/xml", :size=>481, :level=>0},
58
- {:type => :inc, :name=>"chapter2xi.xml", :mime=>"application/xml", :size=>366, :level=>1},
59
- {:type => :inc, :name=>"chapter3xi.xml", :mime=>"application/xml", :size=>286, :level=>2}]
60
- actual = f1.traverse_as_table([:name,:mime,:size])
61
- actual.should == expected
58
+ it "stores only one instance per file" do
59
+ f1 = FileData.for("spec/fixtures/bookxi.xml")
60
+ f2 = FileData.for("spec/fixtures/bookxi.xml")
61
+ FileData.files.size.should == 1
62
62
  end
63
-
64
- it "finds non-existing files" do
65
- f1 = FileData.new("spec/fixtures/bookxi.xml")
66
- f2 = FileData.new("spec/fixtures/chapter2xi.xml",".",f1)
67
- f3 = FileData.new("spec/fixtures/chapter3xi.xml",".",f2)
68
- f5 = FileData.new("spec/fixtures/non-existing.xml",".",f2)
69
- f1.includes = [f2]
70
- f2.includes = [f3,f5]
71
- expected = [{:type => :inc, :name=>"non-existing.xml", :parent=>"chapter2xi.xml"}]
72
- actual = f1.find_non_existing_files()
73
- actual.should == expected
63
+
64
+ it "stores includes" do
65
+ f1 = FileData.for("spec/fixtures/bookxi.xml")
66
+ f2 = FileData.for("spec/fixtures/chapter2xi.xml")
67
+ f3 = FileData.for("spec/fixtures/chapter3xi.xml")
68
+ f1.add_includes([f2,f3])
69
+ f1s = FileData::storage[f1.key]
70
+ f1s.includes.should == [f2, f3]
71
+ f2s = FileData::storage[f2.key]
72
+ f2s.included_by.should == [f1]
74
73
  end
75
-
74
+
75
+ it "stores references" do
76
+ f1 = FileData.for("spec/fixtures/bookxi.xml")
77
+ f2 = FileData.for("spec/fixtures/chapter2xi.xml")
78
+ f3 = FileData.for("spec/fixtures/chapter3xi.xml")
79
+ f1.add_references([f2,f3])
80
+ f1s = FileData::storage[f1.key]
81
+ f1s.references.should == [f2, f3]
82
+ f2s = FileData::storage[f2.key]
83
+ f2s.referenced_by.should == [f1]
84
+ end
85
+
76
86
  end
77
87
  end
78
88
 
@@ -0,0 +1,97 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require_relative '../spec_helper'
3
+ require 'time'
4
+
5
+ module DocbookFiles
6
+ describe FileRef do
7
+
8
+ before(:each) do
9
+ FileData.reset()
10
+ end
11
+
12
+ it "converts a single FileRef instance to a hash" do
13
+ f = FileRef.new("spec/fixtures/bookxi.xml")
14
+ actual = f.to_hash([:name,:mime,:size],FileRefTypes::TYPE_MAIN)
15
+ actual.should == {:type => :main, :name=>"bookxi.xml", :mime=>"application/xml", :size=>481}
16
+ actual = f.to_hash([:name, :full_name, :namespace, :docbook, :version,
17
+ :tag, :parent, :status, :ts, :size, :checksum, :mime],
18
+ FileRefTypes::TYPE_MAIN)
19
+ expected = {:type => :main, :name=>"bookxi.xml",
20
+ :full_name=>File.expand_path(".")+"/spec/fixtures/bookxi.xml",
21
+ :namespace=>"", :docbook=>false,
22
+ :version=>"", :tag=>"", :parent=>nil, :status=>FileData::STATUS_OK,
23
+ :ts=>File.mtime(File.expand_path(".")+"/spec/fixtures/bookxi.xml"), :size=>481,
24
+ :checksum=>"7d240e7a084c16665ac59e5b927acd6a06953897", :mime=>"application/xml"}
25
+ actual.should == expected
26
+ end
27
+
28
+ it "converts a FileRef tree to an array of hashes" do
29
+ f1 = FileRef.new("spec/fixtures/bookxi.xml")
30
+ f2 = FileRef.new("spec/fixtures/chapter2xi.xml")
31
+ f3 = FileRef.new("spec/fixtures/chapter3xi.xml")
32
+ f1.includes = [f2]
33
+ f2.includes = [f3]
34
+ expected = [{:type => :main, :name=>"bookxi.xml", :mime=>"application/xml", :size=>481},
35
+ [{:type => :inc, :name=>"chapter2xi.xml", :mime=>"application/xml", :size=>366},
36
+ [{:type => :inc, :name=>"chapter3xi.xml", :mime=>"application/xml", :size=>286}]]]
37
+ actual = f1.traverse([:name,:mime,:size],FileRefTypes::TYPE_MAIN)
38
+ actual.should == expected
39
+ end
40
+
41
+ it "converts a FileRef tree to a table of hashes" do
42
+ f1 = FileRef.new("spec/fixtures/bookxi.xml")
43
+ f2 = FileRef.new("spec/fixtures/chapter2xi.xml")
44
+ f3 = FileRef.new("spec/fixtures/chapter3xi.xml")
45
+ f1.includes = [f2]
46
+ f2.includes = [f3]
47
+ expected = [{:type => :main, :name=>"bookxi.xml", :mime=>"application/xml", :size=>481, :level=>0},
48
+ {:type => :inc, :name=>"chapter2xi.xml", :mime=>"application/xml", :size=>366, :level=>1},
49
+ {:type => :inc, :name=>"chapter3xi.xml", :mime=>"application/xml", :size=>286, :level=>2}]
50
+ actual = f1.traverse_as_table([:name,:mime,:size])
51
+ actual.should == expected
52
+ end
53
+
54
+ it "finds non-existing files" do
55
+ f1 = FileRef.new("spec/fixtures/bookxi.xml")
56
+ f2 = FileRef.new("spec/fixtures/chapter2xi.xml",".",f1)
57
+ f3 = FileRef.new("spec/fixtures/chapter3xi.xml",".",f2)
58
+ f5 = FileRef.new("spec/fixtures/non-existing.xml",".",f2)
59
+ f1.includes = [f2]
60
+ f2.includes = [f3,f5]
61
+ expected = [{:type => :inc, :name=>"non-existing.xml", :parent=>"chapter2xi.xml"}]
62
+ actual = f1.find_non_existing_files()
63
+ actual.should == expected
64
+ end
65
+
66
+ it "collects includes of all FileRef instances" do
67
+ f1 = FileRef.new("spec/fixtures/bookxi.xml")
68
+ f2 = FileRef.new("spec/fixtures/chapter2xi.xml",".",f1)
69
+ f3 = FileRef.new("spec/fixtures/chapter3xi.xml",".",f2)
70
+ f5 = FileRef.new("spec/fixtures/non-existing.xml",".",f2)
71
+ f6 = FileRef.new("spec/fixtures/c4/chapter4xi.xml",".",f1)
72
+ f7 = FileRef.new("spec/fixtures/non-existing.xml",".",f7)
73
+ f1.includes = [f2,f6]
74
+ f2.includes = [f3,f5]
75
+ f6.includes = [f7]
76
+ store = FileData.storage
77
+ fr = store[f7.file_data.key]
78
+ fr.included_by.map{|ib|ib.key}.should == [f2.file_data.key, f6.file_data.key]
79
+ end
80
+
81
+ it "collects references of all FileRef instances" do
82
+ f1 = FileRef.new("spec/fixtures/bookxi.xml")
83
+ f2 = FileRef.new("spec/fixtures/chapter2xi.xml",".",f1)
84
+ f3 = FileRef.new("spec/fixtures/pic1.jpg",".",f2)
85
+ f5 = FileRef.new("spec/fixtures/pic2.jpg",".",f2)
86
+ f6 = FileRef.new("spec/fixtures/c4/chapter4xi.xml",".",f1)
87
+ f7 = FileRef.new("spec/fixtures/pic2.jpg",".",f7)
88
+ f1.includes = [f2,f6]
89
+ f2.refs = [f3,f5]
90
+ f6.refs = [f7]
91
+ store = FileData.storage
92
+ fr = store[f7.file_data.key]
93
+ fr.referenced_by.map{|ib|ib.key}.should == [f2.file_data.key, f6.file_data.key]
94
+ end
95
+ end
96
+ end
97
+
data/version.txt CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docbook_files
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.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: 2011-10-14 00:00:00.000000000Z
12
+ date: 2011-10-19 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: libxml-ruby
16
- requirement: &2167326260 !ruby/object:Gem::Requirement
16
+ requirement: &2167029400 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.2.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2167326260
24
+ version_requirements: *2167029400
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: term-ansicolor
27
- requirement: &2167325580 !ruby/object:Gem::Requirement
27
+ requirement: &2167028280 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.7
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2167325580
35
+ version_requirements: *2167028280
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: wand
38
- requirement: &2167324900 !ruby/object:Gem::Requirement
38
+ requirement: &2167027500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,21 +43,32 @@ dependencies:
43
43
  version: '0.4'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2167324900
46
+ version_requirements: *2167027500
47
47
  - !ruby/object:Gem::Dependency
48
- name: json
49
- requirement: &2167324260 !ruby/object:Gem::Requirement
48
+ name: zucker
49
+ requirement: &2167026460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.6.1
54
+ version: '11'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2167324260
57
+ version_requirements: *2167026460
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &2167025840 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: 2.7.0
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2167025840
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: bones
60
- requirement: &2167323640 !ruby/object:Gem::Requirement
71
+ requirement: &2167025160 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,7 +76,7 @@ dependencies:
65
76
  version: 3.7.1
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *2167323640
79
+ version_requirements: *2167025160
69
80
  description: docbook_files lists and checks all files related to a DocBook writing
70
81
  project.
71
82
  email: dev@textmulch.de
@@ -80,6 +91,7 @@ files:
80
91
  - Gemfile.lock
81
92
  - Guardfile
82
93
  - History.txt
94
+ - LICENSE
83
95
  - README.md
84
96
  - Rakefile
85
97
  - bin/docbook_files
@@ -87,9 +99,12 @@ files:
87
99
  - lib/docbook_files/app.rb
88
100
  - lib/docbook_files/docbook.rb
89
101
  - lib/docbook_files/file_data.rb
102
+ - lib/docbook_files/file_ref.rb
103
+ - lib/docbook_files/file_ref_types.rb
90
104
  - spec/docbook_files/app_spec.rb
91
105
  - spec/docbook_files/docbook_spec.rb
92
106
  - spec/docbook_files/file_data_spec.rb
107
+ - spec/docbook_files/file_ref_spec.rb
93
108
  - spec/docbook_files_spec.rb
94
109
  - spec/fixtures/book-nonexisting.xml
95
110
  - spec/fixtures/bookxi.xml
@@ -112,8 +127,26 @@ files:
112
127
  - spec/spec_helper.rb
113
128
  - version.txt
114
129
  homepage: http://rvolz.github.com/docbook_files/
115
- licenses: []
116
- post_install_message:
130
+ licenses:
131
+ - MIT
132
+ post_install_message: ! '
133
+
134
+ Please note:
135
+
136
+
137
+ - docbook_files uses color to mark problematic files.
138
+
139
+ On Windows, you should additionally install the gem ''win32console''
140
+
141
+ to enable color output in the terminal.
142
+
143
+
144
+ - JSON output is optional for Ruby 1.8. Please install the gem ''json''
145
+
146
+ if you are running Ruby 1.8 and want JSON output.
147
+
148
+
149
+ '
117
150
  rdoc_options:
118
151
  - --main
119
152
  - README.md