<!DOCTYPE html>

<html> <head> <meta content=“text/html; charset=UTF-8” http-equiv=“Content-Type”>

<title>class ReVIEW::Compiler - review-2.1.0 Documentation</title>

<link type=“text/css” media=“screen” href=“../rdoc.css” rel=“stylesheet”>

<script type=“text/javascript”>

var rdoc_rel_prefix = "../";

</script>

<script type=“text/javascript” charset=“utf-8” src=“../js/jquery.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/navigation.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/search_index.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/search.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/searcher.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/darkfish.js”></script>

<body id=“top” class=“class”> <nav id=“metadata”>

<nav id="home-section" class="section">
<h3 class="section-header">
  <a href="../index.html">Home</a>
  <a href="../table_of_contents.html#classes">Classes</a>
  <a href="../table_of_contents.html#methods">Methods</a>
</h3>

</nav>

<nav id="search-section" class="section project-section" class="initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
  <h3 class="section-header">
    <input type="text" name="search" placeholder="Search" id="search-field"
           title="Type to search, Up and Down to navigate, Enter to load">
  </h3>
</form>

<ul id="search-results" class="initially-hidden"></ul>

</nav>

<div id="file-metadata">
  <nav id="file-list-section" class="section">
<h3 class="section-header">Defined In</h3>
<ul>
  <li>lib/review/compiler.rb
</ul>

</nav>

</div>

<div id="class-metadata">

  <nav id="parent-class-section" class="section">
<h3 class="section-header">Parent</h3>

<p class="link"><a href="../Object.html">Object</a>

</nav>

<!-- Method Quickref -->

<nav id=“method-list-section” class=“section”>

<h3 class="section-header">Methods</h3>

<ul class="link-list">

  <li ><a href="#method-c-defblock">::defblock</a>

  <li ><a href="#method-c-definline">::definline</a>

  <li ><a href="#method-c-defsingle">::defsingle</a>

  <li ><a href="#method-c-defsyntax">::defsyntax</a>

  <li ><a href="#method-c-new">::new</a>

  <li ><a href="#method-i-block_open-3F">#block_open?</a>

  <li ><a href="#method-i-close_all_tagged_section">#close_all_tagged_section</a>

  <li ><a href="#method-i-close_current_tagged_section">#close_current_tagged_section</a>

  <li ><a href="#method-i-close_tagged_section">#close_tagged_section</a>

  <li ><a href="#method-i-compile">#compile</a>

  <li ><a href="#method-i-compile_block">#compile_block</a>

  <li ><a href="#method-i-compile_command">#compile_command</a>

  <li ><a href="#method-i-compile_dlist">#compile_dlist</a>

  <li ><a href="#method-i-compile_headline">#compile_headline</a>

  <li ><a href="#method-i-compile_inline">#compile_inline</a>

  <li ><a href="#method-i-compile_olist">#compile_olist</a>

  <li ><a href="#method-i-compile_paragraph">#compile_paragraph</a>

  <li ><a href="#method-i-compile_single">#compile_single</a>

  <li ><a href="#method-i-compile_ulist">#compile_ulist</a>

  <li ><a href="#method-i-compile_unknown_command">#compile_unknown_command</a>

  <li ><a href="#method-i-default_block">#default_block</a>

  <li ><a href="#method-i-do_compile">#do_compile</a>

  <li ><a href="#method-i-error">#error</a>

  <li ><a href="#method-i-headline">#headline</a>

  <li ><a href="#method-i-inline_defined-3F">#inline_defined?</a>

  <li ><a href="#method-i-open_tagged_section">#open_tagged_section</a>

  <li ><a href="#method-i-parse_args">#parse_args</a>

  <li ><a href="#method-i-read_block">#read_block</a>

  <li ><a href="#method-i-read_command">#read_command</a>

  <li ><a href="#method-i-syntax_defined-3F">#syntax_defined?</a>

  <li ><a href="#method-i-syntax_descriptor">#syntax_descriptor</a>

  <li ><a href="#method-i-tagged_section_init">#tagged_section_init</a>

  <li ><a href="#method-i-text">#text</a>

  <li ><a href="#method-i-warn">#warn</a>

</ul>

</nav>

</div>

<div id="project-metadata">
  <nav id="fileindex-section" class="section project-section">
<h3 class="section-header">Pages</h3>

<ul>

  <li class="file"><a href="../ChangeLog.html">ChangeLog</a>

</ul>

</nav>

  <nav id="classindex-section" class="section project-section">
<h3 class="section-header">Class and Module Index</h3>

