docbook_status 0.3.0 → 0.4.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.
@@ -1,3 +1,10 @@
1
+ == 0.4.0 / 2011-10-??
2
+
3
+ * Minor changes
4
+ ** The word counts displayed are now the totals of the respective section, including all its children
5
+ ** Changed remarks output, more space for file names and content
6
+ ** Changed the homepage to GitHub
7
+
1
8
  == 0.3.0 / 2011-09-28
2
9
 
3
10
  * Writing goals (total and daily) can be defined and tracked
@@ -1,6 +1,6 @@
1
1
  = docbook_status
2
2
 
3
- A utility for DocBook authors/publishers showing the document structure (sections) and word count of a DocBook project. It is intended to provide an overview of a DocBook project's structure and volume while you are writing or editing it.
3
+ A utility for DocBook authors/publishers showing the document structure (sections) and word count of a DocBook project. It is intended to provide an overview of a DocBook project's structure and size while you are writing or editing it.
4
4
 
5
5
  == Features
6
6
 
@@ -13,9 +13,9 @@ A utility for DocBook authors/publishers showing the document structure (section
13
13
 
14
14
  == Synopsis
15
15
 
16
- docbook_status is mainly a comandline application, bin/docbook_status, that helps with writing and editing DocBook 5 documents. The application provides information about the content of a DocBook project. That project can consist of a single file or of several files that are included in the master file via XInclude.
16
+ docbook_status is mainly a comandline application, bin/docbook_status, which helps with writing and editing DocBook 5 documents. The application provides information about the content of a DocBook project. That project can consist of a single file or of several files that are included in the master file via XInclude.
17
17
 
18
- To run docbook_status manually:
18
+ To run docbook_status once, manually:
19
19
 
20
20
  docbook_status myproject.xml
21
21
 
@@ -116,6 +116,10 @@ https://rubygems.org/gems/docbook_status
116
116
 
117
117
  * gem install docbook_status
118
118
 
119
+ == Homepage
120
+
121
+ http://rvolz.github.com/docbook_status/
122
+
119
123
  == License
120
124
 
121
125
  The MIT License
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ Bones {
12
12
  name 'docbook_status'
13
13
  authors 'Rainer Volz'
14
14
  email 'dev@textmulch.de'
15
- url 'http://projekte.textmulch.de/docbook_status/'
15
+ url 'http://rvolz.github.com/docbook_status/'
16
16
  depend_on 'directory_watcher'
17
17
  depend_on 'libxml-ruby'
18
18
  depend_on 'json'
@@ -168,10 +168,11 @@ def output_terminal(doc_info)
168
168
  if doc_info[:remarks]
169
169
  puts
170
170
  puts "Remarks".bold
171
- puts "%-10s %10s %5s %-52s" % %w[Type File Line Content]
171
+ puts "%-10.10s %20.20s %5s %-52s" % %w[Type File Line Content]
172
172
  puts "-"*80
173
173
  doc_info[:remarks].each do |r|
174
- puts "%-10.10s %10s %5d %-52.52s" % ["#{r[:keyword]}",r[:file],r[:line],r[:text]]
174
+ puts "%-10.10s %20.20s %5d %-42.42s" % ["#{r[:keyword]}",r[:file],r[:line],r[:text]]
175
+ puts "%s %-42.42s" % [' '*37,r[:text][42..84]] if r[:text].length > 42
175
176
  end
176
177
  end
177
178
  end
@@ -205,6 +205,34 @@ module DocbookStatus
205
205
  end
206
206
  end
207
207
 
208
+ # Helper for sum_sections
209
+ def sum_lower_sections(secs,start,level)
210
+ i=start
211
+ sum = 0
212
+ while (i < secs.length && secs[i][:level] > level)
213
+ sum += secs[i][:words]
214
+ i += 1
215
+ end
216
+ [sum,i]
217
+ end
218
+
219
+ # Sum the word counts of lower sections
220
+ def sum_sections(secs, max_level)
221
+ 0.upto(max_level) do |cur_level|
222
+ i = 0
223
+ while i < secs.length
224
+ if (secs[i][:level] == cur_level)
225
+ (ctr,ni) = sum_lower_sections(secs, i+1,cur_level)
226
+ secs[i][:swords] = ctr
227
+ i = ni
228
+ else
229
+ i += 1
230
+ end
231
+ end
232
+ end
233
+ secs
234
+ end
235
+
208
236
  # Searches the XML document for sections and word counts. Returns an
209
237
  # array of sections (map) with title, word count, section level and DocBook tag.
210
238
  #
@@ -218,8 +246,8 @@ module DocbookStatus
218
246
  section_type = doc_maps[0][:name]
219
247
  section_ctr = 0
220
248
  section_level = 0
249
+ max_section_level = 0
221
250
  doc_ctr = 0
222
- #puts doc_maps.inspect
223
251
  xms = doc_maps.drop(1)
224
252
  # Compute word counts per section
225
253
  xms.each do |m|
@@ -231,12 +259,17 @@ module DocbookStatus
231
259
  section_name = m[:title]
232
260
  section_ctr = 0
233
261
  section_level = m[:level]
262
+ max_section_level = m[:level] if (m[:level] > max_section_level)
234
263
  section_type = m[:name]
235
264
  end
236
265
  end
237
266
  @sections << {:title => section_name, :words => section_ctr, :level => section_level, :tag => section_type}
238
- # Put the document word count near the document type
239
- @sections[0][:words] = doc_ctr
267
+ # OPTIMIZE Not nice, but works
268
+ @sections = sum_sections(@sections,max_section_level).map {|s|
269
+ s[:words] = s[:words]+s[:swords];
270
+ s.delete(:swords)
271
+ s
272
+ }
240
273
  @sections
241
274
  end
242
275
 
@@ -246,7 +279,7 @@ module DocbookStatus
246
279
  #
247
280
  def analyze_file
248
281
  full_name = File.expand_path(@source)
249
- changed = File.ctime(@source)
282
+ changed = File.mtime(@source)
250
283
  @doc = XML::Document.file(@source)
251
284
  raise ArgumentError, "Error: #{@source} is apparently not DocBook 5." unless is_docbook?(@doc)
252
285
  @doc.xinclude if has_xinclude?(@doc)
Binary file
@@ -43,6 +43,38 @@ EOI
43
43
  {:title => 'S1', :words => 17, :level => 1, :tag => 'section'}])
44
44
  end
45
45
 
46
+ it "sums simple sections" do
47
+ ss = [{:level => 0, :words => 10},
48
+ {:level => 1, :words => 10},
49
+ {:level => 1, :words => 10}
50
+ ]
51
+ dbs = DocbookStatus::Status.new()
52
+ sse = dbs.sum_sections(ss,1)
53
+ sse.must_equal([{:level => 0, :words => 10, :swords => 20},
54
+ {:level => 1, :words => 10, :swords => 0},
55
+ {:level => 1, :words => 10, :swords => 0}
56
+ ])
57
+ end
58
+
59
+ it "sums sections" do
60
+ ss = [{:level => 0, :words => 10},
61
+ {:level => 1, :words => 10},
62
+ {:level => 2, :words => 10},
63
+ {:level => 2, :words => 10},
64
+ {:level => 3, :words => 10},
65
+ {:level => 1, :words => 10}
66
+ ]
67
+ dbs = DocbookStatus::Status.new()
68
+ sse = dbs.sum_sections(ss,3)
69
+ sse.must_equal([{:level => 0, :words => 10, :swords => 50},
70
+ {:level => 1, :words => 10, :swords => 30},
71
+ {:level => 2, :words => 10, :swords => 0},
72
+ {:level => 2, :words => 10, :swords => 10},
73
+ {:level => 3, :words => 10, :swords => 0},
74
+ {:level => 1, :words => 10, :swords => 0}
75
+ ])
76
+ end
77
+
46
78
  it "processes includes" do
47
79
  dbs = DocbookStatus::Status.new()
48
80
  ind = XML::Document.file('test/fixtures/book.xml')
@@ -59,7 +91,7 @@ EOI
59
91
  dbs = DocbookStatus::Status.new('test/fixtures/book.xml')
60
92
  info = dbs.analyze_file
61
93
  info[:file].must_equal(File.expand_path('.')+'/test/fixtures/book.xml')
62
- #info[:modified].to_s.must_equal('2011-09-27 18:17:10 +0200')
94
+ #info[:modified].to_s.must_equal('2011-09-09 18:20:15 +0200')
63
95
  end
64
96
 
65
97
  it "filters remarks while counting" do
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docbook_status
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.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-09-28 00:00:00.000000000Z
12
+ date: 2011-10-04 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: directory_watcher
16
- requirement: &2154663180 !ruby/object:Gem::Requirement
16
+ requirement: &2165156720 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.4.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2154663180
24
+ version_requirements: *2165156720
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: libxml-ruby
27
- requirement: &2154662400 !ruby/object:Gem::Requirement
27
+ requirement: &2165156200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.2.2
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2154662400
35
+ version_requirements: *2165156200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &2154661680 !ruby/object:Gem::Requirement
38
+ requirement: &2165155600 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.6.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2154661680
46
+ version_requirements: *2165155600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: term-ansicolor
49
- requirement: &2154660920 !ruby/object:Gem::Requirement
49
+ requirement: &2165154960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.6
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2154660920
57
+ version_requirements: *2165154960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bones
60
- requirement: &2154660120 !ruby/object:Gem::Requirement
60
+ requirement: &2165154300 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 3.7.1
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2154660120
68
+ version_requirements: *2165154300
69
69
  description: A utility for DocBook authors/publishers showing the document structure
70
70
  (sections) and word count of a DocBook project. It is intended to provide an overview
71
- of a DocBook project's structure and volume while you are writing or editing it.
71
+ of a DocBook project's structure and size while you are writing or editing it.
72
72
  email: dev@textmulch.de
73
73
  executables:
74
74
  - docbook_status
@@ -100,7 +100,7 @@ files:
100
100
  - test/test_docbook_status.rb
101
101
  - test/test_history.rb
102
102
  - version.txt
103
- homepage: http://projekte.textmulch.de/docbook_status/
103
+ homepage: http://rvolz.github.com/docbook_status/
104
104
  licenses: []
105
105
  post_install_message:
106
106
  rdoc_options: