<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>Class: TextTagIterator</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
  <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
  <script type="text/javascript">
  // <![CDATA[

  function popupCode( url ) {
    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
  }

  function toggleCode( id ) {
    if ( document.getElementById )
      elem = document.getElementById( id );
    else if ( document.all )
      elem = eval( "document.all." + id );
    else
      return false;

    elemStyle = elem.style;
    
    if ( elemStyle.display != "block" ) {
      elemStyle.display = "block"
    } else {
      elemStyle.display = "none"
    }

    return true;
  }
  
  // Make codeblocks hidden by default
  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
  
  // ]]>
  </script>

</head>
<body>



    <div id="classHeader">
        <table class="header-table">
        <tr class="top-aligned-row">
          <td><strong>Class</strong></td>
          <td class="class-name-in-header">TextTagIterator</td>
        </tr>
        <tr class="top-aligned-row">
            <td><strong>In:</strong></td>
            <td>
                <a href="../files/lib/carat/tagiter_rb.html">
                lib/carat/tagiter.rb
                </a>
        <br />
            </td>
        </tr>

        <tr class="top-aligned-row">
            <td><strong>Parent:</strong></td>
            <td>
                <a href="Object.html">
                Object
               </a>
            </td>
        </tr>
        </table>
    </div>
  <!-- banner header -->

  <div id="bodyContent">



  <div id="contextContent">

    <div id="description">
      <h1>Tagiter</h1>
<p>
Simple but very useful <a href="HTML.html">HTML</a>/XHTML cascading parser
for those quick and dirty web page parse jobs.
</p>
<h2>Usage</h2>
<pre>
  # sample html
  stext = &lt;&lt;-EOF
  &lt;body&gt; This is a test...
    &lt;sub&gt; S1 &lt;/sub&gt; &lt;sub&gt; S2 &lt;/sub&gt;
    &lt;DL&gt;
      &lt;DT&gt; A1
      &lt;DT&gt; A2
      &lt;DT&gt; A3
    &lt;/DL&gt;
    &lt;DL&gt;
      &lt;DT&gt; B1
      &lt;DT&gt; B2
      &lt;DT&gt; B3
    &lt;/DL&gt;
    &lt;NEST&gt;
      &lt;P ALIGN=&quot;R&quot;&gt;TOP&lt;/P&gt;
      &lt;NEST&gt;
        &lt;P&gt;SECOND&lt;/P&gt;
        &lt;OL&gt;
          &lt;LI&gt;C1
          &lt;LI&gt;C2
          &lt;LI&gt;C3
          &lt;LI&gt;C4
        &lt;/OL&gt;
      &lt;/NEST&gt;
      &lt;OL&gt;
        &lt;LI&gt;D1
        &lt;LI&gt;D2
        &lt;LI&gt;D3
        &lt;LI&gt;D4
      &lt;/OL&gt;
    &lt;/NEST&gt;
  &lt;/body&gt;
  EOF

  a = TextTagIterator.new(stext)
  a.first(&quot;body&quot;) do |y|
    y.nth(&quot;dl&quot;,2) do |dl|
      dl.enumtag(&quot;dt&quot;) do |t|
        puts t.text.strip
      end
    end
    y.first(&quot;nest&quot;) do |n|
      n.first(&quot;p&quot;) do |c|
        print c.text, ' '
        puts c.attributes.collect{ |k,v| &quot;#{k}=#{v}&quot; }
      end.next(&quot;nest&quot;) do |m|
        m.first(&quot;p&quot;) do |c|
          puts c.text
        end.next(&quot;ol&quot;) do |o|
          o.enumtag(&quot;li&quot;) do |i| puts i.text.strip end
        end
      end.next(&quot;ol&quot;) do |o|
        o.enumtag(&quot;li&quot;) do |i| puts i.text.strip end
      end
    end
  end
  a.each_block(&quot;sub&quot;) do |y|
    puts y.text.strip
  end
</pre>
<p>
produces
</p>
<pre>
  B1
  B2
  B3
  TOP align=R
  SECOND
  C1
  C2
  C3
  C4
  D1
  D2
  D3
  D4
  S1
  S2
</pre>
<h2>Author</h2>
<p>
*ɂႷ &lt;nyasu@osk.3web.ne.jp&gt;
</p>
<h2>Legal</h2>
<pre>
  Copyright (c) 2000 Ⴗ &lt;nyasu@osk.3web.ne.jp&gt;
</pre>
<h2>History</h2>
<ul>
<li>2004/11/30 added to collection

</li>
<li>2000/09/18 made attribute name case-ignored.

</li>
<li>2000/06/06 added a new method : nth_trailer(tag,n).

<pre>
            fixed regexp of tagnext method.
</pre>
</li>
<li>2000/06/05 added new methods for information. tagexist?(tag) and tagnext.

<pre>
            fixed bugs on return values of each_block
</pre>
</li>
<li>2000/06/01 fixed nth method which sometimes crashes at the end-of-file.

<pre>
             (reported by Matsui-san)
</pre>
</li>
<li>2000/05/08 fixed enumtag which yields only half of texts in some conditions

</li>
<li>2000/04/27 regexp debugged in <a
href="TextTagIterator.html#M000360">parse_attribute</a>

</li>
<li>2000/03/12 started

</li>
</ul>

    </div>


   </div>

    <div id="method-list">
      <h3 class="section-bar">Methods</h3>

      <div class="name-list">
      <a href="#M000369">collect</a>&nbsp;&nbsp;
      <a href="#M000368">each_block</a>&nbsp;&nbsp;
      <a href="#M000371">enumcollect</a>&nbsp;&nbsp;
      <a href="#M000370">enumtag</a>&nbsp;&nbsp;
      <a href="#M000363">find_closeenumtag</a>&nbsp;&nbsp;
      <a href="#M000362">find_closetag</a>&nbsp;&nbsp;
      <a href="#M000359">find_element</a>&nbsp;&nbsp;
      <a href="#M000364">find_openenumtag</a>&nbsp;&nbsp;
      <a href="#M000361">find_opentag</a>&nbsp;&nbsp;
      <a href="#M000366">first</a>&nbsp;&nbsp;
      <a href="#M000372">for_this</a>&nbsp;&nbsp;
      <a href="#M000374">get_first</a>&nbsp;&nbsp;
      <a href="#M000373">get_nth</a>&nbsp;&nbsp;
      <a href="#M000358">new</a>&nbsp;&nbsp;
      <a href="#M000367">next</a>&nbsp;&nbsp;
      <a href="#M000365">nth</a>&nbsp;&nbsp;
      <a href="#M000377">nth_tailer</a>&nbsp;&nbsp;
      <a href="#M000360">parse_attribute</a>&nbsp;&nbsp;
      <a href="#M000375">tagexist?</a>&nbsp;&nbsp;
      <a href="#M000376">tagnext</a>&nbsp;&nbsp;
      </div>
    </div>

  </div>


    <!-- if includes -->

    <div id="section">





    <div id="attribute-list">
      <h3 class="section-bar">Attributes</h3>

      <div class="name-list">
        <table>
        <tr class="top-aligned-row context-row">
          <td class="context-item-name">attributes</td>
          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
          <td class="context-item-desc"></td>
        </tr>
        <tr class="top-aligned-row context-row">
          <td class="context-item-name">option</td>
          <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
          <td class="context-item-desc"></td>
        </tr>
        <tr class="top-aligned-row context-row">
          <td class="context-item-name">tag</td>
          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
          <td class="context-item-desc"></td>
        </tr>
        <tr class="top-aligned-row context-row">
          <td class="context-item-name">text</td>
          <td class="context-item-value">&nbsp;[R]&nbsp;</td>
          <td class="context-item-desc"></td>
        </tr>
        </table>
      </div>
    </div>
      


    <!-- if method_list -->
    <div id="methods">
      <h3 class="section-bar">Public Class methods</h3>

      <div id="method-M000358" class="method-detail">
        <a name="M000358"></a>

        <div class="method-heading">
          <a href="#M000358" class="method-signature">
          <span class="method-name">new</span><span class="method-args">(text,tag=nil,attributes={})</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000358-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000358-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 120</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">text</span>,<span class="ruby-identifier">tag</span>=<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">attributes</span>={})
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>,<span class="ruby-value str">&quot;Only String accepted&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
    <span class="ruby-ivar">@text</span>=<span class="ruby-identifier">text</span>
    <span class="ruby-ivar">@option</span>=<span class="ruby-value str">&quot;pi&quot;</span>
    <span class="ruby-ivar">@tag</span>=<span class="ruby-identifier">tag</span>
    <span class="ruby-ivar">@attributes</span>=<span class="ruby-identifier">attributes</span>
    <span class="ruby-keyword kw">def</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-operator">[]</span>(<span class="ruby-identifier">aname</span>)
      <span class="ruby-keyword kw">super</span> <span class="ruby-identifier">aname</span>.<span class="ruby-identifier">downcase</span>
    <span class="ruby-keyword kw">end</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <h3 class="section-bar">Public Instance methods</h3>

      <div id="method-M000369" class="method-detail">
        <a name="M000369"></a>

        <div class="method-heading">
          <a href="#M000369" class="method-signature">
          <span class="method-name">collect</span><span class="method-args">(*arg)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000369-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000369-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 227</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collect</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>)
    <span class="ruby-identifier">a</span>=[]
    <span class="ruby-identifier">each_block</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">tt</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">tt</span> <span class="ruby-keyword kw">end</span>
    <span class="ruby-identifier">a</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000368" class="method-detail">
        <a name="M000368"></a>

        <div class="method-heading">
          <a href="#M000368" class="method-signature">
          <span class="method-name">each_block</span><span class="method-args">(tag,closetag=nil) {|self.class.new(@text[s..e],tag,parse_attribute(d))| ...}</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000368-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000368-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 203</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each_block</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">closetag</span>=<span class="ruby-keyword kw">nil</span>)
    <span class="ruby-identifier">t</span>=<span class="ruby-value">0</span>
    <span class="ruby-identifier">s</span>,<span class="ruby-identifier">d</span> =<span class="ruby-identifier">find_opentag</span>(<span class="ruby-identifier">tag</span>)
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>,<span class="ruby-node">&quot;tag(#{tag}) not found&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">s</span>

    <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword kw">do</span>
      <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">closetag</span> <span class="ruby-keyword kw">then</span>
        <span class="ruby-identifier">e</span>=<span class="ruby-identifier">find_closetag</span>(<span class="ruby-identifier">closetag</span>,<span class="ruby-identifier">s</span>,<span class="ruby-identifier">tag</span>)
      <span class="ruby-keyword kw">else</span>
        <span class="ruby-identifier">e</span>=<span class="ruby-identifier">find_closetag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">s</span>)
      <span class="ruby-keyword kw">end</span>
      <span class="ruby-identifier">e</span>=<span class="ruby-value">-1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">e</span>
      <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@text</span>[<span class="ruby-identifier">s</span><span class="ruby-operator">..</span><span class="ruby-identifier">e</span>],<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">parse_attribute</span>(<span class="ruby-identifier">d</span>))
      <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">e</span><span class="ruby-operator">&gt;=</span><span class="ruby-value">0</span> <span class="ruby-keyword kw">then</span> 
        <span class="ruby-identifier">t</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'&gt;'</span>,<span class="ruby-identifier">e</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)
        <span class="ruby-identifier">t</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">length</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">t</span>
        <span class="ruby-identifier">s</span>,<span class="ruby-identifier">d</span> = <span class="ruby-identifier">find_opentag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">t</span>)
      <span class="ruby-keyword kw">else</span>
        <span class="ruby-identifier">s</span>=<span class="ruby-keyword kw">false</span>
      <span class="ruby-keyword kw">end</span>
    <span class="ruby-keyword kw">end</span>
    <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">text</span>[<span class="ruby-identifier">t</span><span class="ruby-operator">+</span><span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>])
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000371" class="method-detail">
        <a name="M000371"></a>

        <div class="method-heading">
          <a href="#M000371" class="method-signature">
          <span class="method-name">enumcollect</span><span class="method-args">(tag)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000371-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000371-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 243</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">enumcollect</span>(<span class="ruby-identifier">tag</span>)
    <span class="ruby-identifier">a</span>=[]
    <span class="ruby-identifier">enumtag</span>(<span class="ruby-identifier">tag</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">t</span> <span class="ruby-keyword kw">end</span>
    <span class="ruby-identifier">a</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000370" class="method-detail">
        <a name="M000370"></a>

        <div class="method-heading">
          <a href="#M000370" class="method-signature">
          <span class="method-name">enumtag</span><span class="method-args">(tag) {|self.class.new(@text[s..e],tag,parse_attribute(d))| ...}</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000370-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000370-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 233</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">enumtag</span>(<span class="ruby-identifier">tag</span>)
    <span class="ruby-identifier">s</span>,<span class="ruby-identifier">d</span> = <span class="ruby-identifier">find_openenumtag</span>(<span class="ruby-identifier">tag</span>)
    <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword kw">do</span>
      <span class="ruby-identifier">e</span>=<span class="ruby-identifier">find_closeenumtag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">s</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)
      <span class="ruby-identifier">e</span>=<span class="ruby-value">-1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">e</span>
      <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@text</span>[<span class="ruby-identifier">s</span><span class="ruby-operator">..</span><span class="ruby-identifier">e</span>],<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">parse_attribute</span>(<span class="ruby-identifier">d</span>))
      <span class="ruby-identifier">s</span>,<span class="ruby-identifier">d</span> = <span class="ruby-identifier">find_openenumtag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">s</span>)
    <span class="ruby-keyword kw">end</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000366" class="method-detail">
        <a name="M000366"></a>

        <div class="method-heading">
          <a href="#M000366" class="method-signature">
          <span class="method-name">first</span><span class="method-args">(tag,*arg) {|f end end| ...}</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000366-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000366-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 200</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">first</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-identifier">nth</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-value">1</span>,<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">f</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span>
  <span class="ruby-keyword kw">alias</span> <span class="ruby-identifier">:next</span> <span class="ruby-identifier">first</span>

  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each_block</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">closetag</span>=<span class="ruby-keyword kw">nil</span>)
    <span class="ruby-identifier">t</span>=<span class="ruby-value">0</span>
    <span class="ruby-identifier">s</span>,<span class="ruby-identifier">d</span> =<span class="ruby-identifier">find_opentag</span>(<span class="ruby-identifier">tag</span>)
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>,<span class="ruby-node">&quot;tag(#{tag}) not found&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">s</span>

    <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword kw">do</span>
      <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">closetag</span> <span class="ruby-keyword kw">then</span>
        <span class="ruby-identifier">e</span>=<span class="ruby-identifier">find_closetag</span>(<span class="ruby-identifier">closetag</span>,<span class="ruby-identifier">s</span>,<span class="ruby-identifier">tag</span>)
      <span class="ruby-keyword kw">else</span>
        <span class="ruby-identifier">e</span>=<span class="ruby-identifier">find_closetag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">s</span>)
      <span class="ruby-keyword kw">end</span>
      <span class="ruby-identifier">e</span>=<span class="ruby-value">-1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">e</span>
      <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@text</span>[<span class="ruby-identifier">s</span><span class="ruby-operator">..</span><span class="ruby-identifier">e</span>],<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">parse_attribute</span>(<span class="ruby-identifier">d</span>))
      <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">e</span><span class="ruby-operator">&gt;=</span><span class="ruby-value">0</span> <span class="ruby-keyword kw">then</span> 
        <span class="ruby-identifier">t</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'&gt;'</span>,<span class="ruby-identifier">e</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)
        <span class="ruby-identifier">t</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">length</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">t</span>
        <span class="ruby-identifier">s</span>,<span class="ruby-identifier">d</span> = <span class="ruby-identifier">find_opentag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">t</span>)
      <span class="ruby-keyword kw">else</span>
        <span class="ruby-identifier">s</span>=<span class="ruby-keyword kw">false</span>
      <span class="ruby-keyword kw">end</span>
    <span class="ruby-keyword kw">end</span>
    <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">text</span>[<span class="ruby-identifier">t</span><span class="ruby-operator">+</span><span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>])
  <span class="ruby-keyword kw">end</span>

  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collect</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>)
    <span class="ruby-identifier">a</span>=[]
    <span class="ruby-identifier">each_block</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">tt</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">tt</span> <span class="ruby-keyword kw">end</span>
    <span class="ruby-identifier">a</span>
  <span class="ruby-keyword kw">end</span>

  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">enumtag</span>(<span class="ruby-identifier">tag</span>)
    <span class="ruby-identifier">s</span>,<span class="ruby-identifier">d</span> = <span class="ruby-identifier">find_openenumtag</span>(<span class="ruby-identifier">tag</span>)
    <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword kw">do</span>
      <span class="ruby-identifier">e</span>=<span class="ruby-identifier">find_closeenumtag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">s</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)
      <span class="ruby-identifier">e</span>=<span class="ruby-value">-1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">e</span>
      <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@text</span>[<span class="ruby-identifier">s</span><span class="ruby-operator">..</span><span class="ruby-identifier">e</span>],<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">parse_attribute</span>(<span class="ruby-identifier">d</span>))
      <span class="ruby-identifier">s</span>,<span class="ruby-identifier">d</span> = <span class="ruby-identifier">find_openenumtag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">s</span>)
    <span class="ruby-keyword kw">end</span>
  <span class="ruby-keyword kw">end</span>

  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">enumcollect</span>(<span class="ruby-identifier">tag</span>)
    <span class="ruby-identifier">a</span>=[]
    <span class="ruby-identifier">enumtag</span>(<span class="ruby-identifier">tag</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">t</span> <span class="ruby-keyword kw">end</span>
    <span class="ruby-identifier">a</span>
  <span class="ruby-keyword kw">end</span>

  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">for_this</span>
    <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">self</span>
  <span class="ruby-keyword kw">end</span>

  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_nth</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-identifier">r</span>=<span class="ruby-keyword kw">nil</span>; <span class="ruby-identifier">nth</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">bl</span><span class="ruby-operator">|</span> <span class="ruby-identifier">r</span>=<span class="ruby-identifier">bl</span> <span class="ruby-keyword kw">end</span>; <span class="ruby-identifier">r</span>; <span class="ruby-keyword kw">end</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_first</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-identifier">r</span>=<span class="ruby-keyword kw">nil</span>; <span class="ruby-identifier">first</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">bl</span><span class="ruby-operator">|</span> <span class="ruby-identifier">r</span>=<span class="ruby-identifier">bl</span> <span class="ruby-keyword kw">end</span>; <span class="ruby-identifier">r</span>; <span class="ruby-keyword kw">end</span>

  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tagexist?</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>=<span class="ruby-value">0</span>)
    <span class="ruby-identifier">s</span>=<span class="ruby-identifier">find_element</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>)
    <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword kw">then</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">else</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">end</span>
  <span class="ruby-keyword kw">end</span>

  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tagnext</span>
    <span class="ruby-identifier">s</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">&quot;&lt;&quot;</span>)
    <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">s</span>
    <span class="ruby-identifier">e</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">&quot;&gt;&quot;</span>,<span class="ruby-identifier">s</span>)
    <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">s</span>
    <span class="ruby-ivar">@text</span>[<span class="ruby-identifier">s</span><span class="ruby-operator">..</span><span class="ruby-identifier">e</span>].<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/[^&lt;&gt;\s]+/</span>)[<span class="ruby-value">0</span>]
  <span class="ruby-keyword kw">end</span>

  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nth_tailer</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">n</span>)
    <span class="ruby-identifier">nth</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">n</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-keyword kw">end</span>
  <span class="ruby-keyword kw">end</span>

<span class="ruby-keyword kw">end</span>


??

</pre>
          </div>
        </div>
      </div>

      <div id="method-M000372" class="method-detail">
        <a name="M000372"></a>

        <div class="method-heading">
          <a href="#M000372" class="method-signature">
          <span class="method-name">for_this</span><span class="method-args">() {|self| ...}</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000372-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000372-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 249</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">for_this</span>
    <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">self</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000374" class="method-detail">
        <a name="M000374"></a>

        <div class="method-heading">
          <a href="#M000374" class="method-signature">
          <span class="method-name">get_first</span><span class="method-args">(*arg)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000374-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000374-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 254</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_first</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-identifier">r</span>=<span class="ruby-keyword kw">nil</span>; <span class="ruby-identifier">first</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">bl</span><span class="ruby-operator">|</span> <span class="ruby-identifier">r</span>=<span class="ruby-identifier">bl</span> <span class="ruby-keyword kw">end</span>; <span class="ruby-identifier">r</span>; <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000373" class="method-detail">
        <a name="M000373"></a>

        <div class="method-heading">
          <a href="#M000373" class="method-signature">
          <span class="method-name">get_nth</span><span class="method-args">(*arg)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000373-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000373-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 253</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_nth</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-identifier">r</span>=<span class="ruby-keyword kw">nil</span>; <span class="ruby-identifier">nth</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">bl</span><span class="ruby-operator">|</span> <span class="ruby-identifier">r</span>=<span class="ruby-identifier">bl</span> <span class="ruby-keyword kw">end</span>; <span class="ruby-identifier">r</span>; <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000367" class="method-detail">
        <a name="M000367"></a>

        <div class="method-heading">
          <span class="method-name">next</span><span class="method-args">(tag,*arg)</span>
        </div>
      
        <div class="method-description">
          <p>
