markdown_helper 2.0.0 → 2.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.
Files changed (55) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile.lock +1 -1
  3. data/README.md +74 -208
  4. data/Rakefile +0 -1
  5. data/lib/markdown_helper.rb +115 -248
  6. data/lib/markdown_helper/version.rb +1 -1
  7. data/markdown/readme/README.template.md +43 -101
  8. data/markdown/readme/include.md +4 -0
  9. data/markdown/readme/include_usage.rb +1 -2
  10. data/markdown/use_cases/Rakefile +28 -31
  11. data/markdown/use_cases/include_files/diagnose_circular_includes/diagnose_circular_includes.err +1 -1
  12. data/markdown/use_cases/include_files/diagnose_circular_includes/use_case.md +1 -1
  13. data/markdown/use_cases/include_files/diagnose_circular_includes/{diagnose_circular_includes.rb → use_case_builder.rb} +1 -2
  14. data/markdown/use_cases/include_files/diagnose_missing_includee/diagnose_missing_includee.err +1 -1
  15. data/markdown/use_cases/include_files/diagnose_missing_includee/use_case.md +1 -1
  16. data/markdown/use_cases/include_files/diagnose_missing_includee/{diagnose_missing_includee.rb → use_case_builder.rb} +1 -2
  17. data/markdown/use_cases/include_files/include_code_block/{include_code_block.rb → use_case_builder.rb} +1 -2
  18. data/markdown/use_cases/include_files/include_generated_text/{include_generated_text.rb → use_case_builder.rb} +1 -2
  19. data/markdown/use_cases/include_files/include_highlighted_code/{include_highlighted_code.rb → use_case_builder.rb} +1 -2
  20. data/markdown/use_cases/include_files/include_markdown/{include_markdown.rb → use_case_builder.rb} +1 -2
  21. data/markdown/use_cases/include_files/include_page_toc/included.md +48 -0
  22. data/markdown/use_cases/include_files/include_page_toc/includer.md +16 -0
  23. data/markdown/use_cases/include_files/include_page_toc/markdown_0.md +8 -0
  24. data/markdown/use_cases/include_files/include_page_toc/markdown_1.md +8 -0
  25. data/markdown/use_cases/include_files/include_page_toc/use_case.md +212 -0
  26. data/markdown/use_cases/include_files/include_page_toc/use_case_builder.rb +121 -0
  27. data/markdown/use_cases/include_files/include_page_toc/use_case_template.md +46 -0
  28. data/markdown/use_cases/include_files/include_text_as_comment/{include_text_as_comment.rb → use_case_builder.rb} +1 -2
  29. data/markdown/use_cases/include_files/include_text_as_pre/{include_text_as_pre.rb → use_case_builder.rb} +1 -2
  30. data/markdown/use_cases/include_files/include_use_case.rb +2 -8
  31. data/markdown/use_cases/include_files/include_with_added_comments/{include_with_added_comments.rb → use_case_builder.rb} +2 -3
  32. data/markdown/use_cases/include_files/nest_inclusions/{nest_inclusions.rb → use_case_builder.rb} +1 -2
  33. data/markdown/use_cases/include_files/reuse_text/{reuse_text.rb → use_case_builder.rb} +3 -2
  34. data/markdown/use_cases/structure.md +10 -0
  35. data/markdown/use_cases/tables_of_contents/create_and_include_page_toc/included.md +44 -0
  36. data/markdown/use_cases/tables_of_contents/create_and_include_page_toc/page.md +7 -7
  37. data/markdown/use_cases/tables_of_contents/create_and_include_page_toc/toc.md +7 -7
  38. data/markdown/use_cases/tables_of_contents/create_and_include_page_toc/{create_and_include_page_toc.rb → use_case_builder.rb} +1 -2
  39. data/markdown/use_cases/tables_of_contents/create_page_toc_use_case.rb +1 -1
  40. data/markdown/use_cases/use_case.rb +14 -15
  41. data/markdown/use_cases/use_cases.md +2 -4
  42. data/markdown_helper.gemspec +0 -2
  43. metadata +24 -29
  44. data/bin/_resolve +0 -46
  45. data/bin/resolve +0 -49
  46. data/bin/usage/resolve.txt +0 -14
  47. data/images/html.png +0 -0
  48. data/markdown/readme/resolve_usage.rb +0 -12
  49. data/markdown/use_cases/include_files/diagnose_missing_includee/included.md +0 -1
  50. data/markdown/use_cases/resolve/gemify_images/gemify_images.md +0 -11
  51. data/markdown/use_cases/resolve/gemify_images/gemify_images.rb +0 -68
  52. data/markdown/use_cases/resolve/gemify_images/relative_image.md +0 -1
  53. data/markdown/use_cases/resolve/gemify_images/resolved_image.md +0 -1
  54. data/markdown/use_cases/resolve/gemify_images/template.md +0 -15
  55. data/markdown/use_cases/resolve/resize_images/template.md +0 -8
@@ -1,3 +1,3 @@
1
1
  class MarkdownHelper
2
- VERSION = '2.0.0'
2
+ VERSION = '2.1.0'
3
3
  end
@@ -1,37 +1,32 @@
1
1
  # Markdown Helper
2
2
 
3
- ![Gem Version](https://badge.fury.io/rb/markdown_helper.svg) [Visit gem markdown_helper](https://rubygems.org/gems/markdown_helper)
4
-
5
- ## Deprecated
6
-
7
- - Method ```:resolve```.
8
- - Command ```markdown_helper resolve```.
3
+ [![Gem](https://img.shields.io/gem/v/markdown_helper.svg?style=flat)](http://rubygems.org/gems/markdown_helper "View this project in Rubygems")
9
4
 
10
5
  ## What's New?
11
6
 
12
- Treatments for included file:
7
+ Page TOC (table of contents) is improved:
13
8
 
14
- - Support is added for including a file as a comment. See the [use case](markdown/use_cases/include_files/include_text_as_comment/use_case.md#include-text-as-comment).
15
- - Support is added for including a file as pre-formatted. See the [use case](markdown/use_cases/include_files/include_text_as_pre/use_case.md#include-text-as-pre).
9
+ - **Old**: You would first run the markdown helper to generate a page TOC, then run the helper a second time to include the page TOC where you want it.
10
+ - **New**: You specify the site for the page TOC in the page itself, and the page TOC is automatically generated and inserted there. See the [use case](markdown/use_cases/include_files/include_page_toc/use_case.md#include-page-toc)
16
11
 
17
- (The new version, 2.0.0, is not a major increment over version 1.9.9. Numbers just ran out.)
12
+ The old way is now deprecated.
13
+
14
+ @[:page_toc](## Contents)
18
15
 
19
16
  ## What's a Markdown Helper?
20
17
 
21
18
  Class <code>MarkdownHelper</code> supports:
22
19
 
23
20
  * [File inclusion](#file-inclusion): to include text from other files, as code-block or markdown.
24
- * [Page TOC](#page-toc): to create the table of contents for a markdown page.
25
- * [Image path resolution](#image-path-resolution): to resolve relative image paths to absolute URL paths (so they work even in gem documentation). [Deprecated]**
26
- * [Image attributes](#image-attributes): image attributes are passed through to an HTML <code>img</code> tag. [Deprecated]**
21
+ * [Page TOC](#page-toc): to create and insert the table of contents for a markdown page.
27
22
 
28
23
  ## How It Works
29
24
 
30
25
  The markdown helper is a preprocessor that reads a markdown document (template) and writes another markdown document.
31
26
 
32
- The template can contain certain instructions that call for file inclusions and image resolutions.
27
+ The template can contain certain instructions that call for file inclusions.
33
28
 
34
- ### Restriction: ```git``` Only
29
+ ### Restriction: ```git``` Only
35
30
 
36
31
  The helper works only in a ```git``` project: the working directory or one of ita parents must be a git directory -- one in which command ```git rev-parse --git-dir``` succeeds.
37
32
 
@@ -41,11 +36,10 @@ By default, the output markdown has added comments that show:
41
36
 
42
37
  * The path to the template file.
43
38
  * The path to each included file.
44
- * The image description (original) for each resolved image file path. [Deprecated]**
45
39
 
46
40
  You can suppress those comments using the <code>pristine</code> option.
47
41
 
48
- ## File Inclusion
42
+ ## File Inclusion
49
43
 
50
44
  <img src="images/include.png" alt="include_icon" width="50">
51
45
 
@@ -53,31 +47,41 @@ This markdown helper enables file inclusion in GitHub markdown.
53
47
 
54
48
  (Actually, this README file itself is built using file inclusion.)
55
49
 
56
- Use the markdown helper to merge external files into a markdown (</code>.md</code>) file.
50
+ See all [use cases](markdown/use_cases/use_cases.md#use-cases).
51
+
52
+ ### Re-use Text
53
+
54
+ Keep your markdown DRY (Don't Repeat Yourself) by re-using text. See the [use case](markdown/use_cases/include_files/reuse_text/use_case.md#reuse-text).
55
+
56
+ ### Include Generated Text
57
+
58
+ In particular, you can include text that's built during your "readme build." See the [use case](markdown/use_cases/include_files/include_generated_text/use_case.md#include-generated-text).
57
59
 
58
- See the [use cases](markdown/use_cases/use_cases.md#use-cases).
60
+ ### Nest Inclusions
61
+
62
+ You can nest inclusions. See the [use case](markdown/use_cases/include_files/nest_inclusions/use_case.md#nest-inclusions).
59
63
 
60
64
  ### Merged Text Formats
61
65
 
66
+ #### Markdown
67
+
68
+ You can include text that is to be treated simply as markdown. See the [use case](markdown/use_cases/include_files/include_markdown/use_case.md#include-markdown).
69
+
62
70
  #### Highlighted Code Block
63
71
 
64
- @[ruby](include.rb)
72
+ You can include a code block that's to be highlighted. See the [use case](markdown/use_cases/include_files/include_highlighted_code/use_case.md#include-highlighted-code).
65
73
 
66
74
  #### Plain Code Block
67
75
 
68
- @[:code_block](include.rb)
69
-
70
- [Note: In the gem documentation, RubyDoc.info chooses to highlight this code block regardless. Go figure.]
76
+ You can also include a code block without highlighting. See the [use case](markdown/use_cases/include_files/include_code_block/use_case.md#include-code-block).
71
77
 
72
78
  #### Comment
73
79
 
74
- Comment text is written into the output between the comment delimiters <code>\<!--</code> and <code>--></code>
75
-
76
- #### Markdown
80
+ You can include text that's to become a comment in the markdown. See the [use case](markdown/use_cases/include_files/include_text_as_comment/use_case.md#include-text-as-comment).
77
81
 
78
- Markdown text is included unadorned, and will be processed on GitHub as markdown.
82
+ ### Pre-Formattted Text
79
83
 
80
- The markdown text is itself scanned for nested includes.
84
+ You can include text that's pre-formatted. See the [use case](markdown/use_cases/include_files/include_text_as_pre/use_case.md#include-text-as-pre).
81
85
 
82
86
  ### Usage
83
87
 
@@ -101,93 +105,31 @@ where:
101
105
  * Highlighting mode such as <code>[ruby]</code>, to include a highlighted code block. This can be any Ace mode mentioned in [GitHub Languages](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml).
102
106
  * <code>[:code_block]</code>, to include a plain code block.
103
107
  * <code>[:markdown]</code>, to include text markdown (to be rendered as markdown).
108
+ * <code>[:comment]</code>, to insert text as a markdown comment.
109
+ * <code>[:pre]</code>, to include pre-formatted text.
104
110
  * *relative_file_path* points to the file to be included.
105
111
 
106
112
  ##### Example Include Descriptions
107
113
 
108
114
  @[code_block](include.md)
109
115
 
110
- ## Page TOC
111
-
112
- The markdown helper can create the table of contents for a markdown page.
113
- - The TOC is a tree of links to the headers on the page, suitable for inclusion with the page itself.
114
- - See the [use case](markdown/use_cases/tables_of_contents/create_and_include_page_toc/use_case.md#create-and-include-page-toc).
115
-
116
-
117
-
118
- ## Image Path Resolution **[Deprecated]**
119
-
120
- <img src="images/image.png" alt="image_icon" width="50">
121
-
122
- This markdown helper enables image path resolution in GitHub markdown.
123
-
124
- (Actually, this README file itself is built using image path resolution.)
125
-
126
- Use the markdown helper to resolve image relative paths in a markdown (</code>.md</code>) file.
127
-
128
- This matters because when markdown becomes part of a Ruby gem, its images will have been relocated in the documentation at RubyDoc.info, breaking the relative paths. The resolved (absolute) urls, however, will still be valid.
129
-
130
- ### Usage
131
-
132
- #### CLI
133
-
134
- @[:code_block](../../bin/usage/resolve.txt)
135
-
136
- #### API
137
-
138
- @[ruby](resolve_usage.rb)
139
-
140
- #### Image Descriptions
141
-
142
- Specify each image at the beginning of a line via an *image description*, which has the form:
143
-
144
- <code>![*alt_text*]\(</code>*relative_file_path* <code>|</code> *attributes*<code>)</code>
116
+ #### Page TOC
145
117
 
146
- where:
147
-
148
- * *alt_text* is the usual alt text for an HTML image.
149
- * *relative_file_path* points to the file to be included.
150
- * *attributes* specify image attributes. See [Image Attributes](#image-attributes) below.
151
-
152
- ##### Example Image Descriptions
118
+ You can specify the location for an automatically-generated page TOC (table of cotents). See the [use case](markdown/use_cases/include_files/include_page_toc/use_case.md#include-page-toc).
153
119
 
154
- @[code_block](resolve.md)
120
+ #### Diagnostics
155
121
 
156
- ## Image Attributes
122
+ ##### "Noisy" (Not Pristine)
157
123
 
158
- <img src="images/html.png" alt="html_icon" width="50">
124
+ By default, the markdown helper inserts comments indicating inclusions. See the [use case](markdown/use_cases/include_files/include_with_added_comments/use_case.md#include-with-added-comments).
159
125
 
160
- This markdown helper enables HTML image attributes in GitHub markdown [image descriptions](https://github.github.com/gfm/#image-description).
126
+ ##### Missing Includee File
161
127
 
162
- (Actually, this README file itself is built using image attributes.)
163
-
164
- Use the markdown helper to add image attributes in a markdown (</code>.md</code>) file.
165
-
166
- ### Usage
167
-
168
- #### CLI
169
-
170
- @[:code_block](../../bin/usage/resolve.txt)
171
-
172
- #### API
173
-
174
- @[ruby](resolve_usage.rb)
175
-
176
- #### Image Descriptions
177
-
178
- Specify each image at the beginning of a line via an *image description*, which has the form:
179
-
180
- <code>![*alt_text*]\(</code>*relative_file_path* <code>|</code> *attributes*<code>)</code>
181
-
182
- where:
183
-
184
- * *alt_text* is the usual alt text for an HTML image.
185
- * *relative_file_path* points to the file to be included.
186
- * *attributes* are whitespace-separated name-value pairs in the form *name*<code>=</code>*value*. These are passed through to the generated <code>img</code> HTML element.
128
+ A missing includee file causes an exception that shows an inclusion backtrace. See the [use case](markdown/use_cases/include_files/diagnose_missing_includee/use_case.md#diagnose-missing-includee).
187
129
 
188
- ##### Example Image Descriptions
130
+ ##### Circular Inclusion
189
131
 
190
- @[code_block](resolve.md)
132
+ A circular inclusion causes an exception that shows an inclusion backtrace. See the [use case](markdown/use_cases/include_files/diagnose_circular_includes/use_case.md#diagnose-circular-includes).
191
133
 
192
134
  ## What Should Be Next?
193
135
 
@@ -3,3 +3,7 @@
3
3
  @[:code_block](my_language.xyzzy)
4
4
 
5
5
  @[:markdown](my_markdown.md)
6
+
7
+ @[:comment](my_comment.txt)
8
+
9
+ @[:pre](my_preformatted.txt)
@@ -2,9 +2,8 @@ require 'markdown_helper'
2
2
 
3
3
  template_file_path = 'highlight_ruby_template.md'
4
4
  markdown_file_path = 'highlighted_ruby.md'
5
- markdown_helper = MarkdownHelper.new
6
- markdown_helper.include(template_file_path, markdown_file_path)
7
5
  # Pristine.
6
+ markdown_helper = MarkdownHelper.new
8
7
  markdown_helper.pristine = true
9
8
  markdown_helper.include(template_file_path, markdown_file_path)
10
9
  # Also pristine.
@@ -22,24 +22,23 @@ EOT
22
22
  use_case_dirs = {
23
23
  :include_files => %w/
24
24
  reuse_text
25
- include_with_added_comments
26
25
  nest_inclusions
27
26
  include_markdown
28
27
  include_code_block
29
28
  include_highlighted_code
29
+ include_page_toc
30
30
  include_text_as_comment
31
31
  include_text_as_pre
32
32
  include_generated_text
33
+ include_with_added_comments
33
34
  diagnose_missing_includee
34
35
  diagnose_circular_includes
35
36
  /,
36
- :tables_of_contents => %w/
37
- create_and_include_page_toc
38
- /,
39
- # :resolve => %w/
40
- # resize_images
41
- # resolve_with_added_comments
42
- # gemify_images
37
+
38
+ # include_page_toc
39
+
40
+ # :tables_of_contents => %w/
41
+ # create_and_include_page_toc
43
42
  # /,
44
43
  }
45
44
  use_case_dirs.each_pair do |section, dir_names|
@@ -52,40 +51,38 @@ EOT
52
51
  EOT
53
52
  ) unless dir_names.empty?
54
53
 
54
+ # Be careful with use case that has a backtrace.
55
55
  backtrace_cases = %w/
56
56
  diagnose_missing_includee
57
57
  diagnose_circular_includes
58
58
  /
59
+
60
+ # Each use case is in a separate directory.
59
61
  dir_names.each do |dir_name|
60
62
  Dir.chdir("#{section}/#{dir_name}") do
61
- # If the dir has a Ruby file, run it.
62
- ruby_file_path = "#{dir_name}.rb"
63
- if File.exist?(ruby_file_path)
64
- class_name = camelize(dir_name)
65
- command = "ruby -I . -r #{dir_name} -e #{class_name}.build"
66
- if backtrace_cases.include?(dir_name)
67
- command += " 2> #{dir_name}.err"
68
- begin
69
- system(command)
70
- rescue
71
- #
72
- ensure
73
- end
74
- else
63
+
64
+ # There should be a conventionally-named ruby file to build the use case.
65
+ fail dir_name unless File.exist?(UseCase::BUILDER_FILE_NAME)
66
+
67
+ # There should be a conventionally-named use-case template.
68
+ fail dir_name unless File.exist?(UseCase::TEMPLATE_FILE_NAME)
69
+
70
+ class_name = camelize(dir_name)
71
+ command = "ruby -I . -r #{UseCase::BUILDER_FILE_NAME} -e #{class_name}.build"
72
+ if backtrace_cases.include?(dir_name)
73
+ command += " 2> #{dir_name}.err"
74
+ begin
75
75
  system(command)
76
+ rescue
77
+ #
76
78
  end
79
+ else
80
+ system(command)
77
81
  end
78
82
 
79
- # If the dir has a use case file, link to it.
80
- use_case_file_path = 'use_case.md'
81
- unless File.exist?(use_case_file_path)
82
- message = "File #{dir_name}/use_case.md does not exist"
83
- warn(message)
84
- next
85
- end
86
- title_line = File.open(use_case_file_path).grep(/^#/).first.chomp
83
+ title_line = File.open(UseCase::TEMPLATE_FILE_NAME).grep(/^#/).first.chomp
87
84
  title = title_line.split(/\s/, 2).pop
88
- use_case_file_name = File.basename(use_case_file_path)
85
+ use_case_file_name = File.basename(UseCase::USE_CASE_FILE_NAME)
89
86
  use_case_anchor = dir_name.gsub('_', '-')
90
87
  use_case_relative_url = File.join(
91
88
  section.to_s,
@@ -1,4 +1,4 @@
1
- include.rb: Includes are circular: (MarkdownHelper::CircularIncludeError)
1
+ C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/markdown_helper-2.1.0/bin/_include: Includes are circular: (MarkdownHelper::CircularIncludeError)
2
2
  Backtrace (innermost include first):
3
3
  Level 0:
4
4
  Includer:
@@ -69,7 +69,7 @@ Here's the resulting backtrace of inclusions.
69
69
 
70
70
  ```diagnose_circular_includes.err```:
71
71
  ```
72
- include.rb: Includes are circular: (MarkdownHelper::CircularIncludeError)
72
+ C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/markdown_helper-2.1.0/bin/_include: Includes are circular: (MarkdownHelper::CircularIncludeError)
73
73
  Backtrace (innermost include first):
74
74
  Level 0:
75
75
  Includer:
@@ -4,8 +4,7 @@ class DiagnoseCircularIncludes < IncludeUseCase
4
4
 
5
5
  def self.build
6
6
 
7
- use_case_name = File.basename(__FILE__, '.rb')
8
- use_case = self.new(use_case_name)
7
+ use_case = self.new
9
8
 
10
9
  use_case.write_ruby_file(pristine = true)
11
10
 
@@ -1,4 +1,4 @@
1
- include.rb: Could not read include file, (MarkdownHelper::UnreadableInputError)
1
+ C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/markdown_helper-2.1.0/bin/_include: Could not read include file, (MarkdownHelper::UnreadableInputError)
2
2
  Backtrace (innermost include first):
3
3
  Level 0:
4
4
  Includer:
@@ -71,7 +71,7 @@ Here's the resulting backtrace of inclusions.
71
71
 
72
72
  ```diagnose_missing_includee.err```:
73
73
  ```
74
- include.rb: Could not read include file, (MarkdownHelper::UnreadableInputError)
74
+ C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/markdown_helper-2.1.0/bin/_include: Could not read include file, (MarkdownHelper::UnreadableInputError)
75
75
  Backtrace (innermost include first):
76
76
  Level 0:
77
77
  Includer:
@@ -4,8 +4,7 @@ class DiagnoseMissingIncludee < IncludeUseCase
4
4
 
5
5
  def self.build
6
6
 
7
- use_case_name = File.basename(__FILE__, '.rb')
8
- use_case = self.new(use_case_name)
7
+ use_case = self.new
9
8
 
10
9
  use_case.write_ruby_file(pristine = true)
11
10
 
@@ -4,8 +4,7 @@ class IncludeCodeBlock < IncludeUseCase
4
4
 
5
5
  def self.build
6
6
 
7
- use_case_name = File.basename(__FILE__, '.rb')
8
- use_case = self.new(use_case_name)
7
+ use_case = self.new
9
8
 
10
9
  includee_file_name = 'hello.rb'
11
10
 
@@ -4,8 +4,7 @@ class IncludeGeneratedText < IncludeUseCase
4
4
 
5
5
  def self.build
6
6
 
7
- use_case_name = File.basename(__FILE__, '.rb')
8
- use_case = self.new(use_case_name)
7
+ use_case = self.new
9
8
 
10
9
  use_case.files_to_write.store(
11
10
  TEMPLATE_FILE_NAME,
@@ -4,8 +4,7 @@ class IncludeHighlightedCode < IncludeUseCase
4
4
 
5
5
  def self.build
6
6
 
7
- use_case_name = File.basename(__FILE__, '.rb')
8
- use_case = self.new(use_case_name)
7
+ use_case = self.new
9
8
 
10
9
  use_case.write_includer_file
11
10
 
@@ -4,8 +4,7 @@ class IncludeMarkdown < IncludeUseCase
4
4
 
5
5
  def self.build
6
6
 
7
- use_case_name = File.basename(__FILE__, '.rb')
8
- use_case = self.new(use_case_name)
7
+ use_case = self.new
9
8
 
10
9
  includee_file_name = 'markdown.md'
11
10
 
@@ -0,0 +1,48 @@
1
+ <!-- >>>>>> BEGIN GENERATED FILE (include): SOURCE includer.md -->
2
+ # Page Title
3
+
4
+ ## Page Contents
5
+ - [Includer level-two title.](#includer-level-two-title)
6
+ - [Includer level-three title.](#includer-level-three-title)
7
+ - [Another includer level-three title.](#another-includer-level-three-title)
8
+ - [Another includer level-two title.](#another-includer-level-two-title)
9
+ - [Includee 0 level-two title.](#includee-0-level-two-title)
10
+ - [Includee 0 level-three title.](#includee-0-level-three-title)
11
+ - [Another includee 0 level-three title.](#another-includee-0-level-three-title)
12
+ - [Another includee 0 level-two title.](#another-includee-0-level-two-title)
13
+ - [Includee 1 level-two title.](#includee-1-level-two-title)
14
+ - [Includee 1 level-three title.](#includee-1-level-three-title)
15
+ - [Another includee 1 level-three title.](#another-includee-1-level-three-title)
16
+ - [Another includee 1 level-two title.](#another-includee-1-level-two-title)
17
+
18
+ ## Includer level-two title.
19
+
20
+ ### Includer level-three title.
21
+
22
+ ### Another includer level-three title.
23
+
24
+ ## Another includer level-two title.
25
+
26
+ <!-- >>>>>> BEGIN INCLUDED FILE (markdown): SOURCE markdown/use_cases/include_files/include_page_toc/markdown_0.md -->
27
+
28
+ ## Includee 0 level-two title.
29
+
30
+ ### Includee 0 level-three title.
31
+
32
+ ### Another includee 0 level-three title.
33
+
34
+ ## Another includee 0 level-two title.
35
+ <!-- <<<<<< END INCLUDED FILE (markdown): SOURCE markdown/use_cases/include_files/include_page_toc/markdown_0.md -->
36
+
37
+ <!-- >>>>>> BEGIN INCLUDED FILE (markdown): SOURCE markdown/use_cases/include_files/include_page_toc/markdown_1.md -->
38
+
39
+ ## Includee 1 level-two title.
40
+
41
+ ### Includee 1 level-three title.
42
+
43
+ ### Another includee 1 level-three title.
44
+
45
+ ## Another includee 1 level-two title.
46
+ <!-- <<<<<< END INCLUDED FILE (markdown): SOURCE markdown/use_cases/include_files/include_page_toc/markdown_1.md -->
47
+
48
+ <!-- <<<<<< END GENERATED FILE (include): SOURCE includer.md -->