<ul class="link-list">

  <li><a href="../EPUBMaker.html">EPUBMaker</a>

  <li><a href="../EPUBMaker/Content.html">EPUBMaker::Content</a>

  <li><a href="../EPUBMaker/EPUBCommon.html">EPUBMaker::EPUBCommon</a>

  <li><a href="../EPUBMaker/EPUBv2.html">EPUBMaker::EPUBv2</a>

  <li><a href="../EPUBMaker/EPUBv3.html">EPUBMaker::EPUBv3</a>

  <li><a href="../EPUBMaker/Producer.html">EPUBMaker::Producer</a>

  <li><a href="../Encoding.html">Encoding</a>

  <li><a href="../Hash.html">Hash</a>

  <li><a href="../LineInput.html">LineInput</a>

  <li><a href="../Object.html">Object</a>

  <li><a href="../ReVIEW.html">ReVIEW</a>

  <li><a href="../ReVIEW/ApplicationError.html">ReVIEW::ApplicationError</a>

  <li><a href="../ReVIEW/Book.html">ReVIEW::Book</a>

  <li><a href="../ReVIEW/Book/Base.html">ReVIEW::Book::Base</a>

  <li><a href="../ReVIEW/Book/BibpaperIndex.html">ReVIEW::Book::BibpaperIndex</a>

  <li><a href="../ReVIEW/Book/Chapter.html">ReVIEW::Book::Chapter</a>

  <li><a href="../ReVIEW/Book/ChapterIndex.html">ReVIEW::Book::ChapterIndex</a>

  <li><a href="../ReVIEW/Book/ColumnIndex.html">ReVIEW::Book::ColumnIndex</a>

  <li><a href="../ReVIEW/Book/Compilable.html">ReVIEW::Book::Compilable</a>

  <li><a href="../ReVIEW/Book/FootnoteIndex.html">ReVIEW::Book::FootnoteIndex</a>

  <li><a href="../ReVIEW/Book/HeadlineIndex.html">ReVIEW::Book::HeadlineIndex</a>

  <li><a href="../ReVIEW/Book/IconIndex.html">ReVIEW::Book::IconIndex</a>

  <li><a href="../ReVIEW/Book/ImageFinder.html">ReVIEW::Book::ImageFinder</a>

  <li><a href="../ReVIEW/Book/ImageIndex.html">ReVIEW::Book::ImageIndex</a>

  <li><a href="../ReVIEW/Book/ImageIndex/Item.html">ReVIEW::Book::ImageIndex::Item</a>

  <li><a href="../ReVIEW/Book/IndepImageIndex.html">ReVIEW::Book::IndepImageIndex</a>

  <li><a href="../ReVIEW/Book/IndepImageIndex/Item.html">ReVIEW::Book::IndepImageIndex::Item</a>

  <li><a href="../ReVIEW/Book/Index.html">ReVIEW::Book::Index</a>

  <li><a href="../ReVIEW/Book/ListIndex.html">ReVIEW::Book::ListIndex</a>

  <li><a href="../ReVIEW/Book/NumberlessImageIndex.html">ReVIEW::Book::NumberlessImageIndex</a>

  <li><a href="../ReVIEW/Book/NumberlessImageIndex/Item.html">ReVIEW::Book::NumberlessImageIndex::Item</a>

  <li><a href="../ReVIEW/Book/PageMetric.html">ReVIEW::Book::PageMetric</a>

  <li><a href="../ReVIEW/Book/Part.html">ReVIEW::Book::Part</a>

  <li><a href="../ReVIEW/Book/TableIndex.html">ReVIEW::Book::TableIndex</a>

  <li><a href="../ReVIEW/Book/Volume.html">ReVIEW::Book::Volume</a>

  <li><a href="../ReVIEW/Builder.html">ReVIEW::Builder</a>

  <li><a href="../ReVIEW/Catalog.html">ReVIEW::Catalog</a>

  <li><a href="../ReVIEW/CompileError.html">ReVIEW::CompileError</a>

  <li><a href="../ReVIEW/Compiler.html">ReVIEW::Compiler</a>

  <li><a href="../ReVIEW/Compiler/InlineSyntaxElement.html">ReVIEW::Compiler::InlineSyntaxElement</a>

  <li><a href="../ReVIEW/Compiler/SyntaxElement.html">ReVIEW::Compiler::SyntaxElement</a>

  <li><a href="../ReVIEW/ConfigError.html">ReVIEW::ConfigError</a>

  <li><a href="../ReVIEW/Configure.html">ReVIEW::Configure</a>

  <li><a href="../ReVIEW/Converter.html">ReVIEW::Converter</a>

  <li><a href="../ReVIEW/EPUBBuilder.html">ReVIEW::EPUBBuilder</a>

  <li><a href="../ReVIEW/EPUBMaker.html">ReVIEW::EPUBMaker</a>

  <li><a href="../ReVIEW/EPUBMaker/ReVIEWHeaderListener.html">ReVIEW::EPUBMaker::ReVIEWHeaderListener</a>

  <li><a href="../ReVIEW/EWBBuilder.html">ReVIEW::EWBBuilder</a>

  <li><a href="../ReVIEW/Error.html">ReVIEW::Error</a>

  <li><a href="../ReVIEW/ErrorUtils.html">ReVIEW::ErrorUtils</a>

  <li><a href="../ReVIEW/FileNotFound.html">ReVIEW::FileNotFound</a>

  <li><a href="../ReVIEW/HTMLBuilder.html">ReVIEW::HTMLBuilder</a>

  <li><a href="../ReVIEW/HTMLTOCPrinter.html">ReVIEW::HTMLTOCPrinter</a>

  <li><a href="../ReVIEW/HTMLToc.html">ReVIEW::HTMLToc</a>

  <li><a href="../ReVIEW/HTMLUtils.html">ReVIEW::HTMLUtils</a>

  <li><a href="../ReVIEW/I18n.html">ReVIEW::I18n</a>

  <li><a href="../ReVIEW/IDGXMLBuilder.html">ReVIEW::IDGXMLBuilder</a>

  <li><a href="../ReVIEW/KeyError.html">ReVIEW::KeyError</a>

  <li><a href="../ReVIEW/LATEXBuilder.html">ReVIEW::LATEXBuilder</a>

  <li><a href="../ReVIEW/LaTeXIndex.html">ReVIEW::LaTeXIndex</a>

  <li><a href="../ReVIEW/LaTeXUtils.html">ReVIEW::LaTeXUtils</a>

  <li><a href="../ReVIEW/Line.html">ReVIEW::Line</a>

  <li><a href="../ReVIEW/LineInput.html">ReVIEW::LineInput</a>

  <li><a href="../ReVIEW/Location.html">ReVIEW::Location</a>

  <li><a href="../ReVIEW/MARKDOWNBuilder.html">ReVIEW::MARKDOWNBuilder</a>

  <li><a href="../ReVIEW/MD2INAOBuilder.html">ReVIEW::MD2INAOBuilder</a>

  <li><a href="../ReVIEW/MakerHelper.html">ReVIEW::MakerHelper</a>

  <li><a href="../ReVIEW/PDFMaker.html">ReVIEW::PDFMaker</a>

  <li><a href="../ReVIEW/Preprocessor.html">ReVIEW::Preprocessor</a>

  <li><a href="../ReVIEW/Preprocessor/Directive.html">ReVIEW::Preprocessor::Directive</a>

  <li><a href="../ReVIEW/Preprocessor/Strip.html">ReVIEW::Preprocessor::Strip</a>

  <li><a href="../ReVIEW/Repository.html">ReVIEW::Repository</a>

  <li><a href="../ReVIEW/SecCounter.html">ReVIEW::SecCounter</a>

  <li><a href="../ReVIEW/SyntaxError.html">ReVIEW::SyntaxError</a>

  <li><a href="../ReVIEW/TEXTBuilder.html">ReVIEW::TEXTBuilder</a>

  <li><a href="../ReVIEW/TOCParser.html">ReVIEW::TOCParser</a>

  <li><a href="../ReVIEW/TOCParser/Chapter.html">ReVIEW::TOCParser::Chapter</a>

  <li><a href="../ReVIEW/TOCParser/List.html">ReVIEW::TOCParser::List</a>

  <li><a href="../ReVIEW/TOCParser/Node.html">ReVIEW::TOCParser::Node</a>

  <li><a href="../ReVIEW/TOCParser/Paragraph.html">ReVIEW::TOCParser::Paragraph</a>

  <li><a href="../ReVIEW/TOCParser/Section.html">ReVIEW::TOCParser::Section</a>

  <li><a href="../ReVIEW/TOCPrinter.html">ReVIEW::TOCPrinter</a>

  <li><a href="../ReVIEW/TOPBuilder.html">ReVIEW::TOPBuilder</a>

  <li><a href="../ReVIEW/Template.html">ReVIEW::Template</a>

  <li><a href="../ReVIEW/TextTOCPrinter.html">ReVIEW::TextTOCPrinter</a>

  <li><a href="../ReVIEW/TextUtils.html">ReVIEW::TextUtils</a>

  <li><a href="../ReVIEW/Unfold.html">ReVIEW::Unfold</a>

  <li><a href="../ReVIEW/WEBMaker.html">ReVIEW::WEBMaker</a>

  <li><a href="../ReVIEW/WEBTOCPrinter.html">ReVIEW::WEBTOCPrinter</a>

  <li><a href="../ReVIEW/WrongInput.html">ReVIEW::WrongInput</a>

  <li><a href="../ReVIEW/YAMLLoader.html">ReVIEW::YAMLLoader</a>

  <li><a href="../String.html">String</a>