Alias for <a href="TextTagIterator.html#M000366">first</a>
</p>
        </div>
      </div>

      <div id="method-M000365" class="method-detail">
        <a name="M000365"></a>

        <div class="method-heading">
          <a href="#M000365" class="method-signature">
          <span class="method-name">nth</span><span class="method-args">(tag,n,closetag=nil) {|self.class.new(text[s..e],tag,parse_attribute(d))| ...}</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000365-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000365-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 177</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nth</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">n</span>,<span class="ruby-identifier">closetag</span>=<span class="ruby-keyword kw">nil</span>)
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>,<span class="ruby-value str">&quot;nth: number not specified&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">n</span>
    <span class="ruby-identifier">t</span>=<span class="ruby-value">0</span>
    <span class="ruby-identifier">e</span>=<span class="ruby-identifier">s</span>=<span class="ruby-value">0</span>   <span class="ruby-comment cmt"># for their scope</span>
    <span class="ruby-identifier">d</span>=<span class="ruby-keyword kw">nil</span>

    <span class="ruby-value">1</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">n</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
      <span class="ruby-identifier">s</span>,<span class="ruby-identifier">d</span> = <span class="ruby-identifier">find_opentag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">t</span>)
      <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>,<span class="ruby-node">&quot;tag(#{tag}) not found at(#{i})&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">s</span>

      <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">closetag</span> <span class="ruby-keyword kw">then</span>
        <span class="ruby-identifier">e</span>=<span class="ruby-identifier">find_closetag</span>(<span class="ruby-identifier">closetag</span>,<span class="ruby-identifier">s</span>,<span class="ruby-identifier">tag</span>)
      <span class="ruby-keyword kw">else</span>
        <span class="ruby-identifier">e</span>=<span class="ruby-identifier">find_closetag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">s</span>)
      <span class="ruby-keyword kw">end</span>
      <span class="ruby-identifier">e</span>=<span class="ruby-value">-1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">e</span>
      <span class="ruby-identifier">t</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'&gt;'</span>,<span class="ruby-identifier">e</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)
      <span class="ruby-identifier">t</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">length</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">t</span>
    <span class="ruby-keyword kw">end</span>
    <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">text</span>[<span class="ruby-identifier">s</span><span class="ruby-operator">..</span><span class="ruby-identifier">e</span>],<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">parse_attribute</span>(<span class="ruby-identifier">d</span>))
    <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">text</span>[<span class="ruby-identifier">t</span><span class="ruby-operator">+</span><span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>])
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000377" class="method-detail">
        <a name="M000377"></a>

        <div class="method-heading">
          <a href="#M000377" class="method-signature">
          <span class="method-name">nth_tailer</span><span class="method-args">(tag,n)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000377-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000377-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 269</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nth_tailer</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">n</span>)
    <span class="ruby-identifier">nth</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">n</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-keyword kw">end</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000375" class="method-detail">
        <a name="M000375"></a>

        <div class="method-heading">
          <a href="#M000375" class="method-signature">
          <span class="method-name">tagexist?</span><span class="method-args">(tag,st=0)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000375-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000375-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 256</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tagexist?</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>=<span class="ruby-value">0</span>)
    <span class="ruby-identifier">s</span>=<span class="ruby-identifier">find_element</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>)
    <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword kw">then</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">else</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">end</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000376" class="method-detail">
        <a name="M000376"></a>

        <div class="method-heading">
          <a href="#M000376" class="method-signature">
          <span class="method-name">tagnext</span><span class="method-args">()</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000376-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000376-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 261</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tagnext</span>
    <span class="ruby-identifier">s</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">&quot;&lt;&quot;</span>)
    <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">s</span>
    <span class="ruby-identifier">e</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">&quot;&gt;&quot;</span>,<span class="ruby-identifier">s</span>)
    <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">s</span>
    <span class="ruby-ivar">@text</span>[<span class="ruby-identifier">s</span><span class="ruby-operator">..</span><span class="ruby-identifier">e</span>].<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/[^&lt;&gt;\s]+/</span>)[<span class="ruby-value">0</span>]
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <h3 class="section-bar">Private Instance methods</h3>

      <div id="method-M000363" class="method-detail">
        <a name="M000363"></a>

        <div class="method-heading">
          <a href="#M000363" class="method-signature">
          <span class="method-name">find_closeenumtag</span><span class="method-args">(tag,st=0)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000363-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000363-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 167</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">find_closeenumtag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>=<span class="ruby-value">0</span>)
    <span class="ruby-identifier">rex</span>=<span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'&lt;\s*'</span><span class="ruby-operator">+</span><span class="ruby-identifier">tag</span>,<span class="ruby-ivar">@option</span>)
    <span class="ruby-identifier">s</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">rex</span>,<span class="ruby-identifier">st</span>)
    <span class="ruby-identifier">s</span><span class="ruby-operator">-=</span><span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span>
    <span class="ruby-identifier">s</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000362" class="method-detail">
        <a name="M000362"></a>

        <div class="method-heading">
          <a href="#M000362" class="method-signature">
          <span class="method-name">find_closetag</span><span class="method-args">(tag,st,opentag=nil)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000362-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000362-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 151</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">find_closetag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>,<span class="ruby-identifier">opentag</span>=<span class="ruby-keyword kw">nil</span>)
    <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">opentag</span> <span class="ruby-keyword kw">then</span>
      <span class="ruby-identifier">p</span>=<span class="ruby-identifier">find_element</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>)
      <span class="ruby-identifier">q</span>,<span class="ruby-identifier">d</span> = <span class="ruby-identifier">find_opentag</span>(<span class="ruby-identifier">opentag</span>,<span class="ruby-identifier">st</span>)
    <span class="ruby-keyword kw">else</span>
      <span class="ruby-identifier">p</span>=<span class="ruby-identifier">find_element</span>(<span class="ruby-value str">'/\s*'</span><span class="ruby-operator">+</span><span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>)
      <span class="ruby-identifier">q</span>,<span class="ruby-identifier">d</span> = <span class="ruby-identifier">find_opentag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>)
    <span class="ruby-keyword kw">end</span>
    <span class="ruby-identifier">p</span><span class="ruby-operator">-=</span><span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">p</span> 

    <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">p</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">q</span> <span class="ruby-keyword kw">then</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">p</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">q</span> <span class="ruby-keyword kw">then</span>    <span class="ruby-comment cmt"># tag nested</span>
      <span class="ruby-identifier">p</span>=<span class="ruby-identifier">find_closetag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">find_closetag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">q</span>,<span class="ruby-identifier">opentag</span>)<span class="ruby-operator">+</span><span class="ruby-value">2</span>,<span class="ruby-identifier">opentag</span>)
    <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span>
    
    <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">p</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000359" class="method-detail">
        <a name="M000359"></a>

        <div class="method-heading">
          <a href="#M000359" class="method-signature">
          <span class="method-name">find_element</span><span class="method-args">(element,st=0)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000359-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000359-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 131</span>
  <span class="ruby-keyword kw">def</span>  <span class="ruby-identifier">find_element</span><span class="ruby-identifier">find_element</span>(<span class="ruby-identifier">element</span>,<span class="ruby-identifier">st</span>=<span class="ruby-value">0</span>)
    <span class="ruby-identifier">rex</span>=<span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'&lt;(\s|\n)*'</span><span class="ruby-operator">+</span><span class="ruby-identifier">element</span><span class="ruby-operator">+</span><span class="ruby-value str">'(\s|\n|&gt;)'</span>,<span class="ruby-ivar">@option</span>)
    <span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">rex</span>,<span class="ruby-identifier">st</span>)
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000364" class="method-detail">
        <a name="M000364"></a>

        <div class="method-heading">
          <span class="method-name">find_openenumtag</span><span class="method-args">(tag,st=0)</span>
        </div>
      
        <div class="method-description">
          <p>
