erbook 9.2.0 → 9.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -49,7 +49,7 @@
49
49
  <dd>
50
50
  <ul>
51
51
 
52
- <li><a href="#M000050">new</a></li>
52
+ <li><a href="#M000051">new</a></li>
53
53
 
54
54
  </ul>
55
55
  </dd>
@@ -58,7 +58,7 @@
58
58
  <dd>
59
59
  <ul>
60
60
 
61
- <li><a href="#M000062">to_s</a></li>
61
+ <li><a href="#M000052">to_s</a></li>
62
62
 
63
63
  </ul>
64
64
  </dd>
@@ -132,9 +132,9 @@ All nodes in the document arranged by node type.
132
132
  <div class="sectiontitle">Class Public methods</div>
133
133
 
134
134
  <div class="method">
135
- <div class="title" id="M000050">
135
+ <div class="title" id="M000051">
136
136
 
137
- <a name="M000050"></a><b>new</b>(format_name, input_text, input_file, options = {})
137
+ <a name="M000051"></a><b>new</b>(format_name, input_text, input_file, options = {})
138
138
 
139
139
  </div>
140
140
 
@@ -166,212 +166,21 @@ specification file.
166
166
 
167
167
  <div class="sourcecode">
168
168
  <p class="source-link">
169
- Source: <a href="javascript:toggleSource('M000050_source')" id="l_M000050_source">show</a>
169
+ Source: <a href="javascript:toggleSource('M000051_source')" id="l_M000051_source">show</a>
170
170
 
171
- | <a href="http://github.com/sunaku/erbook/blob/eda493a151e7b55d041d0a094c586e2c22aa63cc/lib/erbook/document.rb#L42" target="_blank" class="github_url">on GitHub</a>
171
+ | <a href="http://github.com/sunaku/erbook/blob/8c15499d81a4c71c3a15850bff81dc6e5d0236c5/lib/erbook/document.rb#L42" target="_blank" class="github_url">on GitHub</a>
172
172
 
173
173
  </p>
174
- <div id="M000050_source" class="dyn-source">
174
+ <div id="M000051_source" class="dyn-source">
175
175
  <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 42</span>
176
176
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span> <span class="ruby-identifier">format_name</span>, <span class="ruby-identifier">input_text</span>, <span class="ruby-identifier">input_file</span>, <span class="ruby-identifier">options</span> = {}
177
- <span class="ruby-comment cmt"># process format specification</span>
178
- <span class="ruby-ivar">@format_file</span> = <span class="ruby-identifier">format_name</span>.<span class="ruby-identifier">to_s</span>
177
+ <span class="ruby-identifier">load_format</span> <span class="ruby-identifier">format_name</span>
179
178
 
180
- <span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span> <span class="ruby-ivar">@format_file</span> <span class="ruby-keyword kw">or</span>
181
- <span class="ruby-ivar">@format_file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">ERBook</span><span class="ruby-operator">::</span><span class="ruby-constant">FORMATS_DIR</span>, <span class="ruby-ivar">@format_file</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'.yaml'</span>)
179
+ <span class="ruby-ivar">@input_text</span> = <span class="ruby-identifier">input_text</span>
180
+ <span class="ruby-ivar">@input_file</span> = <span class="ruby-identifier">input_file</span>
181
+ <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">options</span>
182
182
 
