markdown_helper 2.5.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 124d093de5339a00fe47c99c1f90136659cf21d3922baedc61e5a9aea7fe15ec
4
- data.tar.gz: 077e4d99acaff53d4bf5f8ec1886c8b396c375dcb2ae6229fd04ca7941b2c19f
3
+ metadata.gz: 3a03aca6d8626d52b3ac599739a247fbb454b298ee0fb02187a451982526c8f6
4
+ data.tar.gz: 4ba9dcaf4796e01953debbb350f308484912b6dd850a50727fba32cd15b13bd4
5
5
  SHA512:
6
- metadata.gz: 1b8ef5e11f12671e0a11faf819c3ae51a29ee3956d66c1e66405913a834b6b7ad95dfb5a581d41c02bcfa12e694d00b18237b19be0ca4929d606dca14484cb52
7
- data.tar.gz: '0981351b0c5458fedc5ce0803ed999519e55c289fb0534d3b679356f3b4e68a4266c2038aa6462d03a30654cf1d1bb2f9952ccc542c64e71f86e0f5bba6b9da9'
6
+ metadata.gz: 6e569e86f5512efeb7cc345388bebcfc0524b08d304b0be154095c9728315fec6b804b58685707b87a6dfd7e6974a5bcc63b6162a31f18be25c288beb86a6bc7
7
+ data.tar.gz: 130a4b48f210cc5622ccd327273aa1f868ac567f5562662363b0c30cd582a16fbdc3c633a3283f4a03e7a9ecd8350a9f904a848f4dca34ce66e4c203a8d78b7f
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- markdown_helper (2.5.0)
4
+ markdown_helper (2.5.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -48,6 +48,7 @@ EOT
48
48
  template_path_in_project = MarkdownHelper.path_in_project(template_file_path)
49
49
  output_lines = []
50
50
  yield output_lines
51
+ output_lines = output_lines.collect { |line| line.chomp }
51
52
  unless pristine
52
53
  output_lines.unshift(MarkdownHelper.comment(" >>>>>> BEGIN GENERATED FILE (#{method}): SOURCE #{template_path_in_project} "))
53
54
  output_lines.push(MarkdownHelper.comment(" <<<<<< END GENERATED FILE (#{method}): SOURCE #{template_path_in_project} "))
@@ -9,9 +9,8 @@ class MarkdownIncluder < MarkdownHelper
9
9
  @inclusions = []
10
10
  generate_file(:include, template_file_path, markdown_file_path) do |output_lines|
11
11
  Dir.chdir(File.dirname(template_file_path)) do
12
- markdown_lines = include_markdown(template_file_path)
13
- markdown_lines = include_page_toc(markdown_lines)
14
- include_all(template_file_path, markdown_lines, output_lines)
12
+ page_toc_lines = get_page_toc_lines(template_file_path)
13
+ include_all(template_file_path, page_toc_lines, is_nested = false, output_lines)
15
14
  end
16
15
  end
17
16
 
@@ -25,76 +24,45 @@ class MarkdownIncluder < MarkdownHelper
25
24
  "<details>\n#{text}</details>"
26
25
  end
27
26
 
28
- def include_markdown(template_file_path)
27
+ def gather_markdown(template_file_path)
28
+ check_template(template_file_path)
29
29
  Dir.chdir(File.dirname(template_file_path)) do
30
30
  markdown_lines = []
31
- unless File.readable?(template_file_path)
32
- path_in_project = MarkdownHelper.path_in_project(template_file_path )
33
- message = [
34
- "Could not read template file: #{path_in_project}",
35
- MarkdownIncluder.backtrace_inclusions(@inclusions),
36
- ].join("\n")
37
- e = UnreadableTemplateError.new(message)
38
- e.set_backtrace([])
39
- raise e
40
- end
41
31
  template_lines = File.readlines(template_file_path)
42
32
  template_lines.each_with_index do |template_line, i|
43
33
  template_line.chomp!
44
34
  treatment, includee_file_path = *parse_include(template_line)
45
- if treatment.nil?
46
- markdown_lines.push(template_line)
47
- next
48
- end
49
- if treatment == ':page_toc'
35
+ unless treatment == ':markdown'
50
36
  markdown_lines.push(template_line)
51
37
  next
52
38
  end
53
39
  inclusion = Inclusion.new(
54
- template_file_path,
55
- template_line,
56
- i,
57
- treatment,
58
- includee_file_path,
59
- @inclusions
40
+ includer_file_path: template_file_path,
41
+ include_pragma: template_line,
42
+ includer_line_number: i,
43
+ treatment: treatment,
44
+ cited_includee_file_path: includee_file_path,
45
+ inclusions: @inclusions
60
46
  )
61
- case treatment
62
- when ':markdown'
63
- check_includee(inclusion)
64
- check_circularity(inclusion)
65
- @inclusions.push(inclusion)
66
- includee_lines = include_markdown(File.absolute_path(includee_file_path))
67
- markdown_lines.concat(includee_lines)
68
- when ':comment'
69
- text = File.read(includee_file_path)
70
- markdown_lines.push(MarkdownHelper.comment(text))
71
- @inclusions.push(inclusion)
72
- when ':pre'
73
- text = File.read(includee_file_path)
74
- markdown_lines.push(MarkdownIncluder.pre(text))
75
- @inclusions.push(inclusion)
76
- when ':details'
77
- text = File.read(includee_file_path)
78
- markdown_lines.push(MarkdownIncluder.details(text))
79
- @inclusions.push(inclusion)
80
- else
81
- markdown_lines.push(template_line)
82
- next
83
- end
47
+ check_includee(inclusion)
48
+ check_circularity(inclusion)
49
+ @inclusions.push(inclusion)
50
+ includee_lines = gather_markdown(File.absolute_path(includee_file_path))
51
+ markdown_lines.concat(includee_lines)
84
52
  @inclusions.pop
85
- treatment.sub!(/^:/, '')
86
53
  add_inclusion_comments(treatment, includee_file_path, markdown_lines)
87
54
  end
88
55
  markdown_lines
89
56
  end
90
57
  end
91
58
 
92
- def include_page_toc(template_lines)
59
+ def get_page_toc_lines(template_file_path)
60
+ markdown_lines = gather_markdown(template_file_path)
93
61
  toc_line_index = nil
94
62
  toc_title = nil
95
63
  anchor_counts = Hash.new(0)
96
- template_lines.each_with_index do |template_line, i|
97
- match_data = template_line.match(INCLUDE_REGEXP)
64
+ markdown_lines.each_with_index do |markdown_line, i|
65
+ match_data = markdown_line.match(INCLUDE_REGEXP)
98
66
  next unless match_data
99
67
  treatment = match_data[1]
100
68
  next unless treatment == ':page_toc'
@@ -110,10 +78,10 @@ class MarkdownIncluder < MarkdownHelper
110
78
  raise InvalidTocTitleError.new(message)
111
79
  end
112
80
  end
113
- return template_lines unless toc_line_index
81
+ return markdown_lines unless toc_line_index
114
82
  toc_lines = [toc_title]
115
83
  first_heading_level = nil
116
- template_lines.each_with_index do |input_line, i|
84
+ markdown_lines.each_with_index do |input_line, i|
117
85
  line = input_line.chomp
118
86
  heading = Heading.parse(line)
119
87
  next unless heading
@@ -126,44 +94,103 @@ class MarkdownIncluder < MarkdownHelper
126
94
  toc_line = "#{indentation}- #{heading.link(anchor_counts)}"
127
95
  toc_lines.push(toc_line)
128
96
  end
129
- template_lines.delete_at(toc_line_index)
130
- template_lines.insert(toc_line_index, *toc_lines)
131
- template_lines
97
+ toc_lines
132
98
  end
133
99
 
134
- def include_all(template_file_path, template_lines, output_lines)
135
- template_lines.each_with_index do |template_line, i|
136
- treatment, includee_file_path = *parse_include(template_line)
137
- if treatment.nil?
138
- output_lines.push(template_line)
139
- next
100
+ def include_all(includer_file_path, page_toc_lines, is_nested, output_lines)
101
+ includer_dir_path = File.dirname(includer_file_path)
102
+ includer_file_name = File.basename(includer_file_path)
103
+ Dir.chdir(includer_dir_path) do
104
+ check_template(includer_file_path)
105
+ template_lines = File.readlines(includer_file_name)
106
+ if is_nested
107
+ add_inclusion_comments(':markdown', includer_file_path, template_lines)
140
108
  end
141
- inclusion = Inclusion.new(
142
- template_file_path,
143
- template_line,
144
- i,
145
- treatment,
146
- includee_file_path,
147
- @inclusions
148
- )
149
- check_includee(inclusion)
150
- @inclusions.push(inclusion)
151
- file_marker = format('```%s```:', File.basename(includee_file_path))
152
- begin_backticks = '```'
153
- end_backticks = '```'
154
- begin_backticks += treatment unless treatment.start_with?(':')
155
- includee_lines = File.read(includee_file_path).split("\n")
156
- includee_lines.unshift(begin_backticks)
157
- includee_lines.unshift(file_marker)
158
- includee_lines.push(end_backticks)
159
- add_inclusion_comments(treatment.sub(':', ''), includee_file_path, includee_lines)
160
- output_lines.concat(includee_lines)
109
+ template_lines.each_with_index do |template_line, i|
110
+ treatment, includee_file_path = *parse_include(template_line)
111
+ if treatment.nil?
112
+ output_lines.push(template_line)
113
+ next
114
+ end
115
+ if treatment == ':page_toc'
116
+ output_lines.concat(page_toc_lines)
117
+ next
118
+ end
119
+ inclusion = Inclusion.new(
120
+ includer_file_path: includer_file_path,
121
+ include_pragma: template_line,
122
+ includer_line_number: i,
123
+ treatment: treatment,
124
+ cited_includee_file_path: includee_file_path,
125
+ inclusions: @inclusions
126
+ )
127
+ @inclusions.push(inclusion)
128
+ check_includee(inclusion)
129
+ case treatment
130
+ when ':comment'
131
+ include_comment(includee_file_path, treatment, inclusion, output_lines)
132
+ when ':pre'
133
+ include_pre(includee_file_path, treatment, inclusion, output_lines)
134
+ when ':details'
135
+ include_details(includee_file_path, treatment, inclusion, output_lines)
136
+ when ':markdown'
137
+ include_all(includee_file_path, page_toc_lines, is_nested = true, output_lines)
138
+ else
139
+ include_file(includee_file_path, treatment, inclusion, output_lines)
140
+ end
141
+ @inclusions.pop
142
+ end
143
+ end
144
+ end
145
+
146
+ def include_comment(includee_file_path, treatment, inclusion, output_lines)
147
+ text = File.read(includee_file_path)
148
+ output_lines.push(MarkdownHelper.comment(text))
149
+ add_inclusion_comments(treatment, includee_file_path, output_lines)
150
+ end
151
+
152
+ def include_pre(includee_file_path, treatment, inclusion, output_lines)
153
+ text = File.read(includee_file_path)
154
+ output_lines.push(MarkdownIncluder.pre(text))
155
+ add_inclusion_comments(treatment, includee_file_path, output_lines)
156
+ end
157
+
158
+ def include_details(includee_file_path, treatment, inclusion, output_lines)
159
+ text = File.read(includee_file_path)
160
+ output_lines.push(MarkdownIncluder.details(text))
161
+ add_inclusion_comments(treatment, includee_file_path, output_lines)
162
+ end
163
+
164
+ def include_file(includee_file_path, treatment, inclusion, output_lines)
165
+ file_marker = format('```%s```:', File.basename(includee_file_path))
166
+ begin_backticks = '```'
167
+ end_backticks = '```'
168
+ begin_backticks += treatment unless treatment.start_with?(':')
169
+ includee_lines = File.read(includee_file_path).split("\n")
170
+ includee_lines.unshift(begin_backticks)
171
+ includee_lines.unshift(file_marker)
172
+ includee_lines.push(end_backticks)
173
+ add_inclusion_comments(treatment, includee_file_path, includee_lines)
174
+ output_lines.concat(includee_lines)
175
+ end
176
+
177
+ def check_template(template_file_path)
178
+ unless File.readable?(template_file_path)
179
+ path_in_project = MarkdownHelper.path_in_project(template_file_path )
180
+ message = [
181
+ "Could not read template file: #{path_in_project}",
182
+ MarkdownIncluder.backtrace_inclusions(@inclusions),
183
+ ].join("\n")
184
+ e = UnreadableTemplateError.new(message)
185
+ e.set_backtrace([])
186
+ raise e
161
187
  end
162
188
  end
163
189
 
164
190
  def add_inclusion_comments(treatment, includee_file_path, lines)
165
- path_in_project = MarkdownHelper.path_in_project(includee_file_path)
166
191
  unless pristine
192
+ path_in_project = MarkdownHelper.path_in_project(includee_file_path)
193
+ treatment = treatment.sub(/^:/, '')
167
194
  comment = format(' >>>>>> BEGIN INCLUDED FILE (%s): SOURCE %s ', treatment, path_in_project)
168
195
  lines.unshift(MarkdownHelper.comment(comment))
169
196
  comment = format(' <<<<<< END INCLUDED FILE (%s): SOURCE %s ', treatment, path_in_project)
@@ -267,12 +294,12 @@ class MarkdownIncluder < MarkdownHelper
267
294
  :includee_absolute_file_path
268
295
 
269
296
  def initialize(
270
- includer_file_path,
271
- include_pragma,
272
- includer_line_number,
273
- treatment,
274
- cited_includee_file_path,
275
- inclusions
297
+ includer_file_path:,
298
+ include_pragma:,
299
+ includer_line_number:,
300
+ treatment:,
301
+ cited_includee_file_path:,
302
+ inclusions:
276
303
  )
277
304
  self.includer_file_path = includer_file_path
278
305
  self.include_pragma = include_pragma
@@ -1,3 +1,3 @@
1
1
  class MarkdownHelper
2
- VERSION = '2.5.0'
2
+ VERSION = '2.5.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: markdown_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - burdettelamar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-29 00:00:00.000000000 Z
11
+ date: 2019-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler