doc/api/classes/ERBook/Document.html in erbook-7.3.0 vs doc/api/classes/ERBook/Document.html in erbook-8.0.0
- old
+ new
@@ -47,20 +47,20 @@
<dt>N</dt>
<dd>
<ul>
- <li><a href="#M000046">new</a></li>
+ <li><a href="#M000052">new</a></li>
</ul>
</dd>
<dt>T</dt>
<dd>
<ul>
- <li><a href="#M000057">to_s</a></li>
+ <li><a href="#M000064">to_s</a></li>
</ul>
</dd>
</dl>
@@ -130,13 +130,13 @@
<div class="sectiontitle">Class Public methods</div>
<div class="method">
- <div class="title" id="M000046">
+ <div class="title" id="M000052">
- <a name="M000046"></a><b>new</b>(format_name, input_text, input_file, options = {})
+ <a name="M000052"></a><b>new</b>(format_name, input_text, input_file, options = {})
</div>
<div class="description">
<h4>Parameters</h4>
@@ -164,16 +164,16 @@
<div class="sourcecode">
<p class="source-link">
- Source: <a href="javascript:toggleSource('M000046_source')" id="l_M000046_source">show</a>
+ Source: <a href="javascript:toggleSource('M000052_source')" id="l_M000052_source">show</a>
- | <a href="http://github.com/sunaku/erbook/blob/5089c2c413ceae00ec4d0eae22d9d71c50281a2f/lib/erbook/document.rb#L42" target="_blank" class="github_url">on GitHub</a>
+ | <a href="http://github.com/sunaku/erbook/blob/aeaff38e68b16f53360682a1f9770747dd84ecb6/lib/erbook/document.rb#L42" target="_blank" class="github_url">on GitHub</a>
</p>
- <div id="M000046_source" class="dyn-source">
+ <div id="M000052_source" class="dyn-source">
<pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 42</span>
<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> = {}
<span class="ruby-comment cmt"># process format specification</span>
<span class="ruby-ivar">@format_file</span> = <span class="ruby-identifier">format_name</span>.<span class="ruby-identifier">to_s</span>
@@ -215,48 +215,58 @@
<span class="ruby-comment cmt"># Handles the method call from a node</span>
<span class="ruby-comment cmt"># placeholder in the input document.</span>
<span class="ruby-comment cmt">#</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sandbox</span>.<span class="ruby-identifier">__node_impl__</span> <span class="ruby-identifier">node_type</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">node_args</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">node_content</span>
<span class="ruby-identifier">node</span> = <span class="ruby-constant">Node</span>.<span class="ruby-identifier">new</span>(
- <span class="ruby-identifier">:type</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">node_type</span>,
- <span class="ruby-identifier">:defn</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@format</span>[<span class="ruby-value str">'nodes'</span>][<span class="ruby-identifier">node_type</span>],
- <span class="ruby-identifier">:args</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">node_args</span>,
- <span class="ruby-identifier">:trace</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">caller</span>,
- <span class="ruby-identifier">:children</span> =<span class="ruby-operator">></span> []
+ <span class="ruby-identifier">:type</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">node_type</span>,
+ <span class="ruby-identifier">:definition</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@format</span>[<span class="ruby-value str">'nodes'</span>][<span class="ruby-identifier">node_type</span>],
+ <span class="ruby-identifier">:arguments</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">node_args</span>,
+ <span class="ruby-identifier">:backtrace</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">caller</span>,
+ <span class="ruby-identifier">:parent</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">last</span>,
+ <span class="ruby-identifier">:children</span> =<span class="ruby-operator">></span> []
)
+
+ <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>
+ <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>
+ <span class="ruby-identifier">node</span>.<span class="ruby-identifier">__send__</span> <span class="ruby-node">"#{param}="</span>, <span class="ruby-identifier">node_args</span>.<span class="ruby-identifier">shift</span>
+ <span class="ruby-keyword kw">end</span>
+
<span class="ruby-ivar">@nodes</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">node</span>
<span class="ruby-ivar">@nodes_by_type</span>[<span class="ruby-identifier">node</span>.<span class="ruby-identifier">type</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">node</span>
- <span class="ruby-comment cmt"># calculate occurrence number for this node</span>
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">defn</span>[<span class="ruby-value str">'number'</span>]
+ <span class="ruby-comment cmt"># calculate ordinal number for this node</span>
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">ordinal_number?</span>
<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> }
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">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>)
+ <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>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-comment cmt"># assign node family</span>
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span> = <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">last</span>
+ <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>
<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">children</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">node</span>
<span class="ruby-identifier">node</span>.<span class="ruby-identifier">parent</span> = <span class="ruby-identifier">parent</span>
<span class="ruby-identifier">node</span>.<span class="ruby-identifier">depth</span> = <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">depth</span>
- <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">defn</span>[<span class="ruby-value str">'depth'</span>]
+ <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>
- <span class="ruby-comment cmt"># calculate latex-style index number for this node</span>
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">defn</span>[<span class="ruby-value str">'index'</span>]
- <span class="ruby-identifier">ancestry</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">defn</span>[<span class="ruby-value str">'index'</span>] }.<span class="ruby-identifier">index</span>
- <span class="ruby-identifier">branches</span> = <span class="ruby-identifier">node</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">index</span> }
+ <span class="ruby-comment cmt"># calculate section number for this node</span>
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">section_number?</span>
+ <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> }
+ <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> }
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">index</span> = [<span class="ruby-identifier">ancestry</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">join</span>(<span class="ruby-value str">'.'</span>)
+ <span class="ruby-identifier">node</span>.<span class="ruby-identifier">section_number</span> = [
+ <span class="ruby-identifier">ancestor</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">join</span>(<span class="ruby-value str">'.'</span>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">else</span>
<span class="ruby-ivar">@roots</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">node</span>
<span class="ruby-identifier">node</span>.<span class="ruby-identifier">parent</span> = <span class="ruby-keyword kw">nil</span>
<span class="ruby-identifier">node</span>.<span class="ruby-identifier">depth</span> = <span class="ruby-value">0</span>
- <span class="ruby-comment cmt"># calculate latex-style index number for this node</span>
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">defn</span>[<span class="ruby-value str">'index'</span>]
- <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">index</span> }
- <span class="ruby-identifier">node</span>.<span class="ruby-identifier">index</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>
+ <span class="ruby-comment cmt"># calculate section number for this node</span>
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">section_number?</span>
+ <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> }
+ <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>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-comment cmt"># assign node content</span>
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
@@ -285,13 +295,11 @@
<span class="ruby-comment cmt"># evaluate the input & build the document tree</span>
<span class="ruby-identifier">template</span>.<span class="ruby-identifier">render</span>
<span class="ruby-ivar">@processed_document</span> = <span class="ruby-identifier">template</span>.<span class="ruby-identifier">buffer</span>
<span class="ruby-comment cmt"># chain block-level nodes together for local navigation</span>
- <span class="ruby-identifier">block_nodes</span> = <span class="ruby-ivar">@nodes</span>.<span class="ruby-identifier">reject</span> <span class="ruby-keyword kw">do</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">defn</span>[<span class="ruby-value str">'bypass'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">defn</span>[<span class="ruby-value str">'inline'</span>]
- <span class="ruby-keyword kw">end</span>
+ <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">anchor?</span> }
<span class="ruby-identifier">require</span> <span class="ruby-value str">'enumerator'</span>
<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>
<span class="ruby-identifier">a</span>.<span class="ruby-identifier">next_node</span> = <span class="ruby-identifier">b</span>
<span class="ruby-identifier">b</span>.<span class="ruby-identifier">prev_node</span> = <span class="ruby-identifier">a</span>
@@ -311,20 +319,24 @@
<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> }
<span class="ruby-comment cmt"># calculate the output for this node</span>
<span class="ruby-identifier">actual_output</span> = <span class="ruby-constant">Template</span>.<span class="ruby-identifier">new</span>(
<span class="ruby-node">"#{@format_file}:nodes:#{n.type}:output"</span>,
- <span class="ruby-identifier">n</span>.<span class="ruby-identifier">defn</span>[<span class="ruby-value str">'output'</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">chomp</span>
+ <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>
).<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">></span> <span class="ruby-identifier">n</span>))
<span class="ruby-comment cmt"># reveal child nodes' actual output in this node's actual output</span>
<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>
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">defn</span>[<span class="ruby-value str">'inline'</span>] <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">c</span>.<span class="ruby-identifier">defn</span>[<span class="ruby-value str">'bypass'</span>]
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">silent?</span>
+ <span class="ruby-comment cmt"># this child's output is not meant to be revealed at this time</span>
+ <span class="ruby-keyword kw">next</span>
+
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">inline?</span>
<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>]
<span class="ruby-keyword kw">else</span>
- <span class="ruby-comment cmt"># pull block-level node out of paragraph tag added by Maruku</span>
+ <span class="ruby-comment cmt"># pull block-level child out of paragraph tag added by Maruku</span>
<span class="ruby-identifier">actual_output</span>.<span class="ruby-identifier">sub!</span> <span class="ruby-node">%r/(<p>\s*)?#{Regexp.quote c.output}/</span> <span class="ruby-keyword kw">do</span>
<span class="ruby-identifier">actual_output_by_node</span>[<span class="ruby-identifier">c</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">$1</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">end</span>
@@ -360,13 +372,13 @@
</div>
<div class="sectiontitle">Instance Public methods</div>
<div class="method">
- <div class="title" id="M000057">
+ <div class="title" id="M000064">
- <a name="M000057"></a><b>to_s</b>()
+ <a name="M000064"></a><b>to_s</b>()
</div>
<div class="description">
<p>
@@ -378,16 +390,16 @@
<div class="sourcecode">
<p class="source-link">
- Source: <a href="javascript:toggleSource('M000057_source')" id="l_M000057_source">show</a>
+ Source: <a href="javascript:toggleSource('M000064_source')" id="l_M000064_source">show</a>
- | <a href="http://github.com/sunaku/erbook/blob/5089c2c413ceae00ec4d0eae22d9d71c50281a2f/lib/erbook/document.rb#L227" target="_blank" class="github_url">on GitHub</a>
+ | <a href="http://github.com/sunaku/erbook/blob/aeaff38e68b16f53360682a1f9770747dd84ecb6/lib/erbook/document.rb#L239" target="_blank" class="github_url">on GitHub</a>
</p>
- <div id="M000057_source" class="dyn-source">
- <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 227</span>
+ <div id="M000064_source" class="dyn-source">
+ <pre><span class="ruby-comment cmt"># File lib/erbook/document.rb, line 239</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
<span class="ruby-constant">Template</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">"#{@format_file}:output"</span>, <span class="ruby-ivar">@format</span>[<span class="ruby-value str">'output'</span>].<span class="ruby-identifier">to_s</span>).
<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">></span> <span class="ruby-ivar">@processed_document</span>.<span class="ruby-identifier">join</span>))
<span class="ruby-keyword kw">end</span></pre>
</div>
\ No newline at end of file