183
- <span class="ruby-keyword kw">begin</span>
184
- <span class="ruby-ivar">@format</span> = <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">load_file</span>(<span class="ruby-ivar">@format_file</span>)
185
- <span class="ruby-ivar">@format</span>[<span class="ruby-identifier">:file</span>] = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-ivar">@format_file</span>)
186
- <span class="ruby-ivar">@format</span>[<span class="ruby-identifier">:name</span>] = <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-ivar">@format_file</span>).<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/\..*?$/</span>, <span class="ruby-value str">''</span>)
187
-
188
- <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@format</span>.<span class="ruby-identifier">key?</span> <span class="ruby-value str">'code'</span>
189
- <span class="ruby-identifier">eval</span> <span class="ruby-ivar">@format</span>[<span class="ruby-value str">'code'</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-constant">TOPLEVEL_BINDING</span>, <span class="ruby-node">&quot;#{@format_file}:code&quot;</span>
190
- <span class="ruby-keyword kw">end</span>
191
-
192
- <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span>
193
- <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;Could not load format specification file #{@format_file.inspect}&quot;</span>
194
- <span class="ruby-keyword kw">end</span>
195
-
196
- <span class="ruby-ivar">@node_defs</span> = <span class="ruby-ivar">@format</span>[<span class="ruby-value str">'nodes'</span>]
197
-
198
- <span class="ruby-comment cmt"># process input document</span>
199
- <span class="ruby-keyword kw">begin</span>
200
- <span class="ruby-comment cmt"># create sandbox for input evaluation</span>
201
- <span class="ruby-identifier">template</span> = <span class="ruby-constant">Template</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">input_file</span>, <span class="ruby-identifier">input_text</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:unindent</span>])
202
- <span class="ruby-identifier">sandbox</span> = <span class="ruby-identifier">template</span>.<span class="ruby-identifier">sandbox</span>
203
-
204
- <span class="ruby-ivar">@template_vars</span> = {
205
- <span class="ruby-identifier">:@format</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@format</span>,
206
- <span class="ruby-identifier">:@roots</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@roots</span> = [], <span class="ruby-comment cmt"># root nodes of all trees</span>
207
- <span class="ruby-identifier">:@nodes</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@nodes</span> = [], <span class="ruby-comment cmt"># all nodes in the forest</span>
208
- <span class="ruby-identifier">:@nodes_by_type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@nodes_by_type</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">h</span>,<span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = [] },
209
- <span class="ruby-identifier">:@stack</span> =<span class="ruby-operator">&gt;</span> [], <span class="ruby-comment cmt"># stack for all nodes</span>
210
- }.<span class="ruby-identifier">each_pair</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sandbox</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span>) }
211
-
212
- <span class="ruby-comment cmt">#:stopdoc:</span>
213
-
214
- <span class="ruby-comment cmt">##</span>
215
- <span class="ruby-comment cmt"># Handles the method call from a node</span>
216
- <span class="ruby-comment cmt"># placeholder in the input document.</span>
217
- <span class="ruby-comment cmt">#</span>
218
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sandbox</span>.<span class="ruby-identifier">__node_handler__</span> <span class="ruby-identifier">node_type</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">node_args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">node_content</span>
219
- <span class="ruby-identifier">node</span> = <span class="ruby-constant">Node</span>.<span class="ruby-identifier">new</span>(
220
- <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">node_type</span>,
221
- <span class="ruby-identifier">:definition</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@format</span>[<span class="ruby-value str">'nodes'</span>][<span class="ruby-identifier">node_type</span>],
222
- <span class="ruby-identifier">:arguments</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">node_args</span>,
223
- <span class="ruby-identifier">:backtrace</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">caller</span>,
224
- <span class="ruby-identifier">:parent</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">last</span>,
225
- <span class="ruby-identifier">:children</span> =<span class="ruby-operator">&gt;</span> []
226
- )
227
-
228
- <span class="ruby-constant">Array</span>(<span class="ruby-identifier">node</span>.<span class="ruby-identifier">definition</span>[<span class="ruby-value str">'params'</span>]).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">param</span><span class="ruby-operator">|</span>
229
- <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node_args</span>.<span class="ruby-identifier">empty?</span>
230
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">__send__</span> <span class="ruby-node">&quot;#{param}=&quot;</span>, <span class="ruby-identifier">node_args</span>.<span class="ruby-identifier">shift</span>
231
- <span class="ruby-keyword kw">end</span>
232
-
233
- <span class="ruby-ivar">@nodes</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">node</span>
234
- <span class="ruby-ivar">@nodes_by_type</span>[<span class="ruby-identifier">node</span>.<span class="ruby-identifier">type</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">node</span>
235
-
236
- <span class="ruby-comment cmt"># calculate ordinal number for this node</span>
237
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">ordinal_number?</span>
238
- <span class="ruby-ivar">@count_by_type</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">h</span>,<span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-value">0</span> }
239
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">ordinal_number</span> = (<span class="ruby-ivar">@count_by_type</span>[<span class="ruby-identifier">node</span>.<span class="ruby-identifier">type</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>)
240
- <span class="ruby-keyword kw">end</span>
241
-
242
- <span class="ruby-comment cmt"># assign node family</span>
243
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span> = <span class="ruby-identifier">node</span>.<span class="ruby-identifier">parent</span>
244
- <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">children</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">node</span>
245
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">parent</span> = <span class="ruby-identifier">parent</span>
246
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">depth</span> = <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">depth</span>
247
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">depth</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">anchor?</span>
248
-
249
- <span class="ruby-comment cmt"># calculate section number for this node</span>
250
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">section_number?</span>
251
- <span class="ruby-identifier">ancestor</span> = <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">find</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">section_number</span> }
252
- <span class="ruby-identifier">branches</span> = <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">section_number</span> }
253
-
254
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">section_number</span> = [
255
- <span class="ruby-identifier">ancestor</span>.<span class="ruby-identifier">section_number</span>,
256
- <span class="ruby-identifier">branches</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
257
- ].<span class="ruby-identifier">join</span>(<span class="ruby-value str">'.'</span>)
258
- <span class="ruby-keyword kw">end</span>
259
- <span class="ruby-keyword kw">else</span>
260
- <span class="ruby-ivar">@roots</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">node</span>
261
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">parent</span> = <span class="ruby-keyword kw">nil</span>
262
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">depth</span> = <span class="ruby-value">0</span>
263
-
264
- <span class="ruby-comment cmt"># calculate section number for this node</span>
265
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">section_number?</span>
266
- <span class="ruby-identifier">branches</span> = <span class="ruby-ivar">@roots</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">section_number</span> }
267
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">section_number</span> = (<span class="ruby-identifier">branches</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span>
268
- <span class="ruby-keyword kw">end</span>
269
- <span class="ruby-keyword kw">end</span>
270
-
271
- <span class="ruby-comment cmt"># assign node content</span>
272
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
273
- <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">node</span>
274
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">content</span> = <span class="ruby-identifier">__block_content__</span>(<span class="ruby-identifier">node</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">node_content</span>)
275
- <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">pop</span>
276
- <span class="ruby-keyword kw">end</span>
277
-
278
- <span class="ruby-ivar">@buffer</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">node</span>
279
-
280
- <span class="ruby-keyword kw">nil</span>
281
- <span class="ruby-keyword kw">end</span>
282
-
283
- <span class="ruby-comment cmt">#:startdoc:</span>
284
-
285
- <span class="ruby-ivar">@node_defs</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">type</span><span class="ruby-operator">|</span>
286
- <span class="ruby-comment cmt"># XXX: using a string because define_method()</span>
287
- <span class="ruby-comment cmt"># does not accept a block until Ruby 1.9</span>
288
- <span class="ruby-identifier">file</span>, <span class="ruby-identifier">line</span> = <span class="ruby-keyword kw">__FILE__</span>, <span class="ruby-keyword kw">__LINE__</span>; <span class="ruby-identifier">eval</span> <span class="ruby-node">%{
289
- def sandbox.#{type} *node_args, &amp;node_content
290
- __node_handler__ #{type.inspect}, *node_args, &amp;node_content
291
- end
292
- }</span>, <span class="ruby-identifier">binding</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">line</span>
293
- <span class="ruby-keyword kw">end</span>
294
-
295
- <span class="ruby-comment cmt"># evaluate the input &amp; build the document tree</span>
296
- <span class="ruby-identifier">template</span>.<span class="ruby-identifier">render</span>
297
- <span class="ruby-ivar">@processed_document</span> = <span class="ruby-identifier">template</span>.<span class="ruby-identifier">buffer</span>
298
-
299
- <span class="ruby-comment cmt"># chain block-level nodes together for local navigation</span>
300
- <span class="ruby-identifier">block_nodes</span> = <span class="ruby-ivar">@nodes</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">chain?</span> }
301
-
302
- <span class="ruby-identifier">require</span> <span class="ruby-value str">'enumerator'</span>
303
- <span class="ruby-identifier">block_nodes</span>.<span class="ruby-identifier">each_cons</span>(<span class="ruby-value">2</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
304
- <span class="ruby-identifier">a</span>.<span class="ruby-identifier">next_node</span> = <span class="ruby-identifier">b</span>
305
- <span class="ruby-identifier">b</span>.<span class="ruby-identifier">prev_node</span> = <span class="ruby-identifier">a</span>
306
- <span class="ruby-keyword kw">end</span>
307
-
308
- <span class="ruby-comment cmt"># calculate output for all nodes</span>
309
- <span class="ruby-identifier">actual_output_by_node</span> = {}
310
-
311
- <span class="ruby-identifier">visitor</span> = <span class="ruby-identifier">lambda</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span>
312
- <span class="ruby-comment cmt">#</span>
313
- <span class="ruby-comment cmt"># allow child nodes to calculate their actual</span>
314
- <span class="ruby-comment cmt"># output and to set their identifier as Node#output</span>
315
- <span class="ruby-comment cmt">#</span>
316
- <span class="ruby-comment cmt"># we do this nodes first because this node's</span>
317
- <span class="ruby-comment cmt"># content contains the child nodes' output</span>
318
- <span class="ruby-comment cmt">#</span>
319
- <span class="ruby-identifier">n</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">visitor</span>.<span class="ruby-identifier">call</span> <span class="ruby-identifier">c</span> }
320
-
321
- <span class="ruby-comment cmt"># calculate the output for this node</span>
322
- <span class="ruby-identifier">actual_output</span> = <span class="ruby-constant">Template</span>.<span class="ruby-identifier">new</span>(
323
- <span class="ruby-node">&quot;#{@format_file}:nodes:#{n.type}:output&quot;</span>,
324
- <span class="ruby-identifier">n</span>.<span class="ruby-identifier">definition</span>[<span class="ruby-value str">'output'</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">chomp</span>
325
- ).<span class="ruby-identifier">render_with</span>(<span class="ruby-ivar">@template_vars</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">:@node</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">n</span>))
326
-
327
- <span class="ruby-comment cmt"># reveal child nodes' actual output in this node's actual output</span>
328
- <span class="ruby-identifier">n</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
329
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">silent?</span>
330
- <span class="ruby-comment cmt"># this child's output is not meant to be revealed at this time</span>
331
- <span class="ruby-keyword kw">next</span>
332
-
333
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">inline?</span>
334
- <span class="ruby-identifier">actual_output</span>[<span class="ruby-identifier">c</span>.<span class="ruby-identifier">output</span>] = <span class="ruby-identifier">actual_output_by_node</span>[<span class="ruby-identifier">c</span>]
335
-
336
- <span class="ruby-keyword kw">else</span>
337
- <span class="ruby-comment cmt"># remove &lt;p&gt; around block-level child (added by Markdown)</span>
338
- <span class="ruby-identifier">actual_output</span>.<span class="ruby-identifier">sub!</span> <span class="ruby-node">%r{(&lt;p&gt;\s*)?#{
339
- Regexp.quote c.output
340
- }(\s*&lt;/p&gt;)?}</span> <span class="ruby-keyword kw">do</span>
341
- <span class="ruby-identifier">actual_output_by_node</span>[<span class="ruby-identifier">c</span>] <span class="ruby-operator">+</span>
342
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$1</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">$2</span>
343
- <span class="ruby-value str">''</span>
344
- <span class="ruby-keyword kw">else</span>
345
- [<span class="ruby-identifier">$1</span>, <span class="ruby-identifier">$2</span>].<span class="ruby-identifier">join</span>
346
- <span class="ruby-keyword kw">end</span>
347
- <span class="ruby-keyword kw">end</span>
348
- <span class="ruby-keyword kw">end</span>
349
- <span class="ruby-keyword kw">end</span>
350
-
351
- <span class="ruby-identifier">actual_output_by_node</span>[<span class="ruby-identifier">n</span>] = <span class="ruby-identifier">actual_output</span>
352
-
353
- <span class="ruby-comment cmt">#</span>
354
- <span class="ruby-comment cmt"># allow the parent node to calculate its actual</span>
355
- <span class="ruby-comment cmt"># output without interference from the output of</span>
356
- <span class="ruby-comment cmt"># this node (Node#to_s is aliased to Node#output)</span>
357
- <span class="ruby-comment cmt">#</span>
358
- <span class="ruby-comment cmt"># this assumes that having this node's string</span>
359
- <span class="ruby-comment cmt"># representation be a consecutive sequence of digits</span>
360
- <span class="ruby-comment cmt"># will not interfere with the text-to-whatever</span>
361
- <span class="ruby-comment cmt"># transformation defined by the format specification</span>
362
- <span class="ruby-comment cmt">#</span>
363
- <span class="ruby-identifier">n</span>.<span class="ruby-identifier">output</span> = <span class="ruby-constant">Digest</span><span class="ruby-operator">::</span><span class="ruby-constant">SHA1</span>.<span class="ruby-identifier">digest</span>(<span class="ruby-identifier">n</span>.<span class="ruby-identifier">object_id</span>.<span class="ruby-identifier">to_s</span>).<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">'I*'</span>).<span class="ruby-identifier">join</span>
364
- <span class="ruby-keyword kw">end</span>
365
-
366
- <span class="ruby-ivar">@roots</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">visitor</span>.<span class="ruby-identifier">call</span> <span class="ruby-identifier">n</span> }
367
-
368
- <span class="ruby-comment cmt"># replace the temporary identifier with each node's actual output</span>
369
- <span class="ruby-ivar">@nodes</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">output</span> = <span class="ruby-identifier">actual_output_by_node</span>[<span class="ruby-identifier">n</span>] }
370
-
371
- <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span>
372
- <span class="ruby-identifier">puts</span> <span class="ruby-identifier">input_text</span> <span class="ruby-comment cmt"># so the user can debug line numbers in stack trace</span>
373
- <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;Could not process input document #{input_file.inspect}&quot;</span>
374
- <span class="ruby-keyword kw">end</span>
183
+ <span class="ruby-identifier">process_input_document</span>
375
184
  <span class="ruby-keyword kw">end</span></pre>
