Module: Howdoc::Registry

Defined in:
lib/howdoc/registry.rb

Overview

The index, assembled at the end of a run from the guides themselves.

Tests run in forked workers, so nothing held in memory survives a suite and the index has to be built from what is on disk. What is on disk is the guides -- and their markup is not a foreign format to be parsed defensively, because this gem wrote it. One element carries everything the index needs.

That is the entire contract with an overriding template: keep the document heading in . Everything else the index shows comes from where a file sits rather than from what is inside it, so there is nothing else to break.</p> </div> </div> <div class="tags"> </div><h2>Defined Under Namespace</h2> <p class="children"> <strong class="classes">Classes:</strong> <span class='object_link'><a href="Registry/Record.html" title="Howdoc::Registry::Record (class)">Record</a></span> </p> <h2> Constant Summary <small><a href="#" class="constants_summary_toggle">collapse</a></small> </h2> <dl class="constants"> <dt id="INDEX_FILENAME-constant" class="">INDEX_FILENAME = </dt> <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>index.html</span><span class='tstring_end'>'</span></span></pre></dd> <dt id="TITLE-constant" class="">TITLE = </dt> <dd><pre class="code"><span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'><title[^>]*>(.*?)</title></span><span class='regexp_end'>}mi</span></span></pre></dd> <dt id="HEADING-constant" class="">HEADING = <div class="docstring"> <div class="discussion"> <p>A heading opens with an identifier when it reads like "1.3. Some title". The identifier has to carry a digit, so an ordinary sentence beginning "Mr. Smith" is not mistaken for one.</p> </div> </div> <div class="tags"> </div> </dt> <dd><pre class="code"><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A([\w.]*\d[\w.]*)\.\s+(.+)\z</span><span class='regexp_end'>/m</span></span></pre></dd> </dl> <h2> Class Method Summary <small><a href="#" class="summary_toggle">collapse</a></small> </h2> <ul class="summary"> <li class="public "> <span class="summary_signature"> <a href="#by_locale-class_method" title="by_locale (class method)">.<strong>by_locale</strong>(root = Howdoc.config.root) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#clean-class_method" title="clean (class method)">.<strong>clean</strong>(root = Howdoc.config.root) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'><p>Removes generated guides while leaving hand-maintained pages in place, so a run never inherits a guide whose test has since been deleted.</p></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#generated_page%3F-class_method" title="generated_page? (class method)">.<strong>generated_page?</strong>(basename) ⇒ Boolean </a> </span> <span class="summary_desc"><div class='inline'><p>The index is not a guide, and neither is a landing page somebody maintains by hand.</p></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#read-class_method" title="read (class method)">.<strong>read</strong>(path) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#records-class_method" title="records (class method)">.<strong>records</strong>(root = Howdoc.config.root) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#sort-class_method" title="sort (class method)">.<strong>sort</strong>(records) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#split_heading-class_method" title="split_heading (class method)">.<strong>split_heading</strong>(heading) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#title_of-class_method" title="title_of (class method)">.<strong>title_of</strong>(markup) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#write_indexes-class_method" title="write_indexes (class method)">.<strong>write_indexes</strong>(root = Howdoc.config.root) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'><p>Builds the index for every locale that produced at least one guide, and then writes the menu into the guides themselves: they were written one at a time, before there was a menu to draw.</p></div></span> </li> </ul> <div id="class_method_details" class="method_details_list"> <h2>Class Method Details</h2> <div class="method_details first"> <h3 class="signature first" id="by_locale-class_method"> .<strong>by_locale</strong>(root = Howdoc.config.root) ⇒ <tt>Object</tt> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 76 77 78 79 80 81</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/howdoc/registry.rb', line 76</span> <span class='kw'>def</span> <span class='id identifier rubyid_by_locale'>by_locale</span><span class='lparen'>(</span><span class='id identifier rubyid_root'><span class='object_link'><a href="../top-level-namespace.html" title="Top Level Namespace (root)">root</a></span></span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_root'>root</span><span class='rparen'>)</span> <span class='id identifier rubyid_found'>found</span> <span class='op'>=</span> <span class='id identifier rubyid_records'>records</span><span class='lparen'>(</span><span class='id identifier rubyid_root'><span class='object_link'><a href="../top-level-namespace.html" title="Top Level Namespace (root)">root</a></span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_group_by'>group_by</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:locale</span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='id identifier rubyid_found'>found</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_locales'>locales</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_locales'>locales</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_locale'>locale</span><span class='op'>|</span> <span class='lbracket'>[</span><span class='id identifier rubyid_locale'>locale</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span> <span class='id identifier rubyid_found'>found</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbracket'>]</span> <span class='rbrace'>}</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="clean-class_method"> .<strong>clean</strong>(root = Howdoc.config.root) ⇒ <tt>Object</tt> </h3><div class="docstring"> <div class="discussion"> <p>Removes generated guides while leaving hand-maintained pages in place, so a run never inherits a guide whose test has since been deleted.</p> <p>Only what this gem writes is removed. An output directory usually holds other things -- a landing page, a stylesheet an application maintains by hand -- and a cleaner that swept the whole directory would eat them.</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 112 113 114 115 116 117 118 119 120 121 122 123 124</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/howdoc/registry.rb', line 112</span> <span class='kw'>def</span> <span class='id identifier rubyid_clean'>clean</span><span class='lparen'>(</span><span class='id identifier rubyid_root'><span class='object_link'><a href="../top-level-namespace.html" title="Top Level Namespace (root)">root</a></span></span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_root'>root</span><span class='rparen'>)</span> <span class='const'>Dir</span><span class='period'>.</span><span class='id identifier rubyid_glob'>glob</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_root'><span class='object_link'><a href="../top-level-namespace.html" title="Top Level Namespace (root)">root</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>*</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_dir'>dir</span><span class='op'>|</span> <span class='kw'>next</span> <span class='kw'>unless</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_directory?'>directory?</span><span class='lparen'>(</span><span class='id identifier rubyid_dir'>dir</span><span class='rparen'>)</span> <span class='const'>FileUtils</span><span class='period'>.</span><span class='id identifier rubyid_rm_rf'>rm_rf</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_dir'>dir</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>images</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='const'>Dir</span><span class='period'>.</span><span class='id identifier rubyid_glob'>glob</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_dir'>dir</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>*.html</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_entry'>entry</span><span class='op'>|</span> <span class='kw'>next</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_preserved_files'>preserved_files</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_basename'>basename</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='const'>FileUtils</span><span class='period'>.</span><span class='id identifier rubyid_rm_f'>rm_f</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='kw'>end</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="generated_page?-class_method"> .<strong>generated_page?</strong>(basename) ⇒ <tt>Boolean</tt> </h3><div class="docstring"> <div class="discussion"> <p>The index is not a guide, and neither is a landing page somebody maintains by hand.</p> </div> </div> <div class="tags"> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt>Boolean</tt>)</span> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 60 61 62</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/howdoc/registry.rb', line 60</span> <span class='kw'>def</span> <span class='id identifier rubyid_generated_page?'>generated_page?</span><span class='lparen'>(</span><span class='id identifier rubyid_basename'>basename</span><span class='rparen'>)</span> <span class='id identifier rubyid_basename'>basename</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#INDEX_FILENAME-constant" title="Howdoc::Registry::INDEX_FILENAME (constant)">INDEX_FILENAME</a></span></span> <span class='op'>||</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_preserved_files'>preserved_files</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_basename'>basename</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="read-class_method"> .<strong>read</strong>(path) ⇒ <tt>Object</tt> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/howdoc/registry.rb', line 42</span> <span class='kw'>def</span> <span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span> <span class='id identifier rubyid_basename'>basename</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_basename'>basename</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_generated_page?'>generated_page?</span><span class='lparen'>(</span><span class='id identifier rubyid_basename'>basename</span><span class='rparen'>)</span> <span class='id identifier rubyid_heading'>heading</span> <span class='op'>=</span> <span class='id identifier rubyid_title_of'>title_of</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_heading'>heading</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_heading'>heading</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='id identifier rubyid_split_heading'>split_heading</span><span class='lparen'>(</span><span class='id identifier rubyid_heading'>heading</span><span class='rparen'>)</span> <span class='const'><span class='object_link'><a href="Registry/Record.html" title="Howdoc::Registry::Record (class)">Record</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span> <span class='label'>locale:</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_basename'>basename</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>permalink:</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_basename'>basename</span><span class='lparen'>(</span><span class='id identifier rubyid_basename'>basename</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>.html</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>heading:</span><span class='comma'>,</span> <span class='label'>id:</span><span class='comma'>,</span> <span class='label'>title:</span> <span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="records-class_method"> .<strong>records</strong>(root = Howdoc.config.root) ⇒ <tt>Object</tt> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 38 39 40</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/howdoc/registry.rb', line 38</span> <span class='kw'>def</span> <span class='id identifier rubyid_records'>records</span><span class='lparen'>(</span><span class='id identifier rubyid_root'><span class='object_link'><a href="../top-level-namespace.html" title="Top Level Namespace (root)">root</a></span></span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_root'>root</span><span class='rparen'>)</span> <span class='const'>Dir</span><span class='period'>.</span><span class='id identifier rubyid_glob'>glob</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_root'><span class='object_link'><a href="../top-level-namespace.html" title="Top Level Namespace (root)">root</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>*</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>*.html</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_filter_map'>filter_map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_path'>path</span><span class='op'>|</span> <span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span> <span class='rbrace'>}</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="sort-class_method"> .<strong>sort</strong>(records) ⇒ <tt>Object</tt> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 102 103 104</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/howdoc/registry.rb', line 102</span> <span class='kw'>def</span> <span class='id identifier rubyid_sort'>sort</span><span class='lparen'>(</span><span class='id identifier rubyid_records'>records</span><span class='rparen'>)</span> <span class='id identifier rubyid_records'>records</span><span class='period'>.</span><span class='id identifier rubyid_sort_by'>sort_by</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_record'>record</span><span class='op'>|</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_sort_key'>sort_key</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_record'>record</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='rbrace'>}</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="split_heading-class_method"> .<strong>split_heading</strong>(heading) ⇒ <tt>Object</tt> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 71 72 73 74</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/howdoc/registry.rb', line 71</span> <span class='kw'>def</span> <span class='id identifier rubyid_split_heading'>split_heading</span><span class='lparen'>(</span><span class='id identifier rubyid_heading'>heading</span><span class='rparen'>)</span> <span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='id identifier rubyid_heading'>heading</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="#HEADING-constant" title="Howdoc::Registry::HEADING (constant)">HEADING</a></span></span><span class='rparen'>)</span> <span class='id identifier rubyid_match'>match</span> <span class='op'>?</span> <span class='lbracket'>[</span><span class='id identifier rubyid_match'>match</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_match'>match</span><span class='lbracket'>[</span><span class='int'>2</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='lbracket'>[</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_heading'>heading</span><span class='rbracket'>]</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="title_of-class_method"> .<strong>title_of</strong>(markup) ⇒ <tt>Object</tt> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 64 65 66 67 68 69</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/howdoc/registry.rb', line 64</span> <span class='kw'>def</span> <span class='id identifier rubyid_title_of'>title_of</span><span class='lparen'>(</span><span class='id identifier rubyid_markup'>markup</span><span class='rparen'>)</span> <span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='id identifier rubyid_markup'>markup</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="#TITLE-constant" title="Howdoc::Registry::TITLE (constant)">TITLE</a></span></span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_match'>match</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='const'>CGI</span><span class='period'>.</span><span class='id identifier rubyid_unescapeHTML'>unescapeHTML</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="write_indexes-class_method"> .<strong>write_indexes</strong>(root = Howdoc.config.root) ⇒ <tt>Object</tt> </h3><div class="docstring"> <div class="discussion"> <p>Builds the index for every locale that produced at least one guide, and then writes the menu into the guides themselves: they were written one at a time, before there was a menu to draw.</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/howdoc/registry.rb', line 86</span> <span class='kw'>def</span> <span class='id identifier rubyid_write_indexes'>write_indexes</span><span class='lparen'>(</span><span class='id identifier rubyid_root'><span class='object_link'><a href="../top-level-namespace.html" title="Top Level Namespace (root)">root</a></span></span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_root'>root</span><span class='rparen'>)</span> <span class='const'><span class='object_link'><a href="Templates.html" title="Howdoc::Templates (module)">Templates</a></span></span><span class='period'>.</span><span class='id identifier rubyid_install_assets'><span class='object_link'><a href="Templates.html#install_assets-class_method" title="Howdoc::Templates.install_assets (method)">install_assets</a></span></span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_root'><span class='object_link'><a href="../top-level-namespace.html" title="Top Level Namespace (root)">root</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>assets</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../Howdoc.html" title="Howdoc (module)">Howdoc</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config'><span class='object_link'><a href="../Howdoc.html#config-class_method" title="Howdoc.config (method)">config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_install_assets'>install_assets</span> <span class='id identifier rubyid_catalogue'>catalogue</span> <span class='op'>=</span> <span class='id identifier rubyid_by_locale'>by_locale</span><span class='lparen'>(</span><span class='id identifier rubyid_root'><span class='object_link'><a href="../top-level-namespace.html" title="Top Level Namespace (root)">root</a></span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_transform_values'>transform_values</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_records'>records</span><span class='op'>|</span> <span class='id identifier rubyid_sort'>sort</span><span class='lparen'>(</span><span class='id identifier rubyid_records'>records</span><span class='rparen'>)</span> <span class='rbrace'>}</span> <span class='id identifier rubyid_written'>written</span> <span class='op'>=</span> <span class='id identifier rubyid_catalogue'>catalogue</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='id identifier rubyid_records'>records</span><span class='op'>|</span> <span class='const'><span class='object_link'><a href="Writers.html" title="Howdoc::Writers (module)">Writers</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Writers/Index.html" title="Howdoc::Writers::Index (class)">Index</a></span></span><span class='period'>.</span><span class='id identifier rubyid_call'><span class='object_link'><a href="Writers/Index.html#call-class_method" title="Howdoc::Writers::Index.call (method)">call</a></span></span><span class='lparen'>(</span> <span class='label'>locale:</span><span class='comma'>,</span> <span class='label'>records:</span><span class='comma'>,</span> <span class='label'>root:</span><span class='comma'>,</span> <span class='label'>languages:</span> <span class='const'><span class='object_link'><a href="Navigation.html" title="Howdoc::Navigation (module)">Navigation</a></span></span><span class='period'>.</span><span class='id identifier rubyid_languages'><span class='object_link'><a href="Navigation.html#languages-class_method" title="Howdoc::Navigation.languages (method)">languages</a></span></span><span class='lparen'>(</span><span class='label'>current_locale:</span> <span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>by_locale:</span> <span class='id identifier rubyid_catalogue'>catalogue</span><span class='rparen'>)</span> <span class='rparen'>)</span> <span class='kw'>end</span> <span class='const'><span class='object_link'><a href="Navigation.html" title="Howdoc::Navigation (module)">Navigation</a></span></span><span class='period'>.</span><span class='id identifier rubyid_install'><span class='object_link'><a href="Navigation.html#install-class_method" title="Howdoc::Navigation.install (method)">install</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_catalogue'>catalogue</span><span class='comma'>,</span> <span class='label'>root:</span><span class='rparen'>)</span> <span class='id identifier rubyid_written'>written</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> </div> <div id="footer"> Generated on Thu Aug 27 12:12:45 2026 by <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.45 (ruby-4.0.2). </div> </div> </body> </html>