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.
- data/History.txt +7 -0
- data/README.rdoc +7 -3
- data/Rakefile +1 -1
- data/bin/docbook_status +3 -2
- data/lib/docbook_status/status.rb +37 -4
- data/test/.DS_Store +0 -0
- data/test/test_docbook_status.rb +33 -1
- data/version.txt +1 -1
- metadata +14 -14
    
        data/History.txt
    CHANGED
    
    | @@ -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
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -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  | 
| 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,  | 
| 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:// | 
| 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'
         | 
    
        data/bin/docbook_status
    CHANGED
    
    | @@ -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 % | 
| 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 % | 
| 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 | 
            -
                 #  | 
| 239 | 
            -
                 @sections | 
| 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. | 
| 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)
         | 
    
        data/test/.DS_Store
    CHANGED
    
    | Binary file | 
    
        data/test/test_docbook_status.rb
    CHANGED
    
    | @@ -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- | 
| 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
         | 
    
        data/version.txt
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            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. | 
| 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- | 
| 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: & | 
| 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: * | 
| 24 | 
            +
              version_requirements: *2165156720
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: libxml-ruby
         | 
| 27 | 
            -
              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: * | 
| 35 | 
            +
              version_requirements: *2165156200
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: json
         | 
| 38 | 
            -
              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: * | 
| 46 | 
            +
              version_requirements: *2165155600
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: term-ansicolor
         | 
| 49 | 
            -
              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: * | 
| 57 | 
            +
              version_requirements: *2165154960
         | 
| 58 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 59 | 
             
              name: bones
         | 
| 60 | 
            -
              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: * | 
| 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  | 
| 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:// | 
| 103 | 
            +
            homepage: http://rvolz.github.com/docbook_status/
         | 
| 104 104 | 
             
            licenses: []
         | 
| 105 105 | 
             
            post_install_message: 
         | 
| 106 106 | 
             
            rdoc_options:
         |