markdown_helper 1.8.0 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -5
  3. data/CODE_OF_CONDUCT.md +74 -74
  4. data/Gemfile.lock +2 -1
  5. data/LICENSE.txt +21 -21
  6. data/README.md +60 -47
  7. data/Rakefile +16 -13
  8. data/bin/_include +0 -1
  9. data/bin/_resolve +0 -1
  10. data/bin/markdown_helper +3 -0
  11. data/bin/setup +8 -8
  12. data/lib/markdown_helper.rb +329 -97
  13. data/lib/markdown_helper/version.rb +1 -1
  14. data/markdown/{README.template.md → readme/README.template.md} +25 -12
  15. data/markdown/{code_block_ruby_template.md → readme/code_block_ruby_template.md} +0 -0
  16. data/markdown/{highlight_ruby_template.md → readme/highlight_ruby_template.md} +0 -0
  17. data/markdown/readme/highlighted_ruby.md +12 -0
  18. data/markdown/{include.md → readme/include.md} +0 -0
  19. data/markdown/{include.rb → readme/include.rb} +0 -0
  20. data/markdown/{include_usage.rb → readme/include_usage.rb} +0 -0
  21. data/markdown/{resolve.md → readme/resolve.md} +0 -0
  22. data/markdown/{resolve_usage.rb → readme/resolve_usage.rb} +0 -0
  23. data/markdown/{verbatim_ruby_template.md → readme/verbatim_ruby_template.md} +0 -0
  24. data/markdown/use_cases/Rakefile +53 -23
  25. data/markdown/use_cases/include/diagnose_circular_includes/diagnose_circular_includes.err +26 -0
  26. data/markdown/use_cases/include/diagnose_circular_includes/diagnose_circular_includes.rb +65 -0
  27. data/markdown/use_cases/include/diagnose_circular_includes/include.rb +5 -0
  28. data/markdown/use_cases/include/diagnose_circular_includes/includer.md +1 -0
  29. data/markdown/use_cases/include/diagnose_circular_includes/includer_0.md +1 -0
  30. data/markdown/use_cases/include/diagnose_circular_includes/includer_1.md +1 -0
  31. data/markdown/use_cases/include/diagnose_circular_includes/includer_2.md +1 -0
  32. data/markdown/use_cases/include/diagnose_circular_includes/use_case.md +98 -0
  33. data/markdown/use_cases/include/diagnose_circular_includes/use_case_template.md +27 -0
  34. data/markdown/use_cases/include/diagnose_missing_includee/diagnose_missing_includee.err +26 -0
  35. data/markdown/use_cases/include/diagnose_missing_includee/diagnose_missing_includee.rb +67 -0
  36. data/markdown/use_cases/include/diagnose_missing_includee/include.rb +5 -0
  37. data/markdown/use_cases/include/diagnose_missing_includee/included.md +1 -0
  38. data/markdown/use_cases/include/diagnose_missing_includee/includer.md +1 -0
  39. data/markdown/use_cases/include/diagnose_missing_includee/includer_0.md +1 -0
  40. data/markdown/use_cases/include/diagnose_missing_includee/includer_1.md +1 -0
  41. data/markdown/use_cases/include/diagnose_missing_includee/includer_2.md +1 -0
  42. data/markdown/use_cases/include/diagnose_missing_includee/use_case.md +100 -0
  43. data/markdown/use_cases/include/diagnose_missing_includee/use_case_template.md +29 -0
  44. data/markdown/use_cases/include/include.rb +5 -0
  45. data/markdown/use_cases/include/include_code_block/hello.rb +8 -0
  46. data/markdown/use_cases/include/include_code_block/include_code_block.rb +79 -0
  47. data/markdown/use_cases/include/include_code_block/included.md +14 -0
  48. data/markdown/use_cases/include/include_code_block/includer.md +4 -0
  49. data/markdown/use_cases/include/include_code_block/use_case.md +108 -0
  50. data/markdown/use_cases/include/include_code_block/use_case_template.md +33 -0
  51. data/markdown/use_cases/include/include_generated_text/include_generated_text.rb +38 -0
  52. data/markdown/use_cases/include/include_generated_text/use_case.md +18 -0
  53. data/markdown/use_cases/include/include_generated_text/use_case_template.md +18 -0
  54. data/markdown/use_cases/include/include_highlighted_code/hello.rb +8 -0
  55. data/markdown/use_cases/include/include_highlighted_code/include_highlighted_code.rb +83 -0
  56. data/markdown/use_cases/include/include_highlighted_code/included.md +14 -0
  57. data/markdown/use_cases/include/include_highlighted_code/includer.md +4 -0
  58. data/markdown/use_cases/include/include_highlighted_code/use_case.md +110 -0
  59. data/markdown/use_cases/include/include_highlighted_code/use_case_template.md +35 -0
  60. data/markdown/use_cases/include/include_markdown/include_markdown.rb +81 -0
  61. data/markdown/use_cases/include/include_markdown/included.md +13 -0
  62. data/markdown/use_cases/include/include_markdown/includer.md +4 -0
  63. data/markdown/use_cases/include/include_markdown/markdown.md +10 -0
  64. data/markdown/use_cases/include/include_markdown/use_case.md +106 -0
  65. data/markdown/use_cases/include/include_markdown/use_case_template.md +33 -0
  66. data/markdown/use_cases/include/include_use_case.rb +110 -0
  67. data/markdown/use_cases/include/include_with_added_comments/include_with_added_comments.rb +43 -60
  68. data/markdown/use_cases/include/include_with_added_comments/included.md +2 -2
  69. data/markdown/use_cases/include/include_with_added_comments/use_case.md +56 -0
  70. data/markdown/use_cases/include/include_with_added_comments/{template.md → use_case_template.md} +20 -1
  71. data/markdown/use_cases/include/interface.md +25 -0
  72. data/markdown/use_cases/include/nest_inclusions/included.md +5 -0
  73. data/markdown/use_cases/include/nest_inclusions/includee.md +3 -0
  74. data/markdown/use_cases/include/nest_inclusions/includer.md +3 -0
  75. data/markdown/use_cases/include/nest_inclusions/nest_inclusions.rb +61 -0
  76. data/markdown/use_cases/include/nest_inclusions/nested_includee.md +1 -0
  77. data/markdown/use_cases/include/nest_inclusions/use_case.md +74 -0
  78. data/markdown/use_cases/include/nest_inclusions/use_case_template.md +23 -0
  79. data/markdown/use_cases/include/reuse_text/include.rb +5 -0
  80. data/markdown/use_cases/include/reuse_text/included.md +2 -5
  81. data/markdown/use_cases/include/reuse_text/includee.md +1 -0
  82. data/markdown/use_cases/include/reuse_text/includer.md +2 -5
  83. data/markdown/use_cases/include/reuse_text/reuse_text.rb +24 -77
  84. data/markdown/use_cases/include/reuse_text/use_case.md +69 -0
  85. data/markdown/use_cases/include/reuse_text/use_case_template.md +23 -0
  86. data/markdown/use_cases/resolve/gemify_images/gemify_images.rb +58 -29
  87. data/markdown/use_cases/resolve/gemify_images/template.md +4 -0
  88. data/markdown/use_cases/use_case.rb +45 -0
  89. data/markdown/use_cases/use_cases.md +9 -2
  90. data/markdown_helper.gemspec +1 -1
  91. metadata +70 -19
  92. data/markdown/highlighted_ruby.md +0 -12
  93. data/markdown/use_cases/include/include_generated_text/build.rb +0 -46
  94. data/markdown/use_cases/include/include_with_added_comments/include_with_added_comments.md +0 -37
  95. data/markdown/use_cases/include/reuse_text/reusable_text.md +0 -1
  96. data/markdown/use_cases/include/reuse_text/reuse_text.md +0 -54
  97. data/markdown/use_cases/include/reuse_text/template.md +0 -33
