docubot 0.4 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. data/lib/docubot.rb +1 -1
  2. data/lib/docubot/bundle.rb +14 -17
  3. data/lib/docubot/link_tree.rb +11 -9
  4. data/lib/docubot/page.rb +10 -1
  5. data/lib/docubot/shells/nvphysx/_templates/top.haml +1 -1
  6. data/lib/docubot/templates/top.haml +2 -2
  7. data/lib/docubot/writers/chm.rb +31 -22
  8. data/lib/docubot/writers/html.rb +1 -1
  9. data/spec/_helper.rb +1 -0
  10. data/spec/bundle.rb +10 -3
  11. data/spec/chm.rb +44 -0
  12. data/spec/page.rb +32 -2
  13. data/spec/samples/default_topic/Alpha.md +3 -0
  14. data/spec/samples/default_topic/Zeta.md +3 -0
  15. data/spec/samples/default_topic/index.txt +2 -0
  16. data/spec/samples/default_topic_2/Alpha Space.md +3 -0
  17. data/spec/samples/default_topic_2/Zeta.md +3 -0
  18. data/spec/samples/default_topic_2/index.txt +2 -0
  19. data/spec/samples/hierarchy/1/1.1/1.1.1/index.haml +1 -0
  20. data/spec/samples/hierarchy/1/1.1/1.1.1/page.haml +3 -0
  21. data/spec/samples/hierarchy/1/1.1/page.haml +3 -0
  22. data/spec/samples/hierarchy/1/page.haml +3 -0
  23. data/spec/samples/hierarchy/2/2.1/2.1.1/page.haml +3 -0
  24. data/spec/samples/hierarchy/2/2.1/index.haml +1 -0
  25. data/spec/samples/hierarchy/2/2.1/page.haml +3 -0
  26. data/spec/samples/hierarchy/2/page.haml +3 -0
  27. data/spec/samples/hierarchy/main.css +1 -0
  28. data/spec/samples/hierarchy/main.haml +1 -0
  29. data/spec/samples/hierarchy/toc.md +2 -0
  30. data/spec/samples/links/one two three.textile +1 -0
  31. data/spec/samples/links/sub2.md +1 -0
  32. data/spec/samples/templates/_templates/doubler.haml +1 -1
  33. data/spec/samples/titles/6.1 More.md b/data/spec/samples/titles/6.1 → More.md +0 -0
  34. data/spec/toc.rb +22 -0
  35. metadata +21 -1
@@ -20,7 +20,7 @@ module FileUtils
20
20
  end
21
21
 
22
22
  module DocuBot
23
- VERSION = '0.4'
23
+ VERSION = '0.5'
24
24
  DIR = File.expand_path( File.dirname( __FILE__ ) )
25
25
 
26
26
  TEMPLATE_DIR = DIR / 'docubot/templates'
@@ -20,7 +20,7 @@ class DocuBot::Bundle
20
20
  Dir.chdir( @source ) do
21
21
  # This might be nil; MetaSection.new is OK with that.
22
22
  index_file = Dir[ *DocuBot::Converter.types.map{|t| "index.#{t}"} ][ 0 ]
23
- @global = DocuBot::MetaSection.new( {}, index_file )
23
+ @global = DocuBot::MetaSection.new( {:title=>'DocuBot Documentation'}, index_file )
24
24
  @global.glossary = @glossary
25
25
  @global.index = @index
26
26
  @global.toc = @toc
@@ -28,10 +28,12 @@ class DocuBot::Bundle
28
28
  files_and_folders = Dir[ '**/*' ]
29
29
 
30
30
  # index files are handled by Page.new for a directory; no sections for special folders (but process contents)
31
- files_and_folders.reject!{ |path| name = File.basename( path ); name =~ /^(?:index\.[^.]+|_static|_glossary)$/ }
31
+ files_and_folders.reject!{ |path| name = File.basename( path ); name =~ /^(?:index\.[^.]+)$/ }
32
32
 
33
33
  # All files in the _templates directory should be ignored