Alias for <a href="TextTagIterator.html#M000361">find_opentag</a>
</p>
        </div>
      </div>

      <div id="method-M000361" class="method-detail">
        <a name="M000361"></a>

        <div class="method-heading">
          <a href="#M000361" class="method-signature">
          <span class="method-name">find_opentag</span><span class="method-args">(tag,st=0)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000361-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000361-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 144</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">find_opentag</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>=<span class="ruby-value">0</span>)
    <span class="ruby-identifier">s</span>=<span class="ruby-identifier">find_element</span>(<span class="ruby-identifier">tag</span>,<span class="ruby-identifier">st</span>)
    <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">s</span>

    <span class="ruby-identifier">r</span>=<span class="ruby-ivar">@text</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'&gt;'</span>,<span class="ruby-identifier">s</span>)
    <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">r</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>,<span class="ruby-ivar">@text</span>[<span class="ruby-identifier">s</span><span class="ruby-operator">+</span><span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-identifier">r</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>]
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>

      <div id="method-M000360" class="method-detail">
        <a name="M000360"></a>

        <div class="method-heading">
          <a href="#M000360" class="method-signature">
          <span class="method-name">parse_attribute</span><span class="method-args">(attstr)</span>
          </a>
        </div>
      
        <div class="method-description">
          <p><a class="source-toggle" href="#"
            onclick="toggleCode('M000360-source');return false;">[Source]</a></p>
          <div class="method-source-code" id="M000360-source">