@@ -0,0 +1,33 @@
1
+ ### Include a Code Block
2
+
3
+ Use file inclusion to include text as a code block.
4
+
5
+ #### File to Be Included
6
+
7
+ Here's a file containing code to be included:
8
+
9
+ @[markdown](hello.rb)
10
+
11
+ #### Includer File
12
+
13
+ Here's a template file that includes it:
14
+
15
+ @[markdown](includer.md)
16
+
17
+ The treatment token ```:code_block``` specifies that the included text is to be treated as a code block.
18
+
19
+ @[:markdown](../interface.md)
20
+
21
+ #### File with Inclusion
22
+
23
+ Here's the finished file with the included code block:
24
+
25
+ @[:pre](included.md)
26
+
27
+ And here's the finished markdown, as rendered on this page:
28
+
29
+ ---
30
+
31
+ @[:markdown](included.md)
32
+
33
+ ---
@@ -0,0 +1,38 @@
1
+ require_relative '../include_use_case'
2
+
3
+ class IncludeGeneratedText < IncludeUseCase
4
+
5
+ def self.build
6
+
7
+ use_case_name = File.basename(__FILE__, '.rb')
8
+ use_case = self.new(use_case_name)
9
+
10
+ use_case.files_to_write.store(
11
+ TEMPLATE_FILE_NAME,
12
+ <<EOT
13
+ ### Include Generated Text
14
+
15
+ #### Generate Includable Text
16
+
17
+ A handy use of file inclusion is seen in including generated text.
18
+
19
+ That is, the markdown "build" generates files that are then included in the finished markdown document.
20
+
21
+ The use cases documented here take advantage of that. Each use case has an executable Ruby file that has [Here Documents](https://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Here+Documents) containing all the relevant text. The build emits the files that are them used to illustrate the use case.
22
+
23
+ #### Keeping Example Code "Green"
24
+
25
+ An especially handy use of file inclusion is seen in including example code and output.
26
+
27
+ 1. Example code in its own file is executed, and its output captured into another file.
28
+ 2. Then both are included in markdown that uses the example.
29
+
30
+ Running the example each time the markdown is built keeps the example code "green," because it confirms that the code still works.
31
+ EOT
32
+ )
33
+
34
+ use_case.build
35
+
36
+ end
37
+
38
+ end
@@ -0,0 +1,18 @@
1
+ ### Include Generated Text
2
+
3
+ #### Generate Includable Text
4
+
5
+ A handy use of file inclusion is seen in including generated text.
6
+
7
+ That is, the markdown "build" generates files that are then included in the finished markdown document.
8
+
9
+ The use cases documented here take advantage of that. Each use case has an executable Ruby file that has [Here Documents](https://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Here+Documents) containing all the relevant text. The build emits the files that are them used to illustrate the use case.
10
+
11
+ #### Keeping Example Code "Green"
12
+
13
+ An especially handy use of file inclusion is seen in including example code and output.
14
+
15
+ 1. Example code in its own file is executed, and its output captured into another file.
16
+ 2. Then both are included in markdown that uses the example.
17
+
18
+ Running the example each time the markdown is built keeps the example code "green," because it confirms that the code still works.
@@ -0,0 +1,18 @@
1
+ ### Include Generated Text
2
+
3
+ #### Generate Includable Text
4
+
5
+ A handy use of file inclusion is seen in including generated text.
6
+
7
+ That is, the markdown "build" generates files that are then included in the finished markdown document.
8
+
9
+ The use cases documented here take advantage of that. Each use case has an executable Ruby file that has [Here Documents](https://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Here+Documents) containing all the relevant text. The build emits the files that are them used to illustrate the use case.
10
+
11
+ #### Keeping Example Code "Green"
12
+
13
+ An especially handy use of file inclusion is seen in including example code and output.
14
+
15
+ 1. Example code in its own file is executed, and its output captured into another file.
16
+ 2. Then both are included in markdown that uses the example.
17
+
18
+ Running the example each time the markdown is built keeps the example code "green," because it confirms that the code still works.
@@ -0,0 +1,8 @@
1
+ class HelloWorld
2
+ def initialize(name)
3
+ @name = name.capitalize
4
+ end
5
+ def sayHi
6
+ puts "Hello !"
7
+ end
8
+ end
@@ -0,0 +1,83 @@
1
+ require_relative '../include_use_case'
2
+
3
+ class IncludeHighlightedCode < IncludeUseCase
4
+
5
+ def self.build
6
+
7
+ use_case_name = File.basename(__FILE__, '.rb')
8
+ use_case = self.new(use_case_name)
9
+
10
+ use_case.write_includer_file
11
+
12
+ includee_file_name = 'hello.rb'
13
+
14
+ use_case.files_to_write.store(
15
+ includee_file_name,
16
+ <<EOT
17
+ class HelloWorld
18
+ def initialize(name)
19
+ @name = name.capitalize
20
+ end
21
+ def sayHi
22
+ puts "Hello #{@name}!"
23
+ end
24
+ end
25
+ EOT
26
+ )
27
+
28
+ use_case.files_to_write.store(
29
+ INCLUDER_FILE_NAME,
30
+ <<EOT
31
+ This file includes the code as highlighted code.
32
+
33
+ @[ruby](#{includee_file_name})
34
+
35
+ EOT
36
+ )
37
+
38
+ use_case.files_to_write.store(
39
+ TEMPLATE_FILE_NAME,
40
+ <<EOT
41
+ ### Include Highlighted Code
42
+
43
+ Use file inclusion to include text as highlighted code.
44
+
45
+ #### File to Be Included
46
+
47
+ Here's a file containing Ruby code to be included:
48
+
49
+ @[markdown](#{includee_file_name})
50
+
51
+ #### Includer File
52
+
53
+ Here's a template file that includes it:
54
+
55
+ @[markdown](#{INCLUDER_FILE_NAME})
56
+
57
+ The treatment token ```ruby``` specifies that the included text is to be highlighted as Ruby code.
58
+
59
+ The treatment token can be any Ace mode mentioned in [GitHub Languages](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml). The file lists about 100 Ace modes, covering just about every language and format.
60
+
61
+ @[:markdown](../interface.md)
62
+
63
+ #### File with Inclusion
64
+
65
+ Here's the finished file with the included highlighted code:
66
+
67
+ @[:pre](#{INCLUDED_FILE_NAME})
68
+
69
+ And here's the finished markdown, as rendered on this page:
70
+
71
+ ---
72
+
73
+ @[:markdown](#{INCLUDED_FILE_NAME})
74
+
75
+ ---
76
+ EOT
77
+ )
78
+
79
+ use_case.build
80
+
81
+ end
82
+
83
+ end
@@ -0,0 +1,14 @@
1
+ This file includes the code as highlighted code.
2
+
3
+ ```hello.rb```:
4
+ ```ruby
5
+ class HelloWorld
6
+ def initialize(name)
7
+ @name = name.capitalize
8
+ end
9
+ def sayHi
10
+ puts "Hello !"
11
+ end
12
+ end
13
+ ```
14
+
@@ -0,0 +1,4 @@
1
+ This file includes the code as highlighted code.
2
+
3
+ @[ruby](hello.rb)
4
+
@@ -0,0 +1,110 @@
1
+ ### Include Highlighted Code
2
+
3
+ Use file inclusion to include text as highlighted code.
4
+
5
+ #### File to Be Included
6
+
7
+ Here's a file containing Ruby code to be included:
8
+
9
+ ```hello.rb```:
10
+ ```markdown
11
+ class HelloWorld
12
+ def initialize(name)
13
+ @name = name.capitalize
14
+ end
15
+ def sayHi
16
+ puts "Hello !"
17
+ end
18
+ end
19
+ ```
20
+
21
+ #### Includer File
22
+
23
+ Here's a template file that includes it:
24
+
25
+ ```includer.md```:
26
+ ```markdown
27
+ This file includes the code as highlighted code.
28
+
29
+ @[ruby](hello.rb)
30
+
31
+ ```
32
+
33
+ The treatment token ```ruby``` specifies that the included text is to be highlighted as Ruby code.
34
+
35
+ The treatment token can be any Ace mode mentioned in [GitHub Languages](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml). The file lists about 100 Ace modes, covering just about every language and format.
36
+
37
+ #### CLI
38
+
39
+ You can use the command-line interface to perform the inclusion.
40
+
41
+ ##### Command
42
+
43
+ ```sh
44
+ markdown_helper include --pristine includer.md included.md
45
+ ```
46
+
47
+ (Option ```--pristine``` suppresses comment insertion.)
48
+
49
+ #### API
50
+
51
+ You can use the API to perform the inclusion.
52
+
53
+ ##### Ruby Code
54
+
55
+ ```include.rb```:
56
+ ```ruby
57
+ require 'markdown_helper'
58
+
59
+ # Option :pristine suppresses comment insertion.
60
+ markdown_helper = MarkdownHelper.new(:pristine => true)
61
+ markdown_helper.include('includer.md', 'included.md')
62
+ ```
63
+
64
+ ##### Command
65
+
66
+ ```sh
67
+ ruby include.rb
68
+ ```
69
+
70
+ #### File with Inclusion
71
+
72
+ Here's the finished file with the included highlighted code:
73
+
74
+ <pre>
75
+ This file includes the code as highlighted code.
76
+
77
+ ```hello.rb```:
78
+ ```ruby
79
+ class HelloWorld
80
+ def initialize(name)
81
+ @name = name.capitalize
82
+ end
83
+ def sayHi
84
+ puts "Hello !"
85
+ end
86
+ end
87
+ ```
88
+
89
+ </pre>
90
+
91
+ And here's the finished markdown, as rendered on this page:
92
+
93
+ ---
94
+
95
+ This file includes the code as highlighted code.
96
+
97
+ ```hello.rb```:
98
+ ```ruby
99
+ class HelloWorld
100
+ def initialize(name)
101
+ @name = name.capitalize
102
+ end
103
+ def sayHi
104
+ puts "Hello !"
105
+ end
106
+ end
107
+ ```
108
+
109
+
110
+ ---
@@ -0,0 +1,35 @@
1
+ ### Include Highlighted Code
2
+
3
+ Use file inclusion to include text as highlighted code.
4
+
5
+ #### File to Be Included
6
+
7
+ Here's a file containing Ruby code to be included:
8
+
9
+ @[markdown](hello.rb)
10
+
11
+ #### Includer File
12
+
13
+ Here's a template file that includes it:
14
+
15
+ @[markdown](includer.md)
16
+
17
+ The treatment token ```ruby``` specifies that the included text is to be highlighted as Ruby code.
18
+
19
+ The treatment token can be any Ace mode mentioned in [GitHub Languages](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml). The file lists about 100 Ace modes, covering just about every language and format.
20
+
21
+ @[:markdown](../interface.md)
22
+
23
+ #### File with Inclusion
24
+
25
+ Here's the finished file with the included highlighted code:
26
+
27
+ @[:pre](included.md)
28
+
29
+ And here's the finished markdown, as rendered on this page:
30
+
31
+ ---
32
+
33
+ @[:markdown](included.md)
34
+
35
+ ---
@@ -0,0 +1,81 @@
1
+ require_relative '../include_use_case'
2
+
3
+ class IncludeMarkdown < IncludeUseCase
4
+
5
+ def self.build
6
+
7
+ use_case_name = File.basename(__FILE__, '.rb')
8
+ use_case = self.new(use_case_name)
9
+
10
+ includee_file_name = 'markdown.md'
11
+
12
+ use_case.files_to_write.store(
13
+ includee_file_name,
14
+ <<EOT
15
+ This fiie, to be included, is markdown.
16
+
17
+ ### This is a level-three title.
18
+
19
+ Here's a [link](http://yahoo.com).
20
+
21
+ This is an unordered list:
22
+ * One.
23
+ * Two.
24
+ * Three.
25
+ EOT
26
+ )
27
+
28
+ use_case.files_to_write.store(
29
+ INCLUDER_FILE_NAME,
30
+ <<EOT
31
+ This file includes the markdown file.
32
+
33
+ @[:markdown](#{includee_file_name})
34
+
35
+ EOT
36
+ )
37
+
38
+ use_case.files_to_write.store(
39
+ TEMPLATE_FILE_NAME,
40
+ <<EOT
41
+ ### Include Markdown
42
+
43
+ Use file inclusion to include markdown. The whole page, includer and includee, will be rendered when it's pushed to GitHub.
44
+
45
+ #### File to Be Included
46
+
47
+ Here's a file containing markdown to be included:
48
+
49
+ @[markdown](#{includee_file_name})
50
+
51
+ #### Includer File
52
+
53
+ Here's a template file that includes it:
54
+
55
+ @[markdown](#{INCLUDER_FILE_NAME})
56
+
57
+ The treatment token ```:markdown``` specifies that the included text is to be treated as markdown.
58
+
59
+ @[:markdown](../interface.md)
60
+
61
+ #### File with Inclusion
62
+
63
+ Here's the finished file with the inclusion:
64
+
65
+ @[markdown](#{INCLUDED_FILE_NAME})
66
+
67
+ And here's the finished markdown, as rendered on this page:
68
+
69
+ ---
70
+
71
+ @[:markdown](#{includee_file_name})
72
+
73
+ ---
74
+ EOT
75
+ )
76
+
77
+ use_case.build
78
+
79
+ end
80
+
81
+ end