376
185
  </div>
377
186
  </div>
@@ -381,9 +190,9 @@ specification file.
381
190
  <div class="sectiontitle">Instance Public methods</div>
382
191
 
383
192
  <div class="method">
384
- <div class="title" id="M000062">
193
+ <div class="title" id="M000052">
385
194
 
386
- <a name="M000062"></a><b>to_s</b>()
195
+ <a name="M000052"></a><b>to_s</b>()
387
196
 
388
197
  </div>
389
198
 
@@ -399,16 +208,16 @@ Returns the output of this document.
399
208
 
400
209
  <div class="sourcecode">
401
210
  <p class="source-link">
402
- Source: <a href="javascript:toggleSource('M000062_source')" id="l_M000062_source">show</a>
211
+ Source: <a href="javascript:toggleSource('M000052_source')" id="l_M000052_source">show</a>
403
212
 
404
- | <a href="http://github.com/sunaku/erbook/blob/eda493a151e7b55d041d0a094c586e2c22aa63cc/lib/erbook/document.rb#L246" target="_blank" class="github_url">on GitHub</a>
213
+ | <a href="http://github.com/sunaku/erbook/blob/8c15499d81a4c71c3a15850bff81dc6e5d0236c5/lib/erbook/document.rb#L55" target="_blank" class="github_url">on GitHub</a>
405
214
 