</ul>

</nav>

</div>

</nav>

<div id=“documentation”>

<h1 class="class">class ReVIEW::Compiler</h1>

<div id="description" class="description">

</div><!-- description -->

<section id="5Buntitled-5D" class="documentation-section">

  <!-- Constants -->
  <section id="constants-list" class="section">
    <h3 class="section-header">Constants</h3>
    <dl>

      <dt id="INLINE">INLINE

      <dd class="description">

      <dt id="SYNTAX">SYNTAX

      <dd class="description">

    </dl>
  </section>

  <!-- Attributes -->
  <section id="attribute-method-details" class="method-section section">
    <h3 class="section-header">Attributes</h3>

    <div id="attribute-i-strategy" class="method-detail">
      <div class="method-heading attribute-method-heading">
        <span class="method-name">strategy</span><span
          class="attribute-access-type">[R]</pan>
      </div>

      <div class="method-description">

      </div>
    </div>

  </ection><!-- attribute-method-details -->

  <!-- Methods -->

   <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
    <h3 class="section-header">Public Class Methods</h3>

    <div id="method-c-defblock" class="method-detail ">

      <div class="method-heading">
        <span class="method-name">defblock</pan><span
          class="method-args">(name, argc, optional = false, &block)</span>

        <span class="method-click-advice">click to toggle source</pan>

      </div>

      <div class="method-description">

        <div class="method-source-code" id="defblock-source">
          <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 92</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-constant”>Compiler</span>.<span class=“ruby-identifier”>defblock</span>(<span class=“ruby-identifier”>name</span>, <span class=“ruby-identifier”>argc</span>, <span class=“ruby-identifier”>optional</span> = <span class=“ruby-keyword”>false</span>, <span class=“ruby-operator”>&amp;</span><span class=“ruby-identifier”>block</span>)

<span class="ruby-identifier">defsyntax</span> <span class="ruby-identifier">name</span>, (<span class="ruby-identifier">optional</span> <span class="ruby-operator">?</span> <span class="ruby-value">:optional</span> <span class="ruby-operator">:</span> <span class="ruby-value">:block</span>), <span class="ruby-identifier">argc</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- defblock-source -->

  </div>

</div><!-- defblock-method -->

<div id="method-c-definline" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">definline</span><span
      class="method-args">(name)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="definline-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 122</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-constant”>Compiler</span>.<span class=“ruby-identifier”>definline</span>(<span class=“ruby-identifier”>name</span>)

<span class="ruby-constant">INLINE</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-constant">InlineSyntaxElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>)

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- definline-source -->

  </div>

</div><!-- definline-method -->

<div id="method-c-defsingle" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">defsingle</span><span
      class="method-args">(name, argc, &block)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="defsingle-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 96</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-constant”>Compiler</span>.<span class=“ruby-identifier”>defsingle</span>(<span class=“ruby-identifier”>name</span>, <span class=“ruby-identifier”>argc</span>, <span class=“ruby-operator”>&amp;</span><span class=“ruby-identifier”>block</span>)

<span class="ruby-identifier">defsyntax</span> <span class="ruby-identifier">name</span>, <span class="ruby-value">:line</span>, <span class="ruby-identifier">argc</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- defsingle-source -->

  </div>

</div><!-- defsingle-method -->

<div id="method-c-defsyntax" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">defsyntax</span><span
      class="method-args">(name, type, argc, &block)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="defsyntax-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 100</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-constant”>Compiler</span>.<span class=“ruby-identifier”>defsyntax</span>(<span class=“ruby-identifier”>name</span>, <span class=“ruby-identifier”>type</span>, <span class=“ruby-identifier”>argc</span>, <span class=“ruby-operator”>&amp;</span><span class=“ruby-identifier”>block</span>)

<span class="ruby-constant">SYNTAX</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-constant">SyntaxElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">type</span>, <span class="ruby-identifier">argc</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- defsyntax-source -->

  </div>

</div><!-- defsyntax-method -->

<div id="method-c-new" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">new</span><span
      class="method-args">(strategy)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="new-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 43</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>initialize</span>(<span class=“ruby-identifier”>strategy</span>)

<span class="ruby-ivar">@strategy</span> = <span class="ruby-identifier">strategy</span>

<span class=“ruby-keyword”>end</span></pre>

      </div><!-- new-source -->

    </div>

  </div><!-- new-method -->

</section><!-- public-class-method-details -->

 <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
  <h3 class="section-header">Public Instance Methods</h3>

  <div id="method-i-compile" class="method-detail ">

    <div class="method-heading">
      <span class="method-name">compile</span><span
        class="method-args">(chap)</span>

      <span class="method-click-advice">click to toggle source</span>

    </div>

    <div class="method-description">

      <div class="method-source-code" id="compile-source">
        <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 49</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile</span>(<span class=“ruby-identifier”>chap</span>)

<span class="ruby-ivar">@chapter</span> = <span class="ruby-identifier">chap</span>
<span class="ruby-identifier">do_compile</span>
<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">result</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile-source -->

  </div>

</div><!-- compile-method -->

<div id="method-i-inline_defined-3F" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">inline_defined?</span><span
      class="method-args">(name)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="inline_defined-3F-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 126</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>inline_defined?</span>(<span class=“ruby-identifier”>name</span>)

<span class="ruby-constant">INLINE</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>)

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- inline_defined-3F-source -->

  </div>

</div><!-- inline_defined-3F-method -->

<div id="method-i-syntax_defined-3F" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">syntax_defined?</span><span
      class="method-args">(name)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="syntax_defined-3F-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 104</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>syntax_defined?</span>(<span class=“ruby-identifier”>name</span>)

<span class="ruby-constant">SYNTAX</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>)

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- syntax_defined-3F-source -->

  </div>

</div><!-- syntax_defined-3F-method -->

<div id="method-i-syntax_descriptor" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">syntax_descriptor</span><span
      class="method-args">(name)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="syntax_descriptor-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 108</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>syntax_descriptor</span>(<span class=“ruby-identifier”>name</span>)

<span class="ruby-constant">SYNTAX</span>[<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>]

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- syntax_descriptor-source -->

  </div>

</div><!-- syntax_descriptor-method -->

<div id="method-i-text" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">text</span><span
      class="method-args">(str)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="text-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 517</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>text</span>(<span class=“ruby-identifier”>str</span>)