34
- files_and_folders.reject!{ |f| f =~ /^_templates\b/ }
34
+ files_and_folders.reject!{ |f| f =~ /(?:^|\/)_/ }
35
+ files_and_folders.concat Dir[ '_static/**/*' ]
36
+ files_and_folders.concat Dir[ '_glossary/**/*' ]
35
37
 
36
38
  @global.ignore.as_list.each do |glob|
37
39
  files_and_folders = files_and_folders - Dir[glob]
@@ -101,32 +103,27 @@ class DocuBot::Bundle
101
103
  @file_links = Hash.new{ |h,k| h[k]=[] }
102
104
  @broken_links = Hash.new{ |h,k| h[k]=[] }
103
105
 
104
- page_by_html_path = {}
105
- page_by_orig_path = {}
106
- @pages.each do |page|
107
- page_by_html_path[page.html_path] = page
108
- page_by_orig_path[page.file] = page if page.file
109
- end
110
-
111
106
  Dir.chdir( @source ) do
112
107
  @pages.each do |page|
113
- page.nokodoc.xpath('.//a/@href').each do |href|
114
- href=href.content
108
+ # TODO: set the xpath to .//a/@href once this is fixed: http://github.com/tenderlove/nokogiri/issues/#issue/213
109
+ page.nokodoc.xpath('.//a').each do |a|
110
+ next unless href = a['href']
111
+ href = CGI.unescape(href)
115
112
  if href=~%r{^[a-z]+://}i
116
113
  @external_links[page] << href
117
114
  else
118
- id = href[/#[a-z][\w.:-]*/i]
119
- file = href.sub(/#.+/,'')
115
+ id = href[/#([a-z][\w.:-]*)?/i]
116
+ file = href.sub(/#.*/,'')
120
117
  path = file.empty? ? page.html_path : Pathname.new( File.dirname(page.html_path) / file ).cleanpath.to_s
121
- if target=page_by_html_path[path]
122
- if !id || target.nokodoc.at_css(id)
118
+ if target=@page_by_html_path[path]
119
+ if !id || id == "#" || target.nokodoc.at_css(id)
123
120
  @internal_links[page] << href
124
121
  else
125
122
  warn "Could not find internal link for #{id.inspect} on #{page.html_path.inspect}" if id
126
123
  @broken_links[page] << href
127
124
  end
128
125
  else
129
- if File.file?(path) && !page_by_orig_path[path]
126
+ if File.file?(path) && !@page_by_file_path[path]
130
127
  @file_links[page] << href
131
128
  else
132
129
  @broken_links[page] << href
@@ -32,7 +32,7 @@ class DocuBot::LinkTree::Node
32
32
  (File.dirname(link) / 'index.html')
33
33
  end
34
34
  #puts "Adding #{title.inspect} (#{link}) to hierarchy under #{parent_link}"
35
- parent = descendants.find{ |node| node.link==parent_link } || self
35
+ parent = descendants.find{ |n| n.link==parent_link } || self
36
36
  parent << node
37
37
  end
38
38
 
@@ -41,6 +41,10 @@ class DocuBot::LinkTree::Node
41
41
  @children << node
42
42
  end
43
43
 
44
+ def []( child_index )
45
+ @children[child_index]
46
+ end
47
+
44
48
  def children( parent_link=nil, &block )
45
49
  if parent_link
46
50
  root = find( parent_link )
@@ -60,19 +64,17 @@ class DocuBot::LinkTree::Node
60
64
  end
61
65
 
62
66
  def depth
63
- # Assuming no one is going to shuffle the nodes after placement
67
+ # Cached assuming no one is going to shuffle the nodes after placement
64
68
  @depth ||= ancestors.length
65
69
  end
66
70
 
67
- def root
68
- @root ||= "../" * (depth + ( leaf? ? 0 : 1 ))
69
- end
70
-
71
71
  def ancestors
72
- ancestors = []
72
+ # Cached assuming no one is going to shuffle the nodes after placement
73
+ return @ancestors if @ancestors
74
+ @ancestors = []
73
75
  node = self
74
- ancestors << node while node = node.parent
75
- ancestors.reverse!
76
+ @ancestors << node while node = node.parent
77
+ @ancestors.reverse!
76
78
  end
77
79
 
78
80
  def to_s
@@ -7,9 +7,18 @@ class DocuBot::Page
7
7
 
8
8
  attr_reader :type, :folder, :file, :meta, :nokodoc, :bundle
9
9
 
10
+ def self.title( source_path )
11
+ # File#basename might return the same string
12
+ title = File.basename( source_path ).dup
13
+ title.sub!(/\.[^.\s]+$/,'') unless File.directory?( source_path )
14
+ title.gsub!( '_', ' ' )
15
+ title.sub!( /^\d+\s/, '' )
16
+ title
17
+ end
18
+
10
19
  def initialize( bundle, source_path, title=nil )
11
20
  puts "#{self.class}.new( #{source_path.inspect}, #{title.inspect}, #{type.inspect} )" if $DEBUG
12
- title ||= File.basename( source_path ).sub( /\.[^.]+$/, '' ).gsub( '_', ' ' ).sub( /^\d+\s/, '' )
21
+ title ||= self.class.title( source_path )
13
22
  @bundle = bundle
14
23
  @file = source_path
15
24
  if File.directory?( @file )
@@ -25,4 +25,4 @@
25
25
  #glossary-defn
26
26
  #mainbody= contents
27
27
  #pagefooter
28
- Copyright ©#{Time.now.year}#{ " #{global.company}" if global.company? }.
28
+ Copyright ©#{Time.now.year}#{ " #{global.company}" if global.company }.
@@ -22,11 +22,11 @@
22
22
  %span.sep &gt;
23
23
  = page.title
24
24
  %h1#title= page.title
25
- - if page.author?
25
+ - if page.author
26
26
  #author= page.author
27
27
  #pagebody
28
28
  #glossary-box
29
29
  #mainbody= contents
30
30
  #pagefooter
31
- Copyright ©#{Time.now.year}#{ " #{global.company}" if global.company? }.
31
+ Copyright ©#{Time.now.year}#{ " #{global.company}" if global.company }.
32
32
  All Rights Reserved.
@@ -5,13 +5,41 @@ class DocuBot::CHMWriter < DocuBot::HTMLWriter
5
5
  handles_type :chm
6
6
 
7
7
  SUPPORT = DocuBot::Writer::DIR / 'chm'
8
+
9
+ attr_reader :chm_path, :hhc, :hhp, :hhk, :default_topic
10
+
11
+ def initialize( bundle )
12
+ super
13
+ @toc = @bundle.toc
14
+ @global = @bundle.global
15
+ if @global.default
16
+ # User tried to specify the default page
17
+ @default_topic = @bundle.pages_by_title[ @global.default ].first
18
+ if @default_topic
19
+ if @default_topic.file =~ /\s/
20
+ warn "'#{@global.default}' cannot be the default CHM page; it has a space in the file name."
21
+ @default_topic = nil
22
+ end
23
+ else
24
+ warn "The requested default page '#{@global.default}' could not be found. (Did the title change?)"
25
+ end
26
+ end
27
+ if @default_topic.nil?
28
+ @default_topic = @toc.descendants.find{ |node| node.link =~ /^\S+$/ }
29
+ @default_topic &&= @default_topic.page
30
+ end
31
+ warn "No default page is set, because no page has a path without spaces." unless @default_topic
32
+
33
+ end
8
34
 
9
35
  def write( destination=nil )
10
36
  super( nil )
37
+
11
38
  lap = Time.now
12
- @chm_path = destination || "#{@bundle.source}.chm"
13
- @toc = @bundle.toc
14
- @global = @bundle.global
39
+ @chm_path = File.expand_path( destination || "#{@bundle.source}.chm" )
40
+ @hhc = @chm_path.sub( /[^.]+$/, 'hhc' )
41
+ @hhp = @chm_path.sub( /[^.]+$/, 'hhp' )
42
+ @hhk = @chm_path.sub( /[^.]+$/, 'hhk' )
15
43
  write_hhc
16
44
  write_hhk
17
45
  write_hhp
@@ -55,37 +83,18 @@ class DocuBot::CHMWriter < DocuBot::HTMLWriter
55
83
  end
56
84
 
57
85
  def write_hhc
58
- @hhc = @chm_path.sub( /[^.]+$/, 'hhc' )
59
86
  File.open( @hhc, 'w' ) do |f|
60
87
  f << ERB.new( IO.read( SUPPORT / 'hhc.erb' ) ).result( binding )
61
88
  end
62
89
  end
63
90
 
64
91
  def write_hhp
65
- @hhp = @chm_path.sub( /[^.]+$/, 'hhp' )
66
-
67
- if @global.default
68
- # User tried to specify the default page
69
- @default_topic = @bundle.pages_by_title[ @global.default ].first
70
- if @default_topic
71
- if @default_topic.file =~ /\s/
72
- warn "'#{@toc.default}' cannot be the default CHM page; it has a space in the file name."
73
- @default_topic = nil
74
- end
75
- else
76
- warn "The requested default page '#{@global.default}' could not be found. (Did the title change?)"
77
- end
78
- end
79
- @default_topic ||= @toc.descendants.find{ |node| node.link =~ /^\S+$/ }
80
- warn "No default page is set, because no page has a path without spaces." unless @default_topic
81
-
82
92
  File.open( @hhp, 'w' ) do |f|
83
93
  f << ERB.new( IO.read( SUPPORT / 'hhp.erb' ) ).result( binding )
84
94
  end
85
95
  end
86
96
 
87
97
  def write_hhk
88
- @hhk = @chm_path.sub( /[^.]+$/, 'hhk' )
89
98
  File.open( @hhk, 'w' ) do |f|
90
99
  f << ERB.new( IO.read( SUPPORT / 'hhk.erb' ) ).result( binding )
91
100
  end
@@ -53,7 +53,7 @@ class DocuBot::HTMLWriter < DocuBot::Writer
53
53
  :page => node.page,
54
54
  :contents => contents,
55
55
  :global => @bundle.global,
56
- :root => node.root,
56
+ :root => node.page.root,
57
57
  :breadcrumb => node.ancestors,
58
58
  :custom_js => custom_js,
59
59
  :custom_css => custom_css
@@ -1,5 +1,6 @@
1
1
  $: << File.join( File.dirname(__FILE__), '..' )
2
2
  $: << File.join( File.dirname(__FILE__), '..', 'lib' )
3
+ require 'rubygems'
3
4
  require 'minitest/spec'
4
5
  require 'docubot'
5
6
  SAMPLES = File.dirname(__FILE__)/'samples'
@@ -109,6 +109,7 @@ describe "Gathering links" do
109
109
  ../root.html inner1.html ../sub2.html ../sub2/inner2.html
110
110
  ../sub1/index.html index.html
111
111
  ]
112
+ known_internal << "one two three.html"
112
113
  all_internal = @bundle.internal_links.values.flatten
113
114
  known_internal.each do |link|
114
115
  all_internal.must_include link
@@ -122,6 +123,15 @@ describe "Gathering links" do
122
123
  all_file_links.must_include link
123
124
  end
124
125
  end
126
+
127
+ it "should identify valid links to internal files at the root" do
128
+ @bundle = DocuBot::Bundle.new SAMPLES/'hierarchy'
129
+ known_file_links = %w[ main.css ../main.css ../../main.css ../../../main.css ]
130
+ all_file_links = @bundle.file_links.values.flatten
131
+ known_file_links.each do |link|
132
+ all_file_links.must_include link
133
+ end
134
+ end
125
135
 
126
136
  it "should identify and warn about invalid sub-page anchors" do
127
137
  known_broken = %w[ #GORKBO ../root.html#GORKBO ]
@@ -327,7 +337,4 @@ describe "Page attributes" do
327
337
  end
328
338
  end
329
339
 
330
- it "does something" do
331
-
332
- end
333
340
  end
@@ -0,0 +1,44 @@
1
+ #encoding: UTF-8
2
+ require File.join(File.dirname(__FILE__), "_helper")
3
+
4
+ describe "CHM Writer default topic" do
5
+ it "should pick the first valid page as the default if not specified" do
6
+ out, err = capture_io do
7
+ @bundle = DocuBot::Bundle.new( SAMPLES/'titles' )
8
+ @writer = DocuBot::CHMWriter.new( @bundle )
9
+ end
10
+ @writer.default_topic.must_be_kind_of DocuBot::Page
11
+ # The page 'First One' can't be used as a default because it has a space in the file name
12
+ @writer.default_topic.must_equal @bundle.pages.find{ |page| page.title=='Second One' }
13
+ end
14
+
15
+ it "should use a valid specified default page" do
16
+ out, err = capture_io do
17
+ @bundle = DocuBot::Bundle.new( SAMPLES/'default_topic' )
18
+ @writer = DocuBot::CHMWriter.new( @bundle )
19
+ end
20
+ @writer.default_topic.must_be_kind_of DocuBot::Page
21
+ @writer.default_topic.must_equal @bundle.pages.find{ |page| page.title=='Awesomesauce' }
22
+ end
23
+
24
+ it "should warn about an invalid default topic" do
25
+ out, err = capture_io do
26
+ @bundle = DocuBot::Bundle.new( SAMPLES/'attributes' )
27
+ @writer = DocuBot::CHMWriter.new( @bundle )
28
+ end
29
+ err.must_include "All About Mr. Friggles"
30
+ @writer.default_topic.must_be_kind_of DocuBot::Page
31
+ @writer.default_topic.must_equal @bundle.pages.find{ |page| page.title=='defaults' }
32
+ end
33
+
34
+ it "should warn about a default topic with space in the file name" do
35
+ out, err = capture_io do
36
+ @bundle = DocuBot::Bundle.new( SAMPLES/'default_topic_2' )
37
+ @writer = DocuBot::CHMWriter.new( @bundle )
38
+ end
39
+ err.must_include "Excellence"
40
+ @writer.default_topic.must_be_kind_of DocuBot::Page
41
+ @writer.default_topic.must_equal @bundle.pages.find{ |page| page.title=='Awesomesauce' }
42
+ end
43
+
44
+ end
@@ -10,7 +10,7 @@ describe "Validating page titles" do
10
10
  @toc.children.each{ |node| node.page.bundle.must_equal @bundle }
11
11
  end
12
12
  it "ignores leading numbers for the titles (unless all numbers)" do
13
- @toc.children.each{ |node| node.page.title.must_match /(?:^\D|^\d+$)/ }
13
+ @toc.children.each{ |node| node.page.title.must_match /(?:^\D|^\d+$|^\d+(?:.\d+)+.*$)/ }
14
14
  end
15
15
  it "honors pages specifying their title" do
16
16
  @toc.children.find{ |page| page.title =~ /renamed/i }.must_be_nil
@@ -24,6 +24,10 @@ describe "Validating page titles" do
24
24
  it "doesn't change names of files that are all numbers" do
25
25
  @toc.children.find{ |node| node.page.title == '911' }.wont_be_nil
26
26
  end
27
+ it "doesn't change names of files that lead with dotted numerics" do
28
+ @toc.children.find{ |node| node.page.title == '6.1 More' }.wont_be_nil
29
+ @toc.children.find{ |node| node.page.title == '6.2 Even More' }.wont_be_nil
30
+ end
27
31
  end
28
32
 
29
33
  describe "Traversing page hierarchy" do
@@ -34,7 +38,7 @@ describe "Traversing page hierarchy" do
34
38
  end
35
39
  it "should have #pages returning an array" do
36
40
  @bundle.pages.must_be_kind_of Array
37
- @bundle.pages.length.must_equal 6
41
+ @bundle.pages.length.must_equal 7
38
42
  end
39
43
  it "every item should be a Page" do
40
44
  @bundle.pages.each do |page|
@@ -43,6 +47,32 @@ describe "Traversing page hierarchy" do
43
47
  end
44
48
  end
45
49
 
50
+ describe "Page Roots" do
51
+ before do
52
+ @out, @err = capture_io do
53
+ @bundle = DocuBot::Bundle.new( SAMPLES/'hierarchy' )
54
+ end
55
+ end
56
+
57
+ it "should not find any missing links creating the bundle" do
58
+ # The bundle uses root in the page templates extensively
59
+ @err.must_be_empty
60
+ end
61
+
62
+ it "should have an empty root for pages at the root" do
63
+ @bundle.page_by_html_path['main.html'].root.must_equal ""
64
+ end
65
+
66
+ it "should have a root appropriate to the HTML depth" do
67
+ @bundle.page_by_html_path['1/page.html'].root.must_equal "../"
68
+ @bundle.page_by_html_path['1/index.html'].root.must_equal "../"
69
+ @bundle.page_by_html_path['1/1.1/page.html'].root.must_equal "../../"
70
+ @bundle.page_by_html_path['1/1.1/index.html'].root.must_equal "../../"
71
+ @bundle.page_by_html_path['1/1.1/1.1.1/page.html'].root.must_equal "../../../"
72
+ @bundle.page_by_html_path['1/1.1/1.1.1/index.html'].root.must_equal "../../../"
73
+ end
74
+ end
75
+
46
76
  describe "Testing user variables" do
47
77
  it "should identify if a variable has been defined"
48
78
  it "should inherit variables from the global"
@@ -0,0 +1,3 @@
1
+ title: Excellence
2
+ +++
3
+ This is the first page.
@@ -0,0 +1,3 @@
1
+ title: Awesomesauce
2
+ +++
3
+ This is the second page.
@@ -0,0 +1,2 @@
1
+ default: Awesomesauce
2
+ +++
@@ -0,0 +1,3 @@
1
+ title: Excellence
2
+ +++
3
+ This is the first page.
@@ -0,0 +1,3 @@
1
+ title: Awesomesauce
2
+ +++
3
+ This is the second page.
@@ -0,0 +1,2 @@
1
+ default: Excellence
2
+ +++
@@ -0,0 +1 @@
1
+ %a(href="#{root}main.css") Linked
@@ -0,0 +1,3 @@
1
+ title:1.1.1p
2
+ +++
3
+ %a(href="#{root}main.css") Linked
@@ -0,0 +1,3 @@
1
+ title:1.1p
2
+ +++
3
+ %a(href="#{root}main.css") Linked
@@ -0,0 +1,3 @@
1
+ title:1p
2
+ +++
3
+ %a(href="#{root}main.css") Linked
@@ -0,0 +1,3 @@
1
+ title: 2.1.1p
2
+ +++
3
+ %a(href="#{root}main.css") Linked
@@ -0,0 +1 @@
1
+ %a(href="#{root}main.css") Linked
@@ -0,0 +1,3 @@
1
+ title: 2.1p
2
+ +++
3
+ %a(href="#{root}main.css") Linked
@@ -0,0 +1,3 @@
1
+ title:2p
2
+ +++
3
+ %a(href="#{root}main.css") Linked
@@ -0,0 +1 @@
1
+ body { background:red }
@@ -0,0 +1 @@
1
+ %a(href="#{root}main.css") Linked
@@ -0,0 +1,2 @@
1
+ template: toc
2
+ +++
@@ -0,0 +1 @@
1
+ one two three
@@ -1,3 +1,4 @@
1
1
  [External](HTTP://NONEXISTENT.SITE)
2
2
  [File](sub2/bozo.bin)
3
3
  [BROKEN](sub2/GORKBO.bin)
4
+ [SPACES](one%20two%20three.html)
@@ -1,5 +1,5 @@
1
1
  #doubler
2
- - if page.multiplier?
2
+ - if page.multiplier
3
3
  - page.multiplier.to_i.times do
4
4
  = contents
5
5
  - else
@@ -104,4 +104,26 @@ describe "Sub-page Links in the Table of Contents" do
104
104
  kid.link.must_equal 'explicit2.html#h0'
105
105
  kid.page.must_equal e2.page
106
106
  end
107
+ end
108
+
109
+ describe "ToC with Deep Hierarchy" do
110
+ before do
111
+ @bundle = DocuBot::Bundle.new SAMPLES/'hierarchy'
112
+ end
113
+
114
+ it "should match the expected hierarchy" do
115
+ @bundle.toc[0].page.title.must_equal '1'
116
+ @bundle.toc[0][0].page.title.must_equal '1.1'
117
+ @bundle.toc[0][0][0].page.title.must_equal '1.1.1'
118
+ @bundle.toc[0][0][0][0].page.title.must_equal '1.1.1p'
119
+ @bundle.toc[0][0][1].page.title.must_equal '1.1p'
120
+ @bundle.toc[0][1].page.title.must_equal '1p'
121
+ @bundle.toc[1].page.title.must_equal '2'
122
+ @bundle.toc[1][0].page.title.must_equal '2.1'
123
+ @bundle.toc[1][0][0].page.title.must_equal '2.1.1'
124
+ @bundle.toc[1][0][0][0].page.title.must_equal '2.1.1p'
125
+ @bundle.toc[1][0][1].page.title.must_equal '2.1p'
126
+ @bundle.toc[1][1].page.title.must_equal '2p'
127
+ @bundle.toc[2].page.title.must_equal 'main'
128
+ end
107
129
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docubot
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.4"
4
+ version: "0.5"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Kistner
@@ -150,6 +150,7 @@ files:
150
150
  - lib/docubot/writers/html.rb
151
151
  - lib/docubot.rb
152
152
  - spec/bundle.rb
153
+ - spec/chm.rb
153
154
  - spec/command.rb
154
155
  - spec/converters.rb
155
156
  - spec/global.rb
@@ -168,6 +169,12 @@ files:
168
169
  - spec/samples/collisions/page2.txt
169
170
  - spec/samples/collisions/page3.bin
170
171
  - spec/samples/collisions/page3.md
172
+ - spec/samples/default_topic/Alpha.md
173
+ - spec/samples/default_topic/index.txt
174
+ - spec/samples/default_topic/Zeta.md
175
+ - spec/samples/default_topic_2/Alpha Space.md
176
+ - spec/samples/default_topic_2/index.txt
177
+ - spec/samples/default_topic_2/Zeta.md
171
178
  - spec/samples/files/another.md
172
179
  - spec/samples/files/BUILDING.txt
173
180
  - spec/samples/files/common.css
@@ -187,7 +194,19 @@ files:
187
194
  - spec/samples/glossary/_glossary/complex.haml
188
195
  - spec/samples/glossary/_glossary/project_x.md
189
196
  - spec/samples/glossary/_glossary/Simple Term.md
197
+ - spec/samples/hierarchy/1/1.1/1.1.1/index.haml
198
+ - spec/samples/hierarchy/1/1.1/1.1.1/page.haml
199
+ - spec/samples/hierarchy/1/1.1/page.haml
200
+ - spec/samples/hierarchy/1/page.haml
201
+ - spec/samples/hierarchy/2/2.1/2.1.1/page.haml
202
+ - spec/samples/hierarchy/2/2.1/index.haml
203
+ - spec/samples/hierarchy/2/2.1/page.haml
204
+ - spec/samples/hierarchy/2/page.haml
205
+ - spec/samples/hierarchy/main.css
206
+ - spec/samples/hierarchy/main.haml
207
+ - spec/samples/hierarchy/toc.md
190
208
  - spec/samples/links/index.txt
209
+ - spec/samples/links/one two three.textile
191
210
  - spec/samples/links/root.md
192
211
  - spec/samples/links/sub1/inner1.md
193
212
  - spec/samples/links/sub2/bozo.bin
@@ -211,6 +230,7 @@ files:
211
230
  - spec/samples/titles/3_renamed.txt
212
231
  - spec/samples/titles/4 Fourth_One.txt
213
232
  - spec/samples/titles/5_Fifth One.txt
233
+ - spec/samples/titles/6.1 More.md
214
234
  - spec/samples/titles/911.txt
215
235
  - spec/samples/titles/index.txt
216
236
  - spec/templates.rb