406
215
  </p>
407
- <div id="M000062_source" class="dyn-source">
408
- <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 246</span>
216
+ <div id="M000052_source" class="dyn-source">
217
+ <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 55</span>
409
218
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
410
219
  <span class="ruby-constant">Template</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{@format_file}:output&quot;</span>, <span class="ruby-ivar">@format</span>[<span class="ruby-value str">'output'</span>].<span class="ruby-identifier">to_s</span>).
411
- <span class="ruby-identifier">render_with</span>(<span class="ruby-ivar">@template_vars</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">:@content</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@processed_document</span>.<span class="ruby-identifier">join</span>))
220
+ <span class="ruby-identifier">render_with</span>(<span class="ruby-ivar">@template_vars</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">:@content</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@evaluated_document</span>.<span class="ruby-identifier">join</span>))
412
221
  <span class="ruby-keyword kw">end</span></pre>
413
222
  </div>
414
223
  </div>
@@ -49,7 +49,7 @@
49
49
  <dd>
50
50
  <ul>
51
51
 
52
- <li><a href="#M000066">chain?</a></li>
52
+ <li><a href="#M000056">chain?</a></li>
53
53
 
54
54
  </ul>
55
55
  </dd>
@@ -58,7 +58,7 @@
58
58
  <dd>
59
59
  <ul>
60
60
 
61
- <li><a href="#M000067">inline?</a></li>
61
+ <li><a href="#M000057">inline?</a></li>
62
62
 
63
63
  </ul>
64
64
  </dd>
@@ -67,7 +67,7 @@
67
67
  <dd>
68
68
  <ul>
69
69
 
70
- <li><a href="#M000065">ordinal_number?</a></li>
70
+ <li><a href="#M000055">ordinal_number?</a></li>
71
71
 
72
72
  </ul>
73
73
  </dd>
@@ -76,9 +76,9 @@
76
76
  <dd>
77
77
  <ul>
78
78
 
79
- <li><a href="#M000064">section_number?</a>,</li>
79
+ <li><a href="#M000054">section_number?</a>,</li>
80
80
 
81
- <li><a href="#M000068">silent?</a></li>
81
+ <li><a href="#M000058">silent?</a></li>
82
82
 
83
83
  </ul>
84
84
  </dd>
@@ -87,7 +87,7 @@
87
87
  <dd>
88
88
  <ul>
89
89
 
90
- <li><a href="#M000063">to_s</a></li>
90
+ <li><a href="#M000053">to_s</a></li>
91
91
 
92
92
  </ul>
93
93
  </dd>
@@ -109,9 +109,9 @@
109
109
  <div class="sectiontitle">Instance Public methods</div>
110
110
 
111
111
  <div class="method">
112
- <div class="title" id="M000066">
112
+ <div class="title" id="M000056">
113
113
 
114
- <a name="M000066"></a><b>chain?</b>()
114
+ <a name="M000056"></a><b>chain?</b>()
115
115
 
116
116
  </div>
117
117
 
@@ -127,13 +127,13 @@ Include this node in the previous/next navigation chain?
127
127
 
128
128
  <div class="sourcecode">
129
129
  <p class="source-link">
130
- Source: <a href="javascript:toggleSource('M000066_source')" id="l_M000066_source">show</a>
130
+ Source: <a href="javascript:toggleSource('M000056_source')" id="l_M000056_source">show</a>
131
131
 
132
- | <a href="http://github.com/sunaku/erbook/blob/eda493a151e7b55d041d0a094c586e2c22aa63cc/lib/erbook/document.rb#L279" target="_blank" class="github_url">on GitHub</a>
132
+ | <a href="http://github.com/sunaku/erbook/blob/8c15499d81a4c71c3a15850bff81dc6e5d0236c5/lib/erbook/document.rb#L88" target="_blank" class="github_url">on GitHub</a>
133
133
 
134
134
  </p>
135
- <div id="M000066_source" class="dyn-source">
136
- <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 279</span>
135
+ <div id="M000056_source" class="dyn-source">
136
+ <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 88</span>
137
137
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">chain?</span>
138
138
  <span class="ruby-identifier">definition</span>[<span class="ruby-value str">'chain'</span>]
139
139
  <span class="ruby-keyword kw">end</span></pre>
@@ -143,9 +143,9 @@ Include this node in the previous/next navigation chain?
143
143
  </div>
144
144
 
145
145
  <div class="method">
146
- <div class="title" id="M000067">
146
+ <div class="title" id="M000057">
147
147
 
148
- <a name="M000067"></a><b>inline?</b>()
148
+ <a name="M000057"></a><b>inline?</b>()
149
149
 
150
150
  </div>
151
151
 
@@ -154,13 +154,13 @@ Include this node in the previous/next navigation chain?
154
154
 
155
155
  <div class="sourcecode">
156
156
  <p class="source-link">
157
- Source: <a href="javascript:toggleSource('M000067_source')" id="l_M000067_source">show</a>
157
+ Source: <a href="javascript:toggleSource('M000057_source')" id="l_M000057_source">show</a>
158
158
 
159
- | <a href="http://github.com/sunaku/erbook/blob/eda493a151e7b55d041d0a094c586e2c22aa63cc/lib/erbook/document.rb#L283" target="_blank" class="github_url">on GitHub</a>
159
+ | <a href="http://github.com/sunaku/erbook/blob/8c15499d81a4c71c3a15850bff81dc6e5d0236c5/lib/erbook/document.rb#L92" target="_blank" class="github_url">on GitHub</a>
160
160
 
161
161
  </p>
162
- <div id="M000067_source" class="dyn-source">
163
- <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 283</span>
162
+ <div id="M000057_source" class="dyn-source">
163
+ <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 92</span>
164
164
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inline?</span>
165
165
  <span class="ruby-identifier">definition</span>[<span class="ruby-value str">'inline'</span>]
166
166
  <span class="ruby-keyword kw">end</span></pre>
@@ -170,9 +170,9 @@ Include this node in the previous/next navigation chain?
170
170
  </div>
171
171
 
172
172
  <div class="method">
173
- <div class="title" id="M000065">
173
+ <div class="title" id="M000055">
174
174
 
175
- <a name="M000065"></a><b>ordinal_number?</b>()
175
+ <a name="M000055"></a><b>ordinal_number?</b>()
176
176
 
177
177
  </div>
178
178
 
@@ -181,13 +181,13 @@ Include this node in the previous/next navigation chain?
181
181
 
182
182
  <div class="sourcecode">
183
183
  <p class="source-link">
184
- Source: <a href="javascript:toggleSource('M000065_source')" id="l_M000065_source">show</a>
184
+ Source: <a href="javascript:toggleSource('M000055_source')" id="l_M000055_source">show</a>
185
185
 
186
- | <a href="http://github.com/sunaku/erbook/blob/eda493a151e7b55d041d0a094c586e2c22aa63cc/lib/erbook/document.rb#L272" target="_blank" class="github_url">on GitHub</a>
186
+ | <a href="http://github.com/sunaku/erbook/blob/8c15499d81a4c71c3a15850bff81dc6e5d0236c5/lib/erbook/document.rb#L81" target="_blank" class="github_url">on GitHub</a>
187
187
 
188
188
  </p>
189
- <div id="M000065_source" class="dyn-source">
190
- <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 272</span>
189
+ <div id="M000055_source" class="dyn-source">
190
+ <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 81</span>
191
191
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ordinal_number?</span>
192
192
  <span class="ruby-constant">Array</span>(<span class="ruby-identifier">definition</span>[<span class="ruby-value str">'number'</span>]).<span class="ruby-identifier">include?</span> <span class="ruby-value str">'ordinal'</span>
193
193
  <span class="ruby-keyword kw">end</span></pre>
@@ -197,9 +197,9 @@ Include this node in the previous/next navigation chain?
197
197
  </div>
198
198
 
199
199
  <div class="method">
200
- <div class="title" id="M000064">
200
+ <div class="title" id="M000054">
201
201
 
202
- <a name="M000064"></a><b>section_number?</b>()
202
+ <a name="M000054"></a><b>section_number?</b>()
203
203
 
204
204
  </div>
205
205
 
@@ -208,13 +208,13 @@ Include this node in the previous/next navigation chain?
208
208
 
209
209
  <div class="sourcecode">
210
210
  <p class="source-link">
211
- Source: <a href="javascript:toggleSource('M000064_source')" id="l_M000064_source">show</a>
211
+ Source: <a href="javascript:toggleSource('M000054_source')" id="l_M000054_source">show</a>
212
212
 
213
- | <a href="http://github.com/sunaku/erbook/blob/eda493a151e7b55d041d0a094c586e2c22aa63cc/lib/erbook/document.rb#L268" target="_blank" class="github_url">on GitHub</a>
213
+ | <a href="http://github.com/sunaku/erbook/blob/8c15499d81a4c71c3a15850bff81dc6e5d0236c5/lib/erbook/document.rb#L77" target="_blank" class="github_url">on GitHub</a>
214
214
 
215
215
  </p>
216
- <div id="M000064_source" class="dyn-source">
217
- <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 268</span>
216
+ <div id="M000054_source" class="dyn-source">
217
+ <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 77</span>
218
218
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">section_number?</span>
219
219
  <span class="ruby-constant">Array</span>(<span class="ruby-identifier">definition</span>[<span class="ruby-value str">'number'</span>]).<span class="ruby-identifier">include?</span> <span class="ruby-value str">'section'</span>
220
220
  <span class="ruby-keyword kw">end</span></pre>
@@ -224,9 +224,9 @@ Include this node in the previous/next navigation chain?
224
224
  </div>
225
225
 
226
226
  <div class="method">
227
- <div class="title" id="M000068">
227
+ <div class="title" id="M000058">
228
228
 
229
- <a name="M000068"></a><b>silent?</b>()
229
+ <a name="M000058"></a><b>silent?</b>()
230
230
 
231
231
  </div>
232
232
 
@@ -235,13 +235,13 @@ Include this node in the previous/next navigation chain?
235
235
 
236
236
  <div class="sourcecode">
237
237
  <p class="source-link">
238
- Source: <a href="javascript:toggleSource('M000068_source')" id="l_M000068_source">show</a>
238
+ Source: <a href="javascript:toggleSource('M000058_source')" id="l_M000058_source">show</a>
239
239
 
240
- | <a href="http://github.com/sunaku/erbook/blob/eda493a151e7b55d041d0a094c586e2c22aa63cc/lib/erbook/document.rb#L287" target="_blank" class="github_url">on GitHub</a>
240
+ | <a href="http://github.com/sunaku/erbook/blob/8c15499d81a4c71c3a15850bff81dc6e5d0236c5/lib/erbook/document.rb#L96" target="_blank" class="github_url">on GitHub</a>
241
241
 
242
242
  </p>
243
- <div id="M000068_source" class="dyn-source">
244
- <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 287</span>
243
+ <div id="M000058_source" class="dyn-source">
244
+ <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 96</span>
245
245
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">silent?</span>
246
246
  <span class="ruby-identifier">definition</span>[<span class="ruby-value str">'silent'</span>]
247
247
  <span class="ruby-keyword kw">end</span></pre>
@@ -251,9 +251,9 @@ Include this node in the previous/next navigation chain?
251
251
  </div>
252
252
 
253
253
  <div class="method">
254
- <div class="title" id="M000063">
254
+ <div class="title" id="M000053">
255
255
 
256
- <a name="M000063"></a><b>to_s</b>()
256
+ <a name="M000053"></a><b>to_s</b>()
257
257
 
258
258
  </div>
259
259
 
@@ -269,13 +269,13 @@ Returns the output of this node.
269
269
 
270
270
  <div class="sourcecode">
271
271
  <p class="source-link">
272
- Source: <a href="javascript:toggleSource('M000063_source')" id="l_M000063_source">show</a>
272
+ Source: <a href="javascript:toggleSource('M000053_source')" id="l_M000053_source">show</a>
273
273
 
274
- | <a href="http://github.com/sunaku/erbook/blob/eda493a151e7b55d041d0a094c586e2c22aa63cc/lib/erbook/document.rb#L260" target="_blank" class="github_url">on GitHub</a>
274
+ | <a href="http://github.com/sunaku/erbook/blob/8c15499d81a4c71c3a15850bff81dc6e5d0236c5/lib/erbook/document.rb#L69" target="_blank" class="github_url">on GitHub</a>
275
275
 
276
276
  </p>
277
- <div id="M000063_source" class="dyn-source">
278
- <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 260</span>
277
+ <div id="M000053_source" class="dyn-source">
278
+ <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 69</span>
279
279
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
280
280
  <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">silent?</span>
281
281
  <span class="ruby-value str">''</span>