📄 parser.html
字号:
<font color="#0000ff"><b>foreach</b></font> <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$superclass</font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">@ISA</font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font> <font color="#ff0000">## extract parameters to pass to superclass import method if present</font><BR> <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$superclass</font>=~<font color="#006400"><b>/^([^=]+)=(.*)+$/</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$superclass</font>,<font color="#1f32ff">@importlist</font><font color="#0000ff"><b>)</b></font>=<font color="#4169e1"><b>split</b></font> <font color="#006400"><b>/=/</b></font>,<font color="#1f32ff">$superclass</font>; <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>else</b></font> <font color="#0000ff"><b>{</b></font> <font color="#1f32ff">@importlist</font>=<font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>; <font color="#0000ff"><b>}</b></font> <font color="#ff0000">## shorthand shortcuts</font><BR> <font color="#1f32ff">$superclass</font>=<font color="#007400">"SVG::Parser::SAX"</font> <font color="#0000ff"><b>if</b></font> <font color="#1f32ff">$superclass</font> <font color="#0000ff"><b>eq</b></font> <font color="#007400">'SAX'</font>; <font color="#1f32ff">$superclass</font>=<font color="#007400">"SVG::Parser::Expat"</font> <font color="#0000ff"><b>if</b></font> <font color="#1f32ff">$superclass</font> <font color="#0000ff"><b>eq</b></font> <font color="#007400">'Expat'</font>; <font color="#ff0000">## test each superclass specifier in turn</font><BR> <font color="#1f32ff">@ISA</font> = <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$superclass</font><font color="#0000ff"><b>)</b></font>,<font color="#0000ff"><b>return</b></font> <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>eval</b></font> <font color="#4169e1"><b>qq</b></font><font color="#007400">[ require <font color="#1f32ff">$superclass</font>; import <font color="#1f32ff">$superclass</font> qw(<font color="#1f32ff">@importlist</font>); #may die 1; ]</font>; <font color="#0000ff"><b>}</b></font> <font color="#4169e1"><b>die</b></font> <font color="#007400">"No XML parser found - one of XML::SAX or XML::Parser must be installed\n"</font>;</pre>}<BR><TABLE BORDER="0" WIDTH="100%" CELLSPACING="0"><TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE2"></A><B>parse</B></TD><TD>description</TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE1">prev</A></TD><TD WIDTH="30">next</TD></TR></TABLE><font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>parse</b></font> {<pre> <font color="#0000ff"><b>my</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>,<font color="#1f32ff">$source</font>,<font color="#1f32ff">%args</font><font color="#0000ff"><b>)</b></font>=<font color="#1f32ff">@_</font>; <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$type</font>=<font color="#1f32ff">$self</font>-><font color="#ff8204">identify</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$source</font><font color="#0000ff"><b>)</b></font> or <font color="#0000ff"><b>return</b></font> <font color="#007400">""</font>; <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$type</font> <font color="#0000ff"><b>eq</b></font> <font color="#1f32ff">$self</font>->ARG_IS_HANDLE<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font> <font color="#ff0000">## both parse()rs will accept a handle</font><BR> <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-><font color="#8000ff"><b>SUPER</b></font>::<font color="#ff8204">parse</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$source</font>,<font color="#1f32ff">%args</font><font color="#0000ff"><b>)</b></font>; <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$type</font> <font color="#0000ff"><b>eq</b></font> <font color="#1f32ff">$self</font>->ARG_IS_STRING<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font> <font color="#ff0000">## the API for strings, however, differs</font><BR> <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>-><font color="#ff8204">isa</font><font color="#0000ff"><b>(</b></font><font color="#007400">"SVG::Parser::SAX"</font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font> <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%parser_options</font>=<font color="#0000ff"><b>(</b></font> Source => <font color="#0000ff"><b>{</b></font>String => <font color="#1f32ff">$source</font><font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>)</b></font>; <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-><font color="#8000ff"><b>SUPER</b></font>::<font color="#ff8204">parse</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">%parser_options</font>,<font color="#1f32ff">%args</font><font color="#0000ff"><b>)</b></font>; <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>else</b></font> <font color="#0000ff"><b>{</b></font> <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-><font color="#8000ff"><b>SUPER</b></font>::<font color="#ff8204">parse</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$source</font>,<font color="#1f32ff">%args</font><font color="#0000ff"><b>)</b></font>; <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>else</b></font> <font color="#0000ff"><b>{</b></font> <font color="#ff0000">## a hash reference only makes sense to the SAX parser</font><BR> <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>-><font color="#ff8204">isa</font><font color="#0000ff"><b>(</b></font><font color="#007400">"SVG::Parser::SAX"</font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font> <font color="#ff0000">## combine extra hash values if present</font><BR> <font color="#1f32ff">$source</font>=<font color="#0000ff"><b>{</b></font> %$source, <font color="#1f32ff">%args</font> <font color="#0000ff"><b>}</b></font>; <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-><font color="#8000ff"><b>SUPER</b></font>::<font color="#ff8204">parse</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$source</font><font color="#0000ff"><b>)</b></font>; <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>else</b></font> <font color="#0000ff"><b>{</b></font> <font color="#ff0000">## the source is unknown</font><BR> <font color="#4169e1"><b>die</b></font> <font color="#007400">"Invalid argument <font color="#1f32ff">$source</font> to SVG::Parser in Expat mode"</font>; <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>}</b></font></pre>}<BR><A NAME="General"></A><HR><H2>General documentation</H2><TABLE BORDER="0" WIDTH="100%" CELLSPACING="0"><TR BGCOLOR="#4492df"><TD><A NAME="_pod_AUTHOR"><B>AUTHOR</A></B></TD><TD><A HREF="#TOP">top</A></TD></TR><TR><TD COLSPAN="2"><pre>Peter Wainwright, <a href="mailto:peter.wainwright@cybrid.net">peter.wainwright@cybrid.net</a><BR></pre></TD></TR><TR BGCOLOR="#4492df"><TD><A NAME="_pod_SEE ALSO"><B>SEE ALSO</A></B></TD><TD><A HREF="#TOP">top</A></TD></TR><TR><TD COLSPAN="2"><pre><a href="#_pod_SVG">SVG</a>, <a href="Parser/Expat.html" target="urlWin"><b>SVG::Parser::Expat</b></a>, <a href="Parser/SAX.html" target="urlWin"><b>SVG::Parser::SAX</b></a>, <a href="Parser.html" target="urlWin"><b>XML::Parser</b></a>, <a href="#_pod_XML::SAX">XML::SAX</a><BR></pre></TD></TR></TABLE></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -