Class: JekyllPagesApi::GeneratedPageParser

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll_pages_api/generated_page_parser.rb

Overview

Contains helper methods for parsing values from HTML.

Class Method Summary collapse

Class Method Details

.parse_basic_tag(tag_name, content) ⇒ String?

Parses a value from content from between tags that cannot be nested, e.g. , , .</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>tag_name</span> <span class='type'>(<tt>String</tt>)</span> — <div class='inline'><p>name of the tag to parse</p></div> </li> <li> <span class='name'>content</span> <span class='type'>(<tt>String</tt>)</span> — <div class='inline'><p>HTML content from which to parse a value</p></div> </li> </ul> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt>String</tt>)</span> — <div class='inline'><p>if a value is successfully parsed</p></div> </li> <li> <span class='type'>(<tt>nil</tt>)</span> — <div class='inline'><p>if the tag isn't present in content, or is not well-formed</p></div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 33 34 35 36 37 38 39 40 41 42</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/jekyll_pages_api/generated_page_parser.rb', line 33</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse_basic_tag'>parse_basic_tag</span><span class='lparen'>(</span><span class='id identifier rubyid_tag_name'>tag_name</span><span class='comma'>,</span> <span class='id identifier rubyid_content'>content</span><span class='rparen'>)</span> <span class='id identifier rubyid_open_tag'>open_tag</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_tag_name'>tag_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span> <span class='id identifier rubyid_close_tag'>close_tag</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'></</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_tag_name'>tag_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='id identifier rubyid_open_i'>open_i</span> <span class='op'>=</span> <span class='id identifier rubyid_content'>content</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_open_tag'>open_tag</span> <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_open_i'>open_i</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_open_i'>open_i</span> <span class='op'>=</span> <span class='id identifier rubyid_content'>content</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span><span class='lparen'>(</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='id identifier rubyid_open_i'>open_i</span> <span class='op'>+</span> <span class='id identifier rubyid_open_tag'>open_tag</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='int'>1</span> <span class='id identifier rubyid_close_i'>close_i</span> <span class='op'>=</span> <span class='id identifier rubyid_content'>content</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_close_tag'>close_tag</span><span class='comma'>,</span> <span class='id identifier rubyid_open_i'>open_i</span> <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_close_i'>close_i</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_content'>content</span><span class='lbracket'>[</span><span class='id identifier rubyid_open_i'>open_i</span><span class='op'>..</span><span class='id identifier rubyid_close_i'>close_i</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="parse_content_from_body-class_method"> .<strong>parse_content_from_body</strong>(content, body_element_tag) ⇒ <tt>Object</tt> </h3><script> document.getElementById("parse_content_from_body-class_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/jekyll_pages_api/JekyllPagesApi%2FGeneratedPageParser%2Eparse_content_from_body">permalink</a>' ); </script> <div class="docstring"> <div class="discussion"> <p>Parse actual content from an HTML page, leaving out boilerplate.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>content</span> <span class='type'>(<tt>String</tt>)</span> — <div class='inline'><p>content of an HTML document</p></div> </li> <li> <span class='name'>body_element_tag</span> <span class='type'></span> — <div class='inline'><p>see <span class='object_link'><a href="/gems/jekyll_pages_api/JekyllPagesApi/GeneratedSite#initialize-instance_method" title="JekyllPagesApi::GeneratedSite#initialize (method)">JekyllPagesApi::GeneratedSite#initialize</a></span></p></div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/jekyll_pages_api/generated_page_parser.rb', line 85</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse_content_from_body'>parse_content_from_body</span><span class='lparen'>(</span><span class='id identifier rubyid_content'>content</span><span class='comma'>,</span> <span class='id identifier rubyid_body_element_tag'>body_element_tag</span><span class='rparen'>)</span> <span class='id identifier rubyid_body'>body</span> <span class='op'>=</span> <span class='id identifier rubyid_parse_basic_tag'>parse_basic_tag</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>body</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_content'>content</span> <span class='kw'>return</span> <span class='id identifier rubyid_content'>content</span> <span class='kw'>if</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_start_body'>start_body</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_body_element_tag'>body_element_tag</span> <span class='kw'>unless</span> <span class='id identifier rubyid_body_element_tag'>body_element_tag</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='kw'>return</span> <span class='id identifier rubyid_body'>body</span> <span class='kw'>if</span> <span class='id identifier rubyid_start_body'>start_body</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_start_body'>start_body</span> <span class='op'>+=</span> <span class='int'>1</span> <span class='id identifier rubyid_end_name_i'>end_name_i</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</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='id identifier rubyid_start_body'>start_body</span> <span class='id identifier rubyid_bracket_i'>bracket_i</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</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='id identifier rubyid_start_body'>start_body</span> <span class='id identifier rubyid_end_name_i'>end_name_i</span> <span class='op'>=</span> <span class='id identifier rubyid_bracket_i'>bracket_i</span> <span class='kw'>if</span> <span class='id identifier rubyid_bracket_i'>bracket_i</span> <span class='op'><</span> <span class='id identifier rubyid_end_name_i'>end_name_i</span> <span class='id identifier rubyid_tag_name'>tag_name</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span><span class='lbracket'>[</span><span class='id identifier rubyid_start_body'>start_body</span><span class='op'>..</span><span class='id identifier rubyid_end_name_i'>end_name_i</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='id identifier rubyid_open_tag'>open_tag</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_tag_name'>tag_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span> <span class='id identifier rubyid_end_tag'>end_tag</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'></</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_tag_name'>tag_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='id identifier rubyid_start_body'>start_body</span> <span class='op'>=</span> <span class='id identifier rubyid_bracket_i'>bracket_i</span> <span class='op'>+</span> <span class='int'>1</span> <span class='id identifier rubyid_search_i'>search_i</span> <span class='op'>=</span> <span class='id identifier rubyid_start_body'>start_body</span> <span class='id identifier rubyid_open_tag_i'>open_tag_i</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_open_tag'>open_tag</span><span class='comma'>,</span> <span class='id identifier rubyid_search_i'>search_i</span> <span class='id identifier rubyid_end_tag_i'>end_tag_i</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_end_tag'>end_tag</span><span class='comma'>,</span> <span class='id identifier rubyid_search_i'>search_i</span> <span class='id identifier rubyid_depth'>depth</span> <span class='op'>=</span> <span class='int'>1</span> <span class='kw'>until</span> <span class='id identifier rubyid_depth'>depth</span> <span class='op'>==</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='id identifier rubyid_end_tag_i'>end_tag_i</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>End tag missing: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_end_tag'>end_tag</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span> <span class='kw'>end</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_open_tag_i'>open_tag_i</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&&</span> <span class='id identifier rubyid_open_tag_i'>open_tag_i</span> <span class='op'><</span> <span class='id identifier rubyid_end_tag_i'>end_tag_i</span> <span class='id identifier rubyid_depth'>depth</span> <span class='op'>+=</span> <span class='int'>1</span> <span class='id identifier rubyid_search_i'>search_i</span> <span class='op'>=</span> <span class='id identifier rubyid_open_tag_i'>open_tag_i</span> <span class='op'>+</span> <span class='id identifier rubyid_open_tag'>open_tag</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='id identifier rubyid_open_tag_i'>open_tag_i</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_open_tag'>open_tag</span><span class='comma'>,</span> <span class='id identifier rubyid_search_i'>search_i</span> <span class='kw'>else</span> <span class='id identifier rubyid_depth'>depth</span> <span class='op'>-=</span> <span class='int'>1</span> <span class='id identifier rubyid_search_i'>search_i</span> <span class='op'>=</span> <span class='id identifier rubyid_end_tag_i'>end_tag_i</span> <span class='op'>+</span> <span class='id identifier rubyid_end_tag'>end_tag</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='id identifier rubyid_end_tag_i'>end_tag_i</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_end_tag'>end_tag</span><span class='comma'>,</span> <span class='id identifier rubyid_search_i'>search_i</span> <span class='kw'>unless</span> <span class='id identifier rubyid_depth'>depth</span> <span class='op'>==</span> <span class='int'>0</span> <span class='kw'>end</span> <span class='kw'>end</span> <span class='id identifier rubyid_body'>body</span><span class='lbracket'>[</span><span class='id identifier rubyid_start_body'>start_body</span><span class='op'>..</span><span class='id identifier rubyid_end_tag_i'>end_tag_i</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="parse_generated_page-class_method"> .<strong>parse_generated_page</strong>(content, title_prefix, body_element_tag) ⇒ <tt>Hash<String, String></tt>, <tt>String</tt> </h3><script> document.getElementById("parse_generated_page-class_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/jekyll_pages_api/JekyllPagesApi%2FGeneratedPageParser%2Eparse_generated_page">permalink</a>' ); </script> <div class="docstring"> <div class="discussion"> <p>Parses elements from a generated page's content needed by GeneratedPage.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>content</span> <span class='type'></span> — <div class='inline'><p>see <span class='object_link'><a href="/gems/jekyll_pages_api/JekyllPagesApi/GeneratedPage#initialize-instance_method" title="JekyllPagesApi::GeneratedPage#initialize (method)">JekyllPagesApi::GeneratedPage#initialize</a></span></p></div> </li> <li> <span class='name'>title_prefix</span> <span class='type'></span> — <div class='inline'><p>see <span class='object_link'><a href="/gems/jekyll_pages_api/JekyllPagesApi/GeneratedSite#initialize-instance_method" title="JekyllPagesApi::GeneratedSite#initialize (method)">JekyllPagesApi::GeneratedSite#initialize</a></span></p></div> </li> <li> <span class='name'>body_element_tag</span> <span class='type'></span> — <div class='inline'><p>see <span class='object_link'><a href="/gems/jekyll_pages_api/JekyllPagesApi/GeneratedSite#initialize-instance_method" title="JekyllPagesApi::GeneratedSite#initialize (method)">JekyllPagesApi::GeneratedSite#initialize</a></span></p></div> </li> </ul> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt>Hash<String, String></tt>, <tt>String</tt>)</span> — <div class='inline'><p>the metadata hash containing the <code>title</code>, <code>tags</code>, and <code>skip-index</code> elements; and the body content stripped of boilerplate</p></div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 13 14 15 16 17 18 19 20 21 22 23 24 25</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/jekyll_pages_api/generated_page_parser.rb', line 13</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse_generated_page'>parse_generated_page</span><span class='lparen'>(</span><span class='id identifier rubyid_content'>content</span><span class='comma'>,</span> <span class='id identifier rubyid_title_prefix'>title_prefix</span><span class='comma'>,</span> <span class='id identifier rubyid_body_element_tag'>body_element_tag</span><span class='rparen'>)</span> <span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='id identifier rubyid_head_element'>head_element</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse_basic_tag'>parse_basic_tag</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>head</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_content'>content</span> <span class='kw'>return</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_head_element'>head_element</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse_basic_tag'>parse_basic_tag</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>title</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_head_element'>head_element</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_title'>title</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&&</span> <span class='id identifier rubyid_title'>title</span><span class='period'>.</span><span class='id identifier rubyid_start_with?'>start_with?</span><span class='lparen'>(</span><span class='id identifier rubyid_title_prefix'>title_prefix</span><span class='rparen'>)</span> <span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='id identifier rubyid_title'>title</span><span class='lbracket'>[</span><span class='id identifier rubyid_title_prefix'>title_prefix</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='op'>..</span><span class='id identifier rubyid_title'>title</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='rbracket'>]</span> <span class='kw'>end</span> <span class='id identifier rubyid_data'>data</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>title</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_title'>title</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_merge!'>merge!</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse_meta_tags'>parse_meta_tags</span> <span class='id identifier rubyid_head_element'>head_element</span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse_content_from_body'>parse_content_from_body</span><span class='lparen'>(</span><span class='id identifier rubyid_content'>content</span><span class='comma'>,</span> <span class='id identifier rubyid_body_element_tag'>body_element_tag</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="parse_meta_tags-class_method"> .<strong>parse_meta_tags</strong>(head_element) ⇒ <tt>Hash<String, String></tt> </h3><script> document.getElementById("parse_meta_tags-class_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/jekyll_pages_api/JekyllPagesApi%2FGeneratedPageParser%2Eparse_meta_tags">permalink</a>' ); </script> <div class="docstring"> <div class="discussion"> <p>Parses the (name, content) pairs from <meta> tags in the <head> element. Note that it parses <em>only</em> the <code>name</code> and <code>content</code> fields.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>head_element</span> <span class='type'>(<tt>String</tt>)</span> — <div class='inline'><head> element from an HTML document</div> </li> </ul> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt>Hash<String, String></tt>)</span> — <div class='inline'><p>a collection of (name, content) values</p></div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/jekyll_pages_api/generated_page_parser.rb', line 48</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse_meta_tags'>parse_meta_tags</span><span class='lparen'>(</span><span class='id identifier rubyid_head_element'>head_element</span><span class='rparen'>)</span> <span class='id identifier rubyid_open_tag'>open_tag</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><meta </span><span class='tstring_end'>"</span></span> <span class='id identifier rubyid_open_i'>open_i</span> <span class='op'>=</span> <span class='id identifier rubyid_head_element'>head_element</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_open_tag'>open_tag</span> <span class='id identifier rubyid_meta_tags'>meta_tags</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>until</span> <span class='id identifier rubyid_open_i'>open_i</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='kw'>do</span> <span class='comment'># -1 to remove the space at the end. </span> <span class='id identifier rubyid_open_i'>open_i</span> <span class='op'>+=</span> <span class='id identifier rubyid_open_tag'>open_tag</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>-</span> <span class='int'>1</span> <span class='id identifier rubyid_close_i'>close_i</span> <span class='op'>=</span> <span class='id identifier rubyid_head_element'>head_element</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</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='id identifier rubyid_open_i'>open_i</span> <span class='kw'>return</span> <span class='id identifier rubyid_meta_tags'>meta_tags</span> <span class='kw'>if</span> <span class='id identifier rubyid_close_i'>close_i</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_current'>current</span> <span class='op'>=</span> <span class='id identifier rubyid_head_element'>head_element</span><span class='lbracket'>[</span><span class='id identifier rubyid_open_i'>open_i</span><span class='op'>..</span><span class='id identifier rubyid_close_i'>close_i</span><span class='rbracket'>]</span> <span class='id identifier rubyid_attrs'>attrs</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>name</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>content</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='kw'>nil</span><span class='rbrace'>}</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</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_attr'>attr</span><span class='op'>|</span> <span class='id identifier rubyid_attr_begin'>attr_begin</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attr'>attr</span><span class='embexpr_end'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>"</span></span> <span class='id identifier rubyid_attr_begin_i'>attr_begin_i</span> <span class='op'>=</span> <span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_attr_begin'>attr_begin</span> <span class='kw'>unless</span> <span class='id identifier rubyid_attr_begin_i'>attr_begin_i</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_attr_begin_i'>attr_begin_i</span> <span class='op'>+=</span> <span class='id identifier rubyid_attr_begin'>attr_begin</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>+</span> <span class='int'>1</span> <span class='id identifier rubyid_delim'>delim</span> <span class='op'>=</span> <span class='id identifier rubyid_current'>current</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr_begin_i'>attr_begin_i</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='id identifier rubyid_attr_end_i'>attr_end_i</span> <span class='op'>=</span> <span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_delim'>delim</span><span class='comma'>,</span> <span class='id identifier rubyid_attr_begin_i'>attr_begin_i</span> <span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_attr_end_i'>attr_end_i</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_attr_end_i'>attr_end_i</span> <span class='op'>-=</span> <span class='int'>1</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_current'>current</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr_begin_i'>attr_begin_i</span><span class='op'>..</span><span class='id identifier rubyid_attr_end_i'>attr_end_i</span><span class='rbracket'>]</span> <span class='kw'>end</span> <span class='kw'>end</span> <span class='id identifier rubyid_meta_name'>meta_name</span> <span class='op'>=</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>name</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='id identifier rubyid_meta_tags'>meta_tags</span><span class='lbracket'>[</span><span class='id identifier rubyid_meta_name'>meta_name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>content</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='kw'>unless</span> <span class='id identifier rubyid_meta_name'>meta_name</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_close_i'>close_i</span> <span class='op'>+=</span> <span class='int'>1</span> <span class='id identifier rubyid_open_i'>open_i</span> <span class='op'>=</span> <span class='id identifier rubyid_head_element'>head_element</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='id identifier rubyid_open_tag'>open_tag</span><span class='comma'>,</span> <span class='id identifier rubyid_close_i'>close_i</span> <span class='kw'>end</span> <span class='id identifier rubyid_meta_tags'>meta_tags</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> </div> <div id="footer"> Generated on Mon Sep 21 05:08:59 2026 by <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.45 (ruby-4.0.7). </div> </div> </body> </html>