<pre>
<span class="ruby-comment cmt"># File lib/carat/tagiter.rb, line 136</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_attribute</span>(<span class="ruby-identifier">attstr</span>)
    <span class="ruby-identifier">k</span>={}; <span class="ruby-identifier">r</span>={}; 
    <span class="ruby-identifier">attstr</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/(\w+)=(\S+)/</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pt</span><span class="ruby-operator">|</span> <span class="ruby-identifier">k</span>[ <span class="ruby-identifier">pt</span>[<span class="ruby-value">0</span>] ] = <span class="ruby-identifier">pt</span>[<span class="ruby-value">1</span>] <span class="ruby-keyword kw">end</span>
    <span class="ruby-identifier">attstr</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/(\w+)=&quot;([^&quot;]*)&quot;/</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pt</span><span class="ruby-operator">|</span> <span class="ruby-identifier">k</span>[ <span class="ruby-identifier">pt</span>[<span class="ruby-value">0</span>] ] = <span class="ruby-identifier">pt</span>[<span class="ruby-value">1</span>] <span class="ruby-keyword kw">end</span>
    <span class="ruby-identifier">k</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>,<span class="ruby-identifier">val</span><span class="ruby-operator">|</span> <span class="ruby-identifier">r</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">downcase</span>]=<span class="ruby-identifier">val</span> <span class="ruby-keyword kw">end</span>
    <span class="ruby-identifier">r</span>
  <span class="ruby-keyword kw">end</span>
</pre>
          </div>
        </div>
      </div>


    </div>


  </div>


<div id="validator-badges">
  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
</div>

</body>
</html>