<span class="ruby-keyword">return</span> <span class="ruby-string">&#39;&#39;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-identifier">words</span> = <span class="ruby-identifier">str</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/(@&lt;\w+&gt;\{(?:[^\}\]|\.)*?\})/</span>, <span class="ruby-value">-1</span>)
<span class="ruby-identifier">words</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
  <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;`@&lt;xxx&gt;&#39; seen but is not valid inline op: #{w}&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">w</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp">/@&lt;\w+&gt;/</span>).<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-regexp">/\A@&lt;raw&gt;/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">w</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">nofunc_text</span>(<span class="ruby-identifier">words</span>.<span class="ruby-identifier">shift</span>)
<span class="ruby-keyword">until</span> <span class="ruby-identifier">words</span>.<span class="ruby-identifier">empty?</span>
  <span class="ruby-identifier">result</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">compile_inline</span>(<span class="ruby-identifier">words</span>.<span class="ruby-identifier">shift</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/\\}/</span>, <span class="ruby-string">&#39;}&#39;</span>))
  <span class="ruby-identifier">result</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">nofunc_text</span>(<span class="ruby-identifier">words</span>.<span class="ruby-identifier">shift</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>

<span class=“ruby-keyword”>rescue</span> =<span class=“ruby-operator”>&gt;</span> <span class=“ruby-identifier”>err</span>

<span class="ruby-identifier">error</span> <span class="ruby-identifier">err</span>.<span class="ruby-identifier">message</span>

<span class=“ruby-keyword”>end</span></pre>

      </div><!-- text-source -->

    </div>

  </div><!-- text-method -->

</section><!-- public-instance-method-details -->

 <section id="private-instance-5Buntitled-5D-method-details" class="method-section section">
  <h3 class="section-header">Private Instance Methods</h3>

  <div id="method-i-block_open-3F" class="method-detail ">

    <div class="method-heading">
      <span class="method-name">block_open?</span><span
        class="method-args">(line)</span>

      <span class="method-click-advice">click to toggle source</span>

    </div>

    <div class="method-description">

      <div class="method-source-code" id="block_open-3F-source">
        <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 438</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>block_open?</span>(<span class=“ruby-identifier”>line</span>)

<span class="ruby-identifier">line</span>.<span class="ruby-identifier">rstrip</span>[<span class="ruby-value">-1</span>,<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;{&#39;</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- block_open-3F-source -->

  </div>

</div><!-- block_open-3F-method -->

<div id="method-i-close_all_tagged_section" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">close_all_tagged_section</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="close_all_tagged_section-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 345</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>close_all_tagged_section</span>

<span class="ruby-keyword">until</span> <span class="ruby-ivar">@tagged_section</span>.<span class="ruby-identifier">empty?</span>
  <span class="ruby-identifier">close_tagged_section</span>(<span class="ruby-operator">*</span> <span class="ruby-ivar">@tagged_section</span>.<span class="ruby-identifier">pop</span>)
<span class="ruby-keyword">end</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- close_all_tagged_section-source -->

  </div>

</div><!-- close_all_tagged_section-method -->

<div id="method-i-close_current_tagged_section" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">close_current_tagged_section</span><span
      class="method-args">(level)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="close_current_tagged_section-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 311</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>close_current_tagged_section</span>(<span class=“ruby-identifier”>level</span>)

<span class="ruby-keyword">while</span> <span class="ruby-ivar">@tagged_section</span>.<span class="ruby-identifier">last</span> <span class="ruby-keyword">and</span> <span class="ruby-ivar">@tagged_section</span>.<span class="ruby-identifier">last</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">level</span>
  <span class="ruby-identifier">close_tagged_section</span>(<span class="ruby-operator">*</span> <span class="ruby-ivar">@tagged_section</span>.<span class="ruby-identifier">pop</span>)
<span class="ruby-keyword">end</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- close_current_tagged_section-source -->

  </div>

</div><!-- close_current_tagged_section-method -->

<div id="method-i-close_tagged_section" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">close_tagged_section</span><span
      class="method-args">(tag, level)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="close_tagged_section-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 336</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>close_tagged_section</span>(<span class=“ruby-identifier”>tag</span>, <span class=“ruby-identifier”>level</span>)

<span class="ruby-identifier">mid</span> = <span class="ruby-node">&quot;#{tag}_end&quot;</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">mid</span>)
  <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">__send__</span> <span class="ruby-identifier">mid</span>, <span class="ruby-identifier">level</span>
<span class="ruby-keyword">else</span>
  <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;strategy does not support block op: #{mid}&quot;</span>
<span class="ruby-keyword">end</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- close_tagged_section-source -->

  </div>

</div><!-- close_tagged_section-method -->

<div id="method-i-compile_block" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_block</span><span
      class="method-args">(syntax, args, lines)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_block-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 502</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_block</span>(<span class=“ruby-identifier”>syntax</span>, <span class=“ruby-identifier”>args</span>, <span class=“ruby-identifier”>lines</span>)

<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">__send__</span>(<span class="ruby-identifier">syntax</span>.<span class="ruby-identifier">name</span>, (<span class="ruby-identifier">lines</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">default_block</span>(<span class="ruby-identifier">syntax</span>)), <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_block-source -->

  </div>

</div><!-- compile_block-method -->

<div id="method-i-compile_command" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_command</span><span
      class="method-args">(syntax, args, lines)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_command-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 476</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_command</span>(<span class=“ruby-identifier”>syntax</span>, <span class=“ruby-identifier”>args</span>, <span class=“ruby-identifier”>lines</span>)

<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">syntax</span>.<span class="ruby-identifier">name</span>)
  <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;strategy does not support command: //#{syntax.name}&quot;</span>
  <span class="ruby-identifier">compile_unknown_command</span> <span class="ruby-identifier">args</span>, <span class="ruby-identifier">lines</span>
  <span class="ruby-keyword">return</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">begin</span>
  <span class="ruby-identifier">syntax</span>.<span class="ruby-identifier">check_args</span> <span class="ruby-identifier">args</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">CompileError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">err</span>
  <span class="ruby-identifier">error</span> <span class="ruby-identifier">err</span>.<span class="ruby-identifier">message</span>
  <span class="ruby-identifier">args</span> = [<span class="ruby-string">&#39;(NoArgument)&#39;</span>] <span class="ruby-operator">*</span> <span class="ruby-identifier">syntax</span>.<span class="ruby-identifier">min_argc</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">syntax</span>.<span class="ruby-identifier">block_allowed?</span>
  <span class="ruby-identifier">compile_block</span> <span class="ruby-identifier">syntax</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">lines</span>
<span class="ruby-keyword">else</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">lines</span>
    <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;block is not allowed for command //#{syntax.name}; ignore&quot;</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">compile_single</span> <span class="ruby-identifier">syntax</span>, <span class="ruby-identifier">args</span>
<span class="ruby-keyword">end</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_command-source -->

  </div>

</div><!-- compile_command-method -->

<div id="method-i-compile_dlist" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_dlist</span><span
      class="method-args">(f)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_dlist-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 410</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_dlist</span>(<span class=“ruby-identifier”>f</span>)

<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">dl_begin</span>
<span class="ruby-keyword">while</span> <span class="ruby-regexp">/\A\s*:/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">peek</span>
  <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">dt</span> <span class="ruby-identifier">text</span>(<span class="ruby-identifier">f</span>.<span class="ruby-identifier">gets</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/\A\s*:/</span>, <span class="ruby-string">&#39;&#39;</span>).<span class="ruby-identifier">strip</span>)
  <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">dd</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">break</span>(<span class="ruby-regexp">/\A(\S|\s*:)/</span>).<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span> <span class="ruby-identifier">text</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">strip</span>) }
  <span class="ruby-identifier">f</span>.<span class="ruby-identifier">skip_blank_lines</span>
  <span class="ruby-identifier">f</span>.<span class="ruby-identifier">skip_comment_lines</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">dl_end</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_dlist-source -->

  </div>

</div><!-- compile_dlist-method -->

<div id="method-i-compile_headline" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_headline</span><span
      class="method-args">(line)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_headline-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 280</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_headline</span>(<span class=“ruby-identifier”>line</span>)

<span class="ruby-ivar">@headline_indexs</span> <span class="ruby-operator">||=</span> [<span class="ruby-ivar">@chapter</span>.<span class="ruby-identifier">number</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>]
<span class="ruby-identifier">m</span> = <span class="ruby-regexp">/\A(=+)(?:\[(.+?)\])?(?:\{(.+?)\})?(.*)/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">line</span>)
<span class="ruby-identifier">level</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">size</span>
<span class="ruby-identifier">tag</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>]
<span class="ruby-identifier">label</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">3</span>]
<span class="ruby-identifier">caption</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">4</span>].<span class="ruby-identifier">strip</span>
<span class="ruby-identifier">index</span> = <span class="ruby-identifier">level</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">tag</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">tag</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp">/\A\//</span>
    <span class="ruby-identifier">close_current_tagged_section</span>(<span class="ruby-identifier">level</span>)
    <span class="ruby-identifier">open_tagged_section</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">level</span>, <span class="ruby-identifier">label</span>, <span class="ruby-identifier">caption</span>)
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">open_tag</span> = <span class="ruby-identifier">tag</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>]
    <span class="ruby-identifier">prev_tag_info</span> = <span class="ruby-ivar">@tagged_section</span>.<span class="ruby-identifier">pop</span>
    <span class="ruby-keyword">unless</span> <span class="ruby-identifier">prev_tag_info</span>.<span class="ruby-identifier">first</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">open_tag</span>
      <span class="ruby-identifier">raise</span> <span class="ruby-constant">CompileError</span>, <span class="ruby-node">&quot;#{open_tag} is not opened.&quot;</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">close_tagged_section</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">prev_tag_info</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
  <span class="ruby-keyword">if</span> <span class="ruby-ivar">@headline_indexs</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> (<span class="ruby-identifier">index</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
    <span class="ruby-ivar">@headline_indexs</span> = <span class="ruby-ivar">@headline_indexs</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-identifier">index</span>]
  <span class="ruby-keyword">end</span>
  <span class="ruby-ivar">@headline_indexs</span>[<span class="ruby-identifier">index</span>] = <span class="ruby-value">0</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@headline_indexs</span>[<span class="ruby-identifier">index</span>].<span class="ruby-identifier">nil?</span>
  <span class="ruby-ivar">@headline_indexs</span>[<span class="ruby-identifier">index</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
  <span class="ruby-identifier">close_current_tagged_section</span>(<span class="ruby-identifier">level</span>)
  <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">headline</span> <span class="ruby-identifier">level</span>, <span class="ruby-identifier">label</span>, <span class="ruby-identifier">caption</span>
<span class="ruby-keyword">end</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_headline-source -->

  </div>

</div><!-- compile_headline-method -->

<div id="method-i-compile_inline" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_inline</span><span
      class="method-args">(str)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_inline-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 534</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_inline</span>(<span class=“ruby-identifier”>str</span>)

<span class="ruby-identifier">op</span>, <span class="ruby-identifier">arg</span> = <span class="ruby-regexp">/\A@&lt;(\w+)&gt;\{(.*?)\}\z/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">str</span>).<span class="ruby-identifier">captures</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">inline_defined?</span>(<span class="ruby-identifier">op</span>)
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">CompileError</span>, <span class="ruby-node">&quot;no such inline op: #{op}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-node">&quot;inline_#{op}&quot;</span>)
  <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;strategy does not support inline op: @&lt;#{op}&gt;&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">__send__</span>(<span class="ruby-node">&quot;inline_#{op}&quot;</span>, <span class="ruby-identifier">arg</span>)

<span class=“ruby-keyword”>rescue</span> =<span class=“ruby-operator”>&gt;</span> <span class=“ruby-identifier”>err</span>

<span class="ruby-identifier">error</span> <span class="ruby-identifier">err</span>.<span class="ruby-identifier">message</span>
<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">nofunc_text</span>(<span class="ruby-identifier">str</span>)

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_inline-source -->

  </div>

</div><!-- compile_inline-method -->

<div id="method-i-compile_olist" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_olist</span><span
      class="method-args">(f)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_olist-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 395</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_olist</span>(<span class=“ruby-identifier”>f</span>)

<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ol_begin</span>
<span class="ruby-identifier">f</span>.<span class="ruby-identifier">while_match</span>(<span class="ruby-node">/\A\s+\d+\.|\A\#@/</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
  <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/\A\#@/</span>

  <span class="ruby-identifier">num</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp">/(\d+)\./</span>)[<span class="ruby-value">1</span>]
  <span class="ruby-identifier">buf</span> = [<span class="ruby-identifier">text</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/\d+\./</span>, <span class="ruby-string">&#39;&#39;</span>).<span class="ruby-identifier">strip</span>)]
  <span class="ruby-identifier">f</span>.<span class="ruby-identifier">while_match</span>(<span class="ruby-regexp">/\A\s+(?!\d+\.)\S/</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">cont</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">text</span>(<span class="ruby-identifier">cont</span>.<span class="ruby-identifier">strip</span>)
  <span class="ruby-keyword">end</span>
  <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ol_item</span> <span class="ruby-identifier">buf</span>, <span class="ruby-identifier">num</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ol_end</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_olist-source -->

  </div>

</div><!-- compile_olist-method -->

<div id="method-i-compile_paragraph" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_paragraph</span><span
      class="method-args">(f)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_paragraph-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 421</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_paragraph</span>(<span class=“ruby-identifier”>f</span>)

<span class="ruby-identifier">buf</span> = []
<span class="ruby-identifier">f</span>.<span class="ruby-identifier">until_match</span>(<span class="ruby-node">%r&lt;\A//|\A\#@&gt;</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
  <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">empty?</span>
  <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">text</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/^(\t+)\s*/</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-string">&quot;&lt;!ESCAPETAB!&gt;&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">size</span>}.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/&lt;!ESCAPETAB!&gt;/</span>, <span class="ruby-string">&quot;\t&quot;</span>))
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">paragraph</span> <span class="ruby-identifier">buf</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_paragraph-source -->

  </div>

</div><!-- compile_paragraph-method -->

<div id="method-i-compile_single" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_single</span><span
      class="method-args">(syntax, args)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_single-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 513</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_single</span>(<span class=“ruby-identifier”>syntax</span>, <span class=“ruby-identifier”>args</span>)

<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">__send__</span>(<span class="ruby-identifier">syntax</span>.<span class="ruby-identifier">name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_single-source -->

  </div>

</div><!-- compile_single-method -->

<div id="method-i-compile_ulist" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_ulist</span><span
      class="method-args">(f)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_ulist-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 351</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_ulist</span>(<span class=“ruby-identifier”>f</span>)

<span class="ruby-identifier">level</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">f</span>.<span class="ruby-identifier">while_match</span>(<span class="ruby-node">/\A\s+\*|\A\#@/</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
  <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/\A\#@/</span>

  <span class="ruby-identifier">buf</span> = [<span class="ruby-identifier">text</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/\*+/</span>, <span class="ruby-string">&#39;&#39;</span>).<span class="ruby-identifier">strip</span>)]
  <span class="ruby-identifier">f</span>.<span class="ruby-identifier">while_match</span>(<span class="ruby-regexp">/\A\s+(?!\*)\S/</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">cont</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">text</span>(<span class="ruby-identifier">cont</span>.<span class="ruby-identifier">strip</span>)
  <span class="ruby-keyword">end</span>

  <span class="ruby-identifier">line</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/\A\s+(\*+)/</span>
  <span class="ruby-identifier">current_level</span> = <span class="ruby-node">$1</span>.<span class="ruby-identifier">size</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">current_level</span>
    <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_item_end</span>
    <span class="ruby-comment"># body</span>
    <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_item_begin</span> <span class="ruby-identifier">buf</span>
  <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">current_level</span> <span class="ruby-comment"># down</span>
    <span class="ruby-identifier">level_diff</span> = <span class="ruby-identifier">current_level</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">level</span>
    <span class="ruby-identifier">level</span> = <span class="ruby-identifier">current_level</span>
    (<span class="ruby-value">1</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">level_diff</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)).<span class="ruby-identifier">to_a</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
      <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_begin</span> {<span class="ruby-identifier">i</span>}
      <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_item_begin</span> []
    <span class="ruby-keyword">end</span>
    <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_begin</span> {<span class="ruby-identifier">level</span>}
    <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_item_begin</span> <span class="ruby-identifier">buf</span>
  <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">current_level</span> <span class="ruby-comment"># up</span>
    <span class="ruby-identifier">level_diff</span> = <span class="ruby-identifier">level</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">current_level</span>
    <span class="ruby-identifier">level</span> = <span class="ruby-identifier">current_level</span>
    (<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-identifier">level_diff</span>).<span class="ruby-identifier">to_a</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
      <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_item_end</span>
      <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_end</span> {<span class="ruby-identifier">level</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">i</span>}
    <span class="ruby-keyword">end</span>
    <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_item_end</span>
    <span class="ruby-comment"># body</span>
    <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_item_begin</span> <span class="ruby-identifier">buf</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>

(<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-identifier">level</span>).<span class="ruby-identifier">to_a</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
  <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_item_end</span>
  <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">ul_end</span> {<span class="ruby-identifier">i</span>}
<span class="ruby-keyword">end</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_ulist-source -->

  </div>

</div><!-- compile_ulist-method -->

<div id="method-i-compile_unknown_command" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">compile_unknown_command</span><span
      class="method-args">(args, lines)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="compile_unknown_command-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 498</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>compile_unknown_command</span>(<span class=“ruby-identifier”>args</span>, <span class=“ruby-identifier”>lines</span>)

<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">unknown_command</span> <span class="ruby-identifier">args</span>, <span class="ruby-identifier">lines</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- compile_unknown_command-source -->

  </div>

</div><!-- compile_unknown_command-method -->

<div id="method-i-default_block" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">default_block</span><span
      class="method-args">(syntax)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="default_block-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 506</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>default_block</span>(<span class=“ruby-identifier”>syntax</span>)

<span class="ruby-keyword">if</span> <span class="ruby-identifier">syntax</span>.<span class="ruby-identifier">block_required?</span>
  <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;block is required for //#{syntax.name}; use empty block&quot;</span>
<span class="ruby-keyword">end</span>
[]

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- default_block-source -->

  </div>

</div><!-- default_block-method -->

<div id="method-i-do_compile" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">do_compile</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="do_compile-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 234</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>do_compile</span>

<span class="ruby-identifier">f</span> = <span class="ruby-constant">LineInput</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Preprocessor</span><span class="ruby-operator">::</span><span class="ruby-constant">Strip</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@chapter</span>.<span class="ruby-identifier">content</span>)))
<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">bind</span> <span class="ruby-keyword">self</span>, <span class="ruby-ivar">@chapter</span>, <span class="ruby-constant">Location</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@chapter</span>.<span class="ruby-identifier">basename</span>, <span class="ruby-identifier">f</span>)
<span class="ruby-identifier">tagged_section_init</span>
<span class="ruby-keyword">while</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">next?</span>
  <span class="ruby-keyword">case</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">peek</span>
  <span class="ruby-keyword">when</span> <span class="ruby-node">/\A\#@/</span>
    <span class="ruby-identifier">f</span>.<span class="ruby-identifier">gets</span> <span class="ruby-comment"># Nothing to do</span>
  <span class="ruby-keyword">when</span> <span class="ruby-regexp">/\A=+[\[\s\{]/</span>
    <span class="ruby-identifier">compile_headline</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">gets</span>
  <span class="ruby-keyword">when</span> <span class="ruby-regexp">%r&lt;\A\s+\*&gt;</span>
    <span class="ruby-identifier">compile_ulist</span> <span class="ruby-identifier">f</span>
  <span class="ruby-keyword">when</span> <span class="ruby-regexp">%r&lt;\A\s+\d+\.&gt;</span>
    <span class="ruby-identifier">compile_olist</span> <span class="ruby-identifier">f</span>
  <span class="ruby-keyword">when</span> <span class="ruby-regexp">%r&lt;\A\s*:\s&gt;</span>
    <span class="ruby-identifier">compile_dlist</span> <span class="ruby-identifier">f</span>
  <span class="ruby-keyword">when</span> <span class="ruby-regexp">%r&lt;\A//\}&gt;</span>
    <span class="ruby-identifier">f</span>.<span class="ruby-identifier">gets</span>
    <span class="ruby-identifier">error</span> <span class="ruby-string">&#39;block end seen but not opened&#39;</span>
  <span class="ruby-keyword">when</span> <span class="ruby-regexp">%r&lt;\A//[a-z]+&gt;</span>
    <span class="ruby-identifier">name</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">lines</span> = <span class="ruby-identifier">read_command</span>(<span class="ruby-identifier">f</span>)
    <span class="ruby-identifier">syntax</span> = <span class="ruby-identifier">syntax_descriptor</span>(<span class="ruby-identifier">name</span>)
    <span class="ruby-keyword">unless</span> <span class="ruby-identifier">syntax</span>
      <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;unknown command: //#{name}&quot;</span>
      <span class="ruby-identifier">compile_unknown_command</span> <span class="ruby-identifier">args</span>, <span class="ruby-identifier">lines</span>
      <span class="ruby-keyword">next</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">compile_command</span> <span class="ruby-identifier">syntax</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">lines</span>
  <span class="ruby-keyword">when</span> <span class="ruby-regexp">%r&lt;\A//&gt;</span>
    <span class="ruby-identifier">line</span> = <span class="ruby-identifier">f</span>.<span class="ruby-identifier">gets</span>
    <span class="ruby-identifier">warn</span> <span class="ruby-node">&quot;`//&#39; seen but is not valid command: #{line.strip.inspect}&quot;</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_open?</span>(<span class="ruby-identifier">line</span>)
      <span class="ruby-identifier">warn</span> <span class="ruby-string">&quot;skipping block...&quot;</span>
      <span class="ruby-identifier">read_block</span>(<span class="ruby-identifier">f</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">peek</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">empty?</span>
      <span class="ruby-identifier">f</span>.<span class="ruby-identifier">gets</span>
      <span class="ruby-keyword">next</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">compile_paragraph</span> <span class="ruby-identifier">f</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">close_all_tagged_section</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- do_compile-source -->

  </div>

</div><!-- do_compile-method -->

<div id="method-i-error" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">error</span><span
      class="method-args">(msg)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="error-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 552</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>error</span>(<span class=“ruby-identifier”>msg</span>)

<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">error</span> <span class="ruby-identifier">msg</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- error-source -->

  </div>

</div><!-- error-method -->

<div id="method-i-headline" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">headline</span><span
      class="method-args">(level, label, caption)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="headline-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 317</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>headline</span>(<span class=“ruby-identifier”>level</span>, <span class=“ruby-identifier”>label</span>, <span class=“ruby-identifier”>caption</span>)

<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">headline</span> <span class="ruby-identifier">level</span>, <span class="ruby-identifier">label</span>, <span class="ruby-identifier">caption</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- headline-source -->

  </div>

</div><!-- headline-method -->

<div id="method-i-open_tagged_section" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">open_tagged_section</span><span
      class="method-args">(tag, level, label, caption)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="open_tagged_section-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 325</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>open_tagged_section</span>(<span class=“ruby-identifier”>tag</span>, <span class=“ruby-identifier”>level</span>, <span class=“ruby-identifier”>label</span>, <span class=“ruby-identifier”>caption</span>)

<span class="ruby-identifier">mid</span> = <span class="ruby-node">&quot;#{tag}_begin&quot;</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">mid</span>)
  <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;strategy does not support tagged section: #{tag}&quot;</span>
  <span class="ruby-identifier">headline</span> <span class="ruby-identifier">level</span>, <span class="ruby-identifier">label</span>, <span class="ruby-identifier">caption</span>
  <span class="ruby-keyword">return</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@tagged_section</span>.<span class="ruby-identifier">push</span> [<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">level</span>]
<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">__send__</span> <span class="ruby-identifier">mid</span>, <span class="ruby-identifier">level</span>, <span class="ruby-identifier">label</span>, <span class="ruby-identifier">caption</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- open_tagged_section-source -->

  </div>

</div><!-- open_tagged_section-method -->

<div id="method-i-parse_args" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">parse_args</span><span
      class="method-args">(str, name=nil)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="parse_args-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 458</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>parse_args</span>(<span class=“ruby-identifier”>str</span>, <span class=“ruby-identifier”>name</span>=<span class=“ruby-keyword”>nil</span>)

<span class="ruby-keyword">return</span> [] <span class="ruby-keyword">if</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-identifier">scanner</span> = <span class="ruby-constant">StringScanner</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">str</span>)
<span class="ruby-identifier">words</span> = []
<span class="ruby-keyword">while</span> <span class="ruby-identifier">word</span> = <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp">/(\[\]|\[.*?[^\]\])/</span>)
  <span class="ruby-identifier">w2</span> = <span class="ruby-identifier">word</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-2</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/\(.)/</span>){
    <span class="ruby-identifier">ch</span> = <span class="ruby-node">$1</span>
    (<span class="ruby-identifier">ch</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;]&quot;</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">ch</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;\\&quot;</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">ch</span> <span class="ruby-operator">:</span> <span class="ruby-string">&quot;\\&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ch</span>
  }
  <span class="ruby-identifier">words</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">w2</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">eos?</span>
  <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;argument syntax error: #{scanner.rest} in #{str.inspect}&quot;</span>
  <span class="ruby-keyword">return</span> []
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">words</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- parse_args-source -->

  </div>

