<?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 = <<-EOF <body> This is a test... <sub> S1 </sub> <sub> S2 </sub> <DL> <DT> A1 <DT> A2 <DT> A3 </DL> <DL> <DT> B1 <DT> B2 <DT> B3 </DL> <NEST> <P ALIGN="R">TOP</P> <NEST> <P>SECOND</P> <OL> <LI>C1 <LI>C2 <LI>C3 <LI>C4 </OL> </NEST> <OL> <LI>D1 <LI>D2 <LI>D3 <LI>D4 </OL> </NEST> </body> EOF a = TextTagIterator.new(stext) a.first("body") do |y| y.nth("dl",2) do |dl| dl.enumtag("dt") do |t| puts t.text.strip end end y.first("nest") do |n| n.first("p") do |c| print c.text, ' ' puts c.attributes.collect{ |k,v| "#{k}=#{v}" } end.next("nest") do |m| m.first("p") do |c| puts c.text end.next("ol") do |o| o.enumtag("li") do |i| puts i.text.strip end end end.next("ol") do |o| o.enumtag("li") do |i| puts i.text.strip end end end end a.each_block("sub") 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> *ɂႷ <nyasu@osk.3web.ne.jp> </p> <h2>Legal</h2> <pre> Copyright (c) 2000 Ⴗ <nyasu@osk.3web.ne.jp> </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> <a href="#M000368">each_block</a> <a href="#M000371">enumcollect</a> <a href="#M000370">enumtag</a> <a href="#M000363">find_closeenumtag</a> <a href="#M000362">find_closetag</a> <a href="#M000359">find_element</a> <a href="#M000364">find_openenumtag</a> <a href="#M000361">find_opentag</a> <a href="#M000366">first</a> <a href="#M000372">for_this</a> <a href="#M000374">get_first</a> <a href="#M000373">get_nth</a> <a href="#M000358">new</a> <a href="#M000367">next</a> <a href="#M000365">nth</a> <a href="#M000377">nth_tailer</a> <a href="#M000360">parse_attribute</a> <a href="#M000375">tagexist?</a> <a href="#M000376">tagnext</a> </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"> [R] </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"> [RW] </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"> [R] </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"> [R] </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">"Only String accepted"</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">"pi"</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">"tag(#{tag}) not found"</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">>=</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">'>'</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">"tag(#{tag}) not found"</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">>=</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">'>'</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">"<"</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">">"</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">/[^<>\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">"nth: number not specified"</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">"tag(#{tag}) not found at(#{i})"</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">'>'</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">"<"</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">">"</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">/[^<>\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">'<\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">></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">'<(\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|>)'</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">'>'</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+)="([^"]*)"/</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>