<?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: FeedParser::SGMLParser</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">FeedParser::SGMLParser</td> </tr> <tr class="top-aligned-row"> <td><strong>In:</strong></td> <td> <a href="../../files/lib/feedparser/sgml-parser_rb.html"> lib/feedparser/sgml-parser.rb </a> <br /> </td> </tr> <tr class="top-aligned-row"> <td><strong>Parent:</strong></td> <td> Object </td> </tr> </table> </div> <!-- banner header --> <div id="bodyContent"> <div id="contextContent"> <div id="diagram"> <map id="map" name="map"> <area shape="rect" coords="1435,5,1600,53" href="../RuntimeError.html" alt="RuntimeError" /> <area shape="rect" coords="1364,161,1671,209" href="UnknownFeedTypeException.html" alt="UnknownFeedTypeException" /> <area shape="rect" coords="887,136,1340,235" href="FeedItem.html" alt="FeedItem\n[lib/feedparser/feedparser.rb\nlib/feedparser/html-output.rb\nlib/feedparser/text-output.rb]" /> <area shape="rect" coords="987,283,1104,331" href="AtomItem.html" alt="AtomItem" /> <area shape="rect" coords="1128,283,1235,331" href="RSSItem.html" alt="RSSItem" /> <area shape="rect" coords="79,161,220,209" href="SGMLParser.html" alt="SGMLParser" /> <area shape="rect" coords="48,283,251,331" href="HTML2TextParser.html" alt="HTML2TextParser" /> <area shape="rect" coords="409,136,863,235" href="Feed.html" alt="Feed\n[lib/feedparser/feedparser.rb\nlib/feedparser/html-output.rb\nlib/feedparser/text-output.rb]" /> <area shape="rect" coords="399,100,1681,341" href="../FeedParser.html" alt="lib/feedparser/feedparser.rb" /> <area shape="rect" coords="60,125,372,220" href="../FeedParser.html" alt="lib/feedparser/sgml-parser.rb" /> <area shape="rect" coords="27,247,388,341" href="../FeedParser.html" alt="lib/feedparser/html2text-parser.rb" /> <area shape="rect" coords="16,64,1692,352" href="../FeedParser.html" alt="FeedParser" /> </map> <img src="../../dot/m_8_0.png" usemap="#map" border="0" alt="dot/m_8_0.png"> </div> </div> <div id="method-list"> <h3 class="section-bar">Methods</h3> <div class="name-list"> <a href="#M000029">close</a> <a href="#M000028">feed</a> <a href="#M000035">finish_endtag</a> <a href="#M000034">finish_starttag</a> <a href="#M000030">goahead</a> <a href="#M000040">handle_charref</a> <a href="#M000043">handle_comment</a> <a href="#M000042">handle_data</a> <a href="#M000038">handle_endtag</a> <a href="#M000041">handle_entityref</a> <a href="#M000044">handle_special</a> <a href="#M000037">handle_starttag</a> <a href="#M000025">has_context</a> <a href="#M000023">new</a> <a href="#M000031">parse_comment</a> <a href="#M000033">parse_endtag</a> <a href="#M000036">parse_special</a> <a href="#M000032">parse_starttag</a> <a href="#M000039">report_unbalanced</a> <a href="#M000024">reset</a> <a href="#M000027">setliteral</a> <a href="#M000026">setnomoretags</a> <a href="#M000047">unknown_charref</a> <a href="#M000046">unknown_endtag</a> <a href="#M000048">unknown_entityref</a> <a href="#M000045">unknown_starttag</a> </div> </div> </div> <!-- if includes --> <div id="section"> <div id="constants-list"> <h3 class="section-bar">Constants</h3> <div class="name-list"> <table summary="Constants"> <tr class="top-aligned-row context-row"> <td class="context-item-name">Interesting</td> <td>=</td> <td class="context-item-value">/[&<]/</td> <td width="3em"> </td> <td class="context-item-desc"> Regular expressions used for parsing: </td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Incomplete</td> <td>=</td> <td class="context-item-value">Regexp.compile('&([a-zA-Z][a-zA-Z0-9]*|#[0-9]*)?|' + '<([a-zA-Z][^<>]*|/([a-zA-Z][^<>]*)?|' + '![^<>]*)?')</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Entityref</td> <td>=</td> <td class="context-item-value">/&([a-zA-Z][-.a-zA-Z0-9]*);/</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Charref</td> <td>=</td> <td class="context-item-value">/&#([0-9]+);/</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Starttagopen</td> <td>=</td> <td class="context-item-value">/<[>a-zA-Z]/</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Endtagopen</td> <td>=</td> <td class="context-item-value">/<\/[<>a-zA-Z]/</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Endbracket</td> <td>=</td> <td class="context-item-value">/[<>]/</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Special</td> <td>=</td> <td class="context-item-value">/<![^<>]*>/</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Commentopen</td> <td>=</td> <td class="context-item-value">/<!--/</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Commentclose</td> <td>=</td> <td class="context-item-value">/--[ \t\n]*>/</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Tagfind</td> <td>=</td> <td class="context-item-value">/[a-zA-Z][a-zA-Z0-9.-]*/</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Attrfind</td> <td>=</td> <td class="context-item-value">Regexp.compile('[\s,]*([a-zA-Z_][a-zA-Z_0-9.-]*)' + '(\s*=\s*' + "('[^']*'" + '|"[^"]*"' + '|[-~a-zA-Z0-9,./:+*%?!()_#=]*))?')</td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">Entitydefs</td> <td>=</td> <td class="context-item-value">{'lt'=>'<', 'gt'=>'>', 'amp'=>'&', 'quot'=>'"', 'apos'=>'\''}</td> </tr> </table> </div> </div> <!-- if method_list --> <div id="methods"> <h3 class="section-bar">Public Class methods</h3> <div id="method-M000023" class="method-detail"> <a name="M000023"></a> <div class="method-heading"> <a href="#M000023" class="method-signature"> <span class="method-name">new</span><span class="method-args">(verbose=false)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000023-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000023-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 30</span> 30: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">verbose</span>=<span class="ruby-keyword kw">false</span>) 31: <span class="ruby-ivar">@verbose</span> = <span class="ruby-identifier">verbose</span> 32: <span class="ruby-identifier">reset</span> 33: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <h3 class="section-bar">Public Instance methods</h3> <div id="method-M000029" class="method-detail"> <a name="M000029"></a> <div class="method-heading"> <a href="#M000029" class="method-signature"> <span class="method-name">close</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000029-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000029-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 61</span> 61: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span> 62: <span class="ruby-identifier">goahead</span>(<span class="ruby-keyword kw">true</span>) 63: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000028" class="method-detail"> <a name="M000028"></a> <div class="method-heading"> <a href="#M000028" class="method-signature"> <span class="method-name">feed</span><span class="method-args">(data)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000028-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000028-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 56</span> 56: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">feed</span>(<span class="ruby-identifier">data</span>) 57: <span class="ruby-ivar">@rawdata</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">data</span> 58: <span class="ruby-identifier">goahead</span>(<span class="ruby-keyword kw">false</span>) 59: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000035" class="method-detail"> <a name="M000035"></a> <div class="method-heading"> <a href="#M000035" class="method-signature"> <span class="method-name">finish_endtag</span><span class="method-args">(tag)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000035-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000035-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 242</span> 242: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finish_endtag</span>(<span class="ruby-identifier">tag</span>) 243: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tag</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span> 244: <span class="ruby-identifier">found</span> = <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> 245: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">found</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span> 246: <span class="ruby-identifier">unknown_endtag</span>(<span class="ruby-identifier">tag</span>) 247: <span class="ruby-keyword kw">return</span> 248: <span class="ruby-keyword kw">end</span> 249: <span class="ruby-keyword kw">else</span> 250: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">tag</span> 251: <span class="ruby-identifier">method</span> = <span class="ruby-value str">'end_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">tag</span> 252: <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">method</span>) 253: <span class="ruby-identifier">unknown_endtag</span>(<span class="ruby-identifier">tag</span>) 254: <span class="ruby-keyword kw">end</span> 255: <span class="ruby-keyword kw">return</span> 256: <span class="ruby-keyword kw">end</span> 257: <span class="ruby-identifier">found</span> = <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">tag</span>) <span class="ruby-comment cmt">#or @stack.length</span> 258: <span class="ruby-keyword kw">end</span> 259: <span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">></span> <span class="ruby-identifier">found</span> 260: <span class="ruby-identifier">tag</span> = <span class="ruby-ivar">@stack</span>[<span class="ruby-value">-1</span>] 261: <span class="ruby-identifier">method</span> = <span class="ruby-value str">'end_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">tag</span> 262: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">method</span>) 263: <span class="ruby-identifier">handle_endtag</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">method</span>) 264: <span class="ruby-keyword kw">else</span> 265: <span class="ruby-identifier">unknown_endtag</span>(<span class="ruby-identifier">tag</span>) 266: <span class="ruby-keyword kw">end</span> 267: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">pop</span> 268: <span class="ruby-keyword kw">end</span> 269: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000034" class="method-detail"> <a name="M000034"></a> <div class="method-heading"> <a href="#M000034" class="method-signature"> <span class="method-name">finish_starttag</span><span class="method-args">(tag, attrs)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000034-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000034-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 224</span> 224: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finish_starttag</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">attrs</span>) 225: <span class="ruby-identifier">method</span> = <span class="ruby-value str">'start_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">tag</span> 226: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">method</span>) 227: <span class="ruby-ivar">@stack</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">tag</span> 228: <span class="ruby-identifier">handle_starttag</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">method</span>, <span class="ruby-identifier">attrs</span>) 229: <span class="ruby-keyword kw">return</span> <span class="ruby-value">1</span> 230: <span class="ruby-keyword kw">else</span> 231: <span class="ruby-identifier">method</span> = <span class="ruby-value str">'do_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">tag</span> 232: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">method</span>) 233: <span class="ruby-identifier">handle_starttag</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">method</span>, <span class="ruby-identifier">attrs</span>) 234: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> 235: <span class="ruby-keyword kw">else</span> 236: <span class="ruby-identifier">unknown_starttag</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">attrs</span>) 237: <span class="ruby-keyword kw">return</span> <span class="ruby-value">-1</span> 238: <span class="ruby-keyword kw">end</span> 239: <span class="ruby-keyword kw">end</span> 240: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000030" class="method-detail"> <a name="M000030"></a> <div class="method-heading"> <a href="#M000030" class="method-signature"> <span class="method-name">goahead</span><span class="method-args">(_end)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000030-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000030-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 65</span> 65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">goahead</span>(<span class="ruby-identifier">_end</span>) 66: <span class="ruby-identifier">rawdata</span> = <span class="ruby-ivar">@rawdata</span> 67: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span> 68: <span class="ruby-identifier">n</span> = <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">length</span> 69: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">n</span> 70: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@nomoretags</span> 71: <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">n</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)]) 72: <span class="ruby-identifier">i</span> = <span class="ruby-identifier">n</span> 73: <span class="ruby-keyword kw">break</span> 74: <span class="ruby-keyword kw">end</span> 75: <span class="ruby-identifier">j</span> = <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Interesting</span>, <span class="ruby-identifier">i</span>) 76: <span class="ruby-identifier">j</span> = <span class="ruby-identifier">n</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">j</span> 77: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">j</span> 78: <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">j</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)]) 79: <span class="ruby-keyword kw">end</span> 80: <span class="ruby-identifier">i</span> = <span class="ruby-identifier">j</span> 81: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">i</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">n</span>) 82: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?<</span> <span class="ruby-comment cmt">#</span> 83: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Starttagopen</span>, <span class="ruby-identifier">i</span>) <span class="ruby-operator">==</span> <span class="ruby-identifier">i</span> 84: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@literal</span> 85: <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span>, <span class="ruby-value">1</span>]) 86: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> 87: <span class="ruby-keyword kw">next</span> 88: <span class="ruby-keyword kw">end</span> 89: <span class="ruby-identifier">k</span> = <span class="ruby-identifier">parse_starttag</span>(<span class="ruby-identifier">i</span>) 90: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">k</span> 91: <span class="ruby-identifier">i</span> = <span class="ruby-identifier">k</span> 92: <span class="ruby-keyword kw">next</span> 93: <span class="ruby-keyword kw">end</span> 94: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Endtagopen</span>, <span class="ruby-identifier">i</span>) <span class="ruby-operator">==</span> <span class="ruby-identifier">i</span> 95: <span class="ruby-identifier">k</span> = <span class="ruby-identifier">parse_endtag</span>(<span class="ruby-identifier">i</span>) 96: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">k</span> 97: <span class="ruby-identifier">i</span> = <span class="ruby-identifier">k</span> 98: <span class="ruby-ivar">@literal</span> = <span class="ruby-keyword kw">false</span> 99: <span class="ruby-keyword kw">next</span> 100: <span class="ruby-keyword kw">end</span> 101: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Commentopen</span>, <span class="ruby-identifier">i</span>) <span class="ruby-operator">==</span> <span class="ruby-identifier">i</span> 102: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@literal</span> 103: <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span>,<span class="ruby-value">1</span>]) 104: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> 105: <span class="ruby-keyword kw">next</span> 106: <span class="ruby-keyword kw">end</span> 107: <span class="ruby-identifier">k</span> = <span class="ruby-identifier">parse_comment</span>(<span class="ruby-identifier">i</span>) 108: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">k</span> 109: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">k</span> 110: <span class="ruby-keyword kw">next</span> 111: <span class="ruby-keyword kw">end</span> 112: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Special</span>, <span class="ruby-identifier">i</span>) <span class="ruby-operator">==</span> <span class="ruby-identifier">i</span> 113: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@literal</span> 114: <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span>, <span class="ruby-value">1</span>]) 115: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> 116: <span class="ruby-keyword kw">next</span> 117: <span class="ruby-keyword kw">end</span> 118: <span class="ruby-identifier">k</span> = <span class="ruby-identifier">parse_special</span>(<span class="ruby-identifier">i</span>) 119: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">k</span> 120: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">k</span> 121: <span class="ruby-keyword kw">next</span> 122: <span class="ruby-keyword kw">end</span> 123: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?&</span> <span class="ruby-comment cmt">#</span> 124: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Charref</span>, <span class="ruby-identifier">i</span>) <span class="ruby-operator">==</span> <span class="ruby-identifier">i</span> 125: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">$&</span>.<span class="ruby-identifier">length</span> 126: <span class="ruby-identifier">handle_charref</span>(<span class="ruby-identifier">$1</span>) 127: <span class="ruby-identifier">i</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?;</span> 128: <span class="ruby-keyword kw">next</span> 129: <span class="ruby-keyword kw">end</span> 130: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Entityref</span>, <span class="ruby-identifier">i</span>) <span class="ruby-operator">==</span> <span class="ruby-identifier">i</span> 131: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">$&</span>.<span class="ruby-identifier">length</span> 132: <span class="ruby-identifier">handle_entityref</span>(<span class="ruby-identifier">$1</span>) 133: <span class="ruby-identifier">i</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?;</span> 134: <span class="ruby-keyword kw">next</span> 135: <span class="ruby-keyword kw">end</span> 136: <span class="ruby-keyword kw">else</span> 137: <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">'neither < nor & ??'</span> 138: <span class="ruby-keyword kw">end</span> 139: <span class="ruby-comment cmt"># We get here only if incomplete matches but</span> 140: <span class="ruby-comment cmt"># nothing else</span> 141: <span class="ruby-identifier">match</span> = <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Incomplete</span>, <span class="ruby-identifier">i</span>) 142: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">match</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">i</span> 143: <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span>, <span class="ruby-value">1</span>]) 144: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> 145: <span class="ruby-keyword kw">next</span> 146: <span class="ruby-keyword kw">end</span> 147: <span class="ruby-identifier">j</span> = <span class="ruby-identifier">match</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">$&</span>.<span class="ruby-identifier">length</span> 148: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">j</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">n</span> <span class="ruby-comment cmt"># Really incomplete</span> 149: <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">j</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)]) 150: <span class="ruby-identifier">i</span> = <span class="ruby-identifier">j</span> 151: <span class="ruby-keyword kw">end</span> 152: <span class="ruby-comment cmt"># end while</span> 153: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">_end</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">n</span> 154: <span class="ruby-identifier">handle_data</span>(<span class="ruby-ivar">@rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">n</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)]) 155: <span class="ruby-identifier">i</span> = <span class="ruby-identifier">n</span> 156: <span class="ruby-keyword kw">end</span> 157: <span class="ruby-ivar">@rawdata</span> = <span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>] 158: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000040" class="method-detail"> <a name="M000040"></a> <div class="method-heading"> <a href="#M000040" class="method-signature"> <span class="method-name">handle_charref</span><span class="method-args">(name)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000040-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000040-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 295</span> 295: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_charref</span>(<span class="ruby-identifier">name</span>) 296: <span class="ruby-identifier">n</span> = <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_i</span> 297: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span>(<span class="ruby-value">0</span> <span class="ruby-operator"><=</span> <span class="ruby-identifier">n</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">n</span> <span class="ruby-operator"><=</span> <span class="ruby-value">255</span>) 298: <span class="ruby-identifier">unknown_charref</span>(<span class="ruby-identifier">name</span>) 299: <span class="ruby-keyword kw">return</span> 300: <span class="ruby-keyword kw">end</span> 301: <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">n</span>.<span class="ruby-identifier">chr</span>) 302: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000043" class="method-detail"> <a name="M000043"></a> <div class="method-heading"> <a href="#M000043" class="method-signature"> <span class="method-name">handle_comment</span><span class="method-args">(data)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000043-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000043-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 317</span> 317: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_comment</span>(<span class="ruby-identifier">data</span>) 318: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000042" class="method-detail"> <a name="M000042"></a> <div class="method-heading"> <a href="#M000042" class="method-signature"> <span class="method-name">handle_data</span><span class="method-args">(data)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000042-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000042-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 314</span> 314: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">data</span>) 315: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000038" class="method-detail"> <a name="M000038"></a> <div class="method-heading"> <a href="#M000038" class="method-signature"> <span class="method-name">handle_endtag</span><span class="method-args">(tag, method)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000038-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000038-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 284</span> 284: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_endtag</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">method</span>) 285: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">method</span>) 286: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000041" class="method-detail"> <a name="M000041"></a> <div class="method-heading"> <a href="#M000041" class="method-signature"> <span class="method-name">handle_entityref</span><span class="method-args">(name)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000041-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000041-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 304</span> 304: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_entityref</span>(<span class="ruby-identifier">name</span>) 305: <span class="ruby-identifier">table</span> = <span class="ruby-constant">Entitydefs</span> 306: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">table</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>) 307: <span class="ruby-identifier">handle_data</span>(<span class="ruby-identifier">table</span>[<span class="ruby-identifier">name</span>]) 308: <span class="ruby-keyword kw">else</span> 309: <span class="ruby-identifier">unknown_entityref</span>(<span class="ruby-identifier">name</span>) 310: <span class="ruby-keyword kw">return</span> 311: <span class="ruby-keyword kw">end</span> 312: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000044" class="method-detail"> <a name="M000044"></a> <div class="method-heading"> <a href="#M000044" class="method-signature"> <span class="method-name">handle_special</span><span class="method-args">(data)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000044-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000044-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 320</span> 320: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_special</span>(<span class="ruby-identifier">data</span>) 321: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000037" class="method-detail"> <a name="M000037"></a> <div class="method-heading"> <a href="#M000037" class="method-signature"> <span class="method-name">handle_starttag</span><span class="method-args">(tag, method, attrs)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000037-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000037-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 280</span> 280: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_starttag</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">method</span>, <span class="ruby-identifier">attrs</span>) 281: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">method</span>, <span class="ruby-identifier">attrs</span>) 282: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000025" class="method-detail"> <a name="M000025"></a> <div class="method-heading"> <a href="#M000025" class="method-signature"> <span class="method-name">has_context</span><span class="method-args">(gi)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000025-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000025-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 43</span> 43: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_context</span>(<span class="ruby-identifier">gi</span>) 44: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">gi</span> 45: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000031" class="method-detail"> <a name="M000031"></a> <div class="method-heading"> <a href="#M000031" class="method-signature"> <span class="method-name">parse_comment</span><span class="method-args">(i)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000031-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000031-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 160</span> 160: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_comment</span>(<span class="ruby-identifier">i</span>) 161: <span class="ruby-identifier">rawdata</span> = <span class="ruby-ivar">@rawdata</span> 162: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span>, <span class="ruby-value">4</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'<!--'</span> 163: <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">'unexpected call to handle_comment'</span> 164: <span class="ruby-keyword kw">end</span> 165: <span class="ruby-identifier">match</span> = <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Commentclose</span>, <span class="ruby-identifier">i</span>) 166: <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">match</span> 167: <span class="ruby-identifier">matched_length</span> = <span class="ruby-identifier">$&</span>.<span class="ruby-identifier">length</span> 168: <span class="ruby-identifier">j</span> = <span class="ruby-identifier">match</span> 169: <span class="ruby-identifier">handle_comment</span>(<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">4</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">j</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)]) 170: <span class="ruby-identifier">j</span> = <span class="ruby-identifier">match</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">matched_length</span> 171: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">j</span><span class="ruby-operator">-</span><span class="ruby-identifier">i</span> 172: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000033" class="method-detail"> <a name="M000033"></a> <div class="method-heading"> <a href="#M000033" class="method-signature"> <span class="method-name">parse_endtag</span><span class="method-args">(i)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000033-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000033-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 212</span> 212: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_endtag</span>(<span class="ruby-identifier">i</span>) 213: <span class="ruby-identifier">rawdata</span> = <span class="ruby-ivar">@rawdata</span> 214: <span class="ruby-identifier">j</span> = <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Endbracket</span>, <span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>) 215: <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">j</span> 216: <span class="ruby-identifier">tag</span> = (<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">2</span><span class="ruby-operator">..</span><span class="ruby-identifier">j</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">strip</span>).<span class="ruby-identifier">downcase</span> 217: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?></span> <span class="ruby-comment cmt">#</span> 218: <span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> 219: <span class="ruby-keyword kw">end</span> 220: <span class="ruby-identifier">finish_endtag</span>(<span class="ruby-identifier">tag</span>) 221: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">j</span> 222: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000036" class="method-detail"> <a name="M000036"></a> <div class="method-heading"> <a href="#M000036" class="method-signature"> <span class="method-name">parse_special</span><span class="method-args">(i)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000036-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000036-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 271</span> 271: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_special</span>(<span class="ruby-identifier">i</span>) 272: <span class="ruby-identifier">rawdata</span> = <span class="ruby-ivar">@rawdata</span> 273: <span class="ruby-identifier">match</span> = <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Endbracket</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>) 274: <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">match</span> 275: <span class="ruby-identifier">matched_length</span> = <span class="ruby-identifier">$&</span>.<span class="ruby-identifier">length</span> 276: <span class="ruby-identifier">handle_special</span>(<span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">match</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)]) 277: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">match</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">matched_length</span> 278: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000032" class="method-detail"> <a name="M000032"></a> <div class="method-heading"> <a href="#M000032" class="method-signature"> <span class="method-name">parse_starttag</span><span class="method-args">(i)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000032-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000032-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 174</span> 174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_starttag</span>(<span class="ruby-identifier">i</span>) 175: <span class="ruby-identifier">rawdata</span> = <span class="ruby-ivar">@rawdata</span> 176: <span class="ruby-identifier">j</span> = <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Endbracket</span>, <span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>) 177: <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">j</span> 178: <span class="ruby-identifier">attrs</span> = [] 179: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?></span> <span class="ruby-comment cmt">#</span> 180: <span class="ruby-comment cmt"># SGML shorthand: <> == <last open tag seen></span> 181: <span class="ruby-identifier">k</span> = <span class="ruby-identifier">j</span> 182: <span class="ruby-identifier">tag</span> = <span class="ruby-ivar">@lasttag</span> 183: <span class="ruby-keyword kw">else</span> 184: <span class="ruby-identifier">match</span> = <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Tagfind</span>, <span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>) 185: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">match</span> 186: <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">'unexpected call to parse_starttag'</span> 187: <span class="ruby-keyword kw">end</span> 188: <span class="ruby-identifier">k</span> = <span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">$&</span>.<span class="ruby-identifier">length</span>) 189: <span class="ruby-identifier">tag</span> = <span class="ruby-identifier">$&</span>.<span class="ruby-identifier">downcase</span> 190: <span class="ruby-ivar">@lasttag</span> = <span class="ruby-identifier">tag</span> 191: <span class="ruby-keyword kw">end</span> 192: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">k</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">j</span> 193: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">rawdata</span>.<span class="ruby-identifier">index</span>(<span class="ruby-constant">Attrfind</span>, <span class="ruby-identifier">k</span>) 194: <span class="ruby-identifier">matched_length</span> = <span class="ruby-identifier">$&</span>.<span class="ruby-identifier">length</span> 195: <span class="ruby-identifier">attrname</span>, <span class="ruby-identifier">rest</span>, <span class="ruby-identifier">attrvalue</span> = <span class="ruby-identifier">$1</span>, <span class="ruby-identifier">$2</span>, <span class="ruby-identifier">$3</span> 196: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">rest</span> 197: <span class="ruby-identifier">attrvalue</span> = <span class="ruby-value str">''</span> <span class="ruby-comment cmt"># was: = attrname</span> 198: <span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">attrvalue</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?'</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">attrvalue</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?'</span>) <span class="ruby-keyword kw">or</span> 199: (<span class="ruby-identifier">attrvalue</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?"</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">attrvalue</span>[<span class="ruby-value">-1</span>,<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?"</span>) 200: <span class="ruby-identifier">attrvalue</span> = <span class="ruby-identifier">attrvalue</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-2</span>] 201: <span class="ruby-keyword kw">end</span> 202: <span class="ruby-identifier">attrs</span> <span class="ruby-operator"><<</span> [<span class="ruby-identifier">attrname</span>.<span class="ruby-identifier">downcase</span>, <span class="ruby-identifier">attrvalue</span>] 203: <span class="ruby-identifier">k</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">matched_length</span> 204: <span class="ruby-keyword kw">end</span> 205: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rawdata</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?></span> <span class="ruby-comment cmt">#</span> 206: <span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> 207: <span class="ruby-keyword kw">end</span> 208: <span class="ruby-identifier">finish_starttag</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">attrs</span>) 209: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">j</span> 210: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000039" class="method-detail"> <a name="M000039"></a> <div class="method-heading"> <a href="#M000039" class="method-signature"> <span class="method-name">report_unbalanced</span><span class="method-args">(tag)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000039-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000039-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 288</span> 288: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report_unbalanced</span>(<span class="ruby-identifier">tag</span>) 289: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@verbose</span> 290: <span class="ruby-identifier">print</span> <span class="ruby-value str">'*** Unbalanced </'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">tag</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'>'</span>, <span class="ruby-value str">"\n"</span> 291: <span class="ruby-identifier">print</span> <span class="ruby-value str">'*** Stack:'</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">stack</span>, <span class="ruby-value str">"\n"</span> 292: <span class="ruby-keyword kw">end</span> 293: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000024" class="method-detail"> <a name="M000024"></a> <div class="method-heading"> <a href="#M000024" class="method-signature"> <span class="method-name">reset</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000024-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000024-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 35</span> 35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span> 36: <span class="ruby-ivar">@rawdata</span> = <span class="ruby-value str">''</span> 37: <span class="ruby-ivar">@stack</span> = [] 38: <span class="ruby-ivar">@lasttag</span> = <span class="ruby-value str">'???'</span> 39: <span class="ruby-ivar">@nomoretags</span> = <span class="ruby-keyword kw">false</span> 40: <span class="ruby-ivar">@literal</span> = <span class="ruby-keyword kw">false</span> 41: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000027" class="method-detail"> <a name="M000027"></a> <div class="method-heading"> <a href="#M000027" class="method-signature"> <span class="method-name">setliteral</span><span class="method-args">(*args)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000027-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000027-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 52</span> 52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setliteral</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) 53: <span class="ruby-ivar">@literal</span> = <span class="ruby-keyword kw">true</span> 54: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000026" class="method-detail"> <a name="M000026"></a> <div class="method-heading"> <a href="#M000026" class="method-signature"> <span class="method-name">setnomoretags</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000026-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000026-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 47</span> 47: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setnomoretags</span> 48: <span class="ruby-ivar">@nomoretags</span> = <span class="ruby-keyword kw">true</span> 49: <span class="ruby-ivar">@literal</span> = <span class="ruby-keyword kw">true</span> 50: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000047" class="method-detail"> <a name="M000047"></a> <div class="method-heading"> <a href="#M000047" class="method-signature"> <span class="method-name">unknown_charref</span><span class="method-args">(ref)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000047-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000047-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 327</span> 327: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unknown_charref</span>(<span class="ruby-identifier">ref</span>) 328: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000046" class="method-detail"> <a name="M000046"></a> <div class="method-heading"> <a href="#M000046" class="method-signature"> <span class="method-name">unknown_endtag</span><span class="method-args">(tag)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000046-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000046-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 325</span> 325: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unknown_endtag</span>(<span class="ruby-identifier">tag</span>) 326: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000048" class="method-detail"> <a name="M000048"></a> <div class="method-heading"> <a href="#M000048" class="method-signature"> <span class="method-name">unknown_entityref</span><span class="method-args">(ref)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000048-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000048-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 329</span> 329: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unknown_entityref</span>(<span class="ruby-identifier">ref</span>) 330: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000045" class="method-detail"> <a name="M000045"></a> <div class="method-heading"> <a href="#M000045" class="method-signature"> <span class="method-name">unknown_starttag</span><span class="method-args">(tag, attrs)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000045-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000045-source"> <pre> <span class="ruby-comment cmt"># File lib/feedparser/sgml-parser.rb, line 323</span> 323: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unknown_starttag</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">attrs</span>) 324: <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>