</div><!-- parse_args-method -->

<div id="method-i-read_block" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">read_block</span><span
      class="method-args">(f)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="read_block-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 442</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>read_block</span>(<span class=“ruby-identifier”>f</span>)

<span class="ruby-identifier">head</span> = <span class="ruby-identifier">f</span>.<span class="ruby-identifier">lineno</span>
<span class="ruby-identifier">buf</span> = []
<span class="ruby-identifier">f</span>.<span class="ruby-identifier">until_match</span>(<span class="ruby-regexp">%r&lt;\A//\}&gt;</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
  <span class="ruby-keyword">unless</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/\A\#@/</span>
    <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">text</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">rstrip</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-regexp">%r&lt;\A//\}&gt;</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">peek</span>
  <span class="ruby-identifier">error</span> <span class="ruby-node">&quot;unexpected EOF (block begins at: #{head})&quot;</span>
  <span class="ruby-keyword">return</span> <span class="ruby-identifier">buf</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">f</span>.<span class="ruby-identifier">gets</span> <span class="ruby-comment"># discard terminator</span>
<span class="ruby-identifier">buf</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- read_block-source -->

  </div>

</div><!-- read_block-method -->

<div id="method-i-read_command" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">read_command</span><span
      class="method-args">(f)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="read_command-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 430</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>read_command</span>(<span class=“ruby-identifier”>f</span>)

<span class="ruby-identifier">line</span> = <span class="ruby-identifier">f</span>.<span class="ruby-identifier">gets</span>
<span class="ruby-identifier">name</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-regexp">/[a-z]+/</span>).<span class="ruby-identifier">to_sym</span>
<span class="ruby-identifier">args</span> = <span class="ruby-identifier">parse_args</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">%r&lt;\A//[a-z]+&gt;</span>, <span class="ruby-string">&#39;&#39;</span>).<span class="ruby-identifier">rstrip</span>.<span class="ruby-identifier">chomp</span>(<span class="ruby-string">&#39;{&#39;</span>), <span class="ruby-identifier">name</span>)
<span class="ruby-identifier">lines</span> = <span class="ruby-identifier">block_open?</span>(<span class="ruby-identifier">line</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">read_block</span>(<span class="ruby-identifier">f</span>) <span class="ruby-operator">:</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">name</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">lines</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- read_command-source -->

  </div>

</div><!-- read_command-method -->

<div id="method-i-tagged_section_init" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">tagged_section_init</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="tagged_section_init-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 321</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>tagged_section_init</span>

<span class="ruby-ivar">@tagged_section</span> = []

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- tagged_section_init-source -->

  </div>

</div><!-- tagged_section_init-method -->

<div id="method-i-warn" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">warn</span><span
      class="method-args">(msg)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="warn-source">
      <pre><span class="ruby-comment"># File lib/review/compiler.rb, line 548</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>warn</span>(<span class=“ruby-identifier”>msg</span>)

<span class="ruby-ivar">@strategy</span>.<span class="ruby-identifier">warn</span> <span class="ruby-identifier">msg</span>

<span class=“ruby-keyword”>end</span></pre>

        </div><!-- warn-source -->

      </div>

    </div><!-- warn-method -->

  </section><!-- private-instance-method-details -->

</section><!-- 5Buntitled-5D -->

</div><!– documentation –>

<footer id=“validator-badges”>

<p><a href="http://validator.w3.org/check/referer">[Validate]</a>
<p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.0.
<p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.

</footer>