diff options
Diffstat (limited to 'doxygen/xml/cmd2_8py.xml')
-rw-r--r-- | doxygen/xml/cmd2_8py.xml | 1621 |
1 files changed, 0 insertions, 1621 deletions
diff --git a/doxygen/xml/cmd2_8py.xml b/doxygen/xml/cmd2_8py.xml deleted file mode 100644 index a3809ce..0000000 --- a/doxygen/xml/cmd2_8py.xml +++ /dev/null @@ -1,1621 +0,0 @@ -<?xml version='1.0' encoding='UTF-8' standalone='no'?> -<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.7.5.1"> - <compounddef id="cmd2_8py" kind="file"> - <compoundname>cmd2.py</compoundname> - <innerclass refid="classcmd2_1_1Borg" prot="public">cmd2::Borg</innerclass> - <innerclass refid="classcmd2_1_1Cmd" prot="public">cmd2::Cmd</innerclass> - <innerclass refid="classcmd2_1_1Cmd2TestCase" prot="public">cmd2::Cmd2TestCase</innerclass> - <innerclass refid="classcmd2_1_1EmbeddedConsoleExit" prot="public">cmd2::EmbeddedConsoleExit</innerclass> - <innerclass refid="classcmd2_1_1EmptyStatement" prot="public">cmd2::EmptyStatement</innerclass> - <innerclass refid="classcmd2_1_1History" prot="public">cmd2::History</innerclass> - <innerclass refid="classcmd2_1_1HistoryItem" prot="public">cmd2::HistoryItem</innerclass> - <innerclass refid="classcmd2_1_1NotSettableError" prot="public">cmd2::NotSettableError</innerclass> - <innerclass refid="classcmd2_1_1OptionParser" prot="public">cmd2::OptionParser</innerclass> - <innerclass refid="classcmd2_1_1OutputTrap" prot="public">cmd2::OutputTrap</innerclass> - <innerclass refid="classcmd2_1_1ParsedString" prot="public">cmd2::ParsedString</innerclass> - <innerclass refid="classcmd2_1_1PasteBufferError" prot="public">cmd2::PasteBufferError</innerclass> - <innerclass refid="classcmd2_1_1Statekeeper" prot="public">cmd2::Statekeeper</innerclass> - <innerclass refid="classcmd2_1_1StubbornDict" prot="public">cmd2::StubbornDict</innerclass> - <innernamespace refid="namespacecmd2">cmd2</innernamespace> - <briefdescription> - </briefdescription> - <detaileddescription> - </detaileddescription> - <programlisting> -<codeline lineno="1" refid="namespacecmd2" refkind="compound"><highlight class="stringliteral">"""Variant<sp/>on<sp/>standard<sp/>library's<sp/>cmd<sp/>with<sp/>extra<sp/>features.</highlight></codeline> -<codeline lineno="2"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="3"><highlight class="stringliteral">To<sp/>use,<sp/>simply<sp/>import<sp/>cmd2.Cmd<sp/>instead<sp/>of<sp/>cmd.Cmd;<sp/>use<sp/>precisely<sp/>as<sp/>though<sp/>you</highlight></codeline> -<codeline lineno="4"><highlight class="stringliteral">were<sp/>using<sp/>the<sp/>standard<sp/>library's<sp/>cmd,<sp/>while<sp/>enjoying<sp/>the<sp/>extra<sp/>features.</highlight></codeline> -<codeline lineno="5"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="6"><highlight class="stringliteral">Searchable<sp/>command<sp/>history<sp/>(commands:<sp/>"hi",<sp/>"li",<sp/>"run")</highlight></codeline> -<codeline lineno="7"><highlight class="stringliteral">Load<sp/>commands<sp/>from<sp/>file,<sp/>save<sp/>to<sp/>file,<sp/>edit<sp/>commands<sp/>in<sp/>file</highlight></codeline> -<codeline lineno="8"><highlight class="stringliteral">Multi-line<sp/>commands</highlight></codeline> -<codeline lineno="9"><highlight class="stringliteral">Case-insensitive<sp/>commands</highlight></codeline> -<codeline lineno="10"><highlight class="stringliteral">Special-character<sp/>shortcut<sp/>commands<sp/>(beyond<sp/>cmd's<sp/>"@"<sp/>and<sp/>"!")</highlight></codeline> -<codeline lineno="11"><highlight class="stringliteral">Settable<sp/>environment<sp/>parameters</highlight></codeline> -<codeline lineno="12"><highlight class="stringliteral">Optional<sp/>_onchange_{paramname}<sp/>called<sp/>when<sp/>environment<sp/>parameter<sp/>changes</highlight></codeline> -<codeline lineno="13"><highlight class="stringliteral">Parsing<sp/>commands<sp/>with<sp/>`optparse`<sp/>options<sp/>(flags)</highlight></codeline> -<codeline lineno="14"><highlight class="stringliteral">Redirection<sp/>to<sp/>file<sp/>with<sp/>>,<sp/>>>;<sp/>input<sp/>from<sp/>file<sp/>with<sp/><</highlight></codeline> -<codeline lineno="15"><highlight class="stringliteral">Easy<sp/>transcript-based<sp/>testing<sp/>of<sp/>applications<sp/>(see<sp/>example/example.py)</highlight></codeline> -<codeline lineno="16"><highlight class="stringliteral">Bash-style<sp/>``select``<sp/>available</highlight></codeline> -<codeline lineno="17"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="18"><highlight class="stringliteral">Note<sp/>that<sp/>redirection<sp/>with<sp/>><sp/>and<sp/>|<sp/>will<sp/>only<sp/>work<sp/>if<sp/>`self.stdout.write()`</highlight></codeline> -<codeline lineno="19"><highlight class="stringliteral">is<sp/>used<sp/>in<sp/>place<sp/>of<sp/>`print`.<sp/><sp/>The<sp/>standard<sp/>library's<sp/>`cmd`<sp/>module<sp/>is<sp/></highlight></codeline> -<codeline lineno="20"><highlight class="stringliteral">written<sp/>to<sp/>use<sp/>`self.stdout.write()`,<sp/></highlight></codeline> -<codeline lineno="21"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="22"><highlight class="stringliteral">-<sp/>Catherine<sp/>Devlin,<sp/>Jan<sp/>03<sp/>2008<sp/>-<sp/>catherinedevlin.blogspot.com</highlight></codeline> -<codeline lineno="23"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="24"><highlight class="stringliteral">mercurial<sp/>repository<sp/>at<sp/>http://www.assembla.com/wiki/show/python-cmd2</highlight></codeline> -<codeline lineno="25"><highlight class="stringliteral">"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="26"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>cmd</highlight></codeline> -<codeline lineno="27"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>re</highlight></codeline> -<codeline lineno="28"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>os</highlight></codeline> -<codeline lineno="29"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>sys</highlight></codeline> -<codeline lineno="30"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>optparse</highlight></codeline> -<codeline lineno="31"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>subprocess</highlight></codeline> -<codeline lineno="32"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>tempfile</highlight></codeline> -<codeline lineno="33"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>doctest</highlight></codeline> -<codeline lineno="34"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>unittest</highlight></codeline> -<codeline lineno="35"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>datetime</highlight></codeline> -<codeline lineno="36"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>urllib</highlight></codeline> -<codeline lineno="37"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>glob</highlight></codeline> -<codeline lineno="38"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>traceback</highlight></codeline> -<codeline lineno="39"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>platform</highlight></codeline> -<codeline lineno="40"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>copy</highlight></codeline> -<codeline lineno="41"><highlight class="normal"></highlight><highlight class="keyword">from</highlight><highlight class="normal"><sp/>code<sp/></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>InteractiveConsole,<sp/>InteractiveInterpreter</highlight></codeline> -<codeline lineno="42"><highlight class="normal"></highlight><highlight class="keyword">from</highlight><highlight class="normal"><sp/>optparse<sp/></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>make_option</highlight></codeline> -<codeline lineno="43"><highlight class="normal"></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>pyparsing</highlight></codeline> -<codeline lineno="44"><highlight class="normal"></highlight></codeline> -<codeline lineno="45" refid="namespacecmd2_1a05ce8a1645f64208f969036f8621ddd2" refkind="member"><highlight class="normal">__version__<sp/>=<sp/></highlight><highlight class="stringliteral">'0.6.4'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="46"><highlight class="normal"></highlight></codeline> -<codeline lineno="47"><highlight class="normal"></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>sys.version_info[0]<sp/>==<sp/>2:</highlight></codeline> -<codeline lineno="48"><highlight class="normal"><sp/><sp/><sp/><sp/>pyparsing.ParserElement.enablePackrat()</highlight></codeline> -<codeline lineno="49"><highlight class="normal"></highlight></codeline> -<codeline lineno="50"><highlight class="normal"></highlight><highlight class="stringliteral">"""</highlight></codeline> -<codeline lineno="51"><highlight class="stringliteral">Packrat<sp/>is<sp/>causing<sp/>Python3<sp/>errors<sp/>that<sp/>I<sp/>don't<sp/>understand.</highlight></codeline> -<codeline lineno="52"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="53"><highlight class="stringliteral">><sp/>/usr/local/Cellar/python3/3.2/lib/python3.2/site-packages/pyparsing-1.5.6-py3.2.egg/pyparsing.py(999)scanString()</highlight></codeline> -<codeline lineno="54"><highlight class="stringliteral">-><sp/>nextLoc,tokens<sp/>=<sp/>parseFn(<sp/>instring,<sp/>preloc,<sp/>callPreParse=False<sp/>)</highlight></codeline> -<codeline lineno="55"><highlight class="stringliteral">(Pdb)<sp/>n</highlight></codeline> -<codeline lineno="56"><highlight class="stringliteral">NameError:<sp/>global<sp/>name<sp/>'exc'<sp/>is<sp/>not<sp/>defined</highlight></codeline> -<codeline lineno="57"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="58"><highlight class="stringliteral">(Pdb)<sp/>parseFn</highlight></codeline> -<codeline lineno="59"><highlight class="stringliteral"><bound<sp/>method<sp/>Or._parseCache<sp/>of<sp/>{Python<sp/>style<sp/>comment<sp/>^<sp/>C<sp/>style<sp/>comment}></highlight></codeline> -<codeline lineno="60"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="61"><highlight class="stringliteral">Bug<sp/>report<sp/>filed:<sp/>https://sourceforge.net/tracker/?func=detail&atid=617311&aid=3381439&group_id=97203</highlight></codeline> -<codeline lineno="62"><highlight class="stringliteral">"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="63"><highlight class="normal"></highlight></codeline> -<codeline lineno="64" refid="classcmd2_1_1OptionParser" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1OptionParser" kindref="compound">OptionParser</ref>(optparse.OptionParser):</highlight></codeline> -<codeline lineno="65" refid="classcmd2_1_1OptionParser_1ad82c8fb7559af2e4b1663e0762a80c89" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1OptionParser_1ad82c8fb7559af2e4b1663e0762a80c89" kindref="member">exit</ref>(self,<sp/>status=0,<sp/>msg=None):</highlight></codeline> -<codeline lineno="66"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.values._exit<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="67"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>msg:</highlight></codeline> -<codeline lineno="68"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">print</highlight><highlight class="normal"><sp/>(msg)</highlight></codeline> -<codeline lineno="69"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="70" refid="classcmd2_1_1OptionParser_1a6f2d24051471268be245221149bc9c6a" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1OptionParser_1a6f2d24051471268be245221149bc9c6a" kindref="member">print_help</ref>(self,<sp/>*args,<sp/>**kwargs):</highlight></codeline> -<codeline lineno="71"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="72"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">print</highlight><highlight class="normal"><sp/>(self._func.__doc__)</highlight></codeline> -<codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>AttributeError:</highlight></codeline> -<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>optparse.OptionParser.print_help(self,<sp/>*args,<sp/>**kwargs)</highlight></codeline> -<codeline lineno="76"><highlight class="normal"></highlight></codeline> -<codeline lineno="77" refid="classcmd2_1_1OptionParser_1ada4f39b453e033ae4356709f8ee9f340" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1OptionParser_1ada4f39b453e033ae4356709f8ee9f340" kindref="member">error</ref>(self,<sp/>msg):</highlight></codeline> -<codeline lineno="78"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""error(msg<sp/>:<sp/>string)</highlight></codeline> -<codeline lineno="79"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="80"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Print<sp/>a<sp/>usage<sp/>message<sp/>incorporating<sp/>'msg'<sp/>to<sp/>stderr<sp/>and<sp/>exit.</highlight></codeline> -<codeline lineno="81"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>If<sp/>you<sp/>override<sp/>this<sp/>in<sp/>a<sp/>subclass,<sp/>it<sp/>should<sp/>not<sp/>return<sp/>--<sp/>it</highlight></codeline> -<codeline lineno="82"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>should<sp/>either<sp/>exit<sp/>or<sp/>raise<sp/>an<sp/>exception.</highlight></codeline> -<codeline lineno="83"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="84"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>optparse.OptParseError(msg)</highlight></codeline> -<codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="86" refid="namespacecmd2_1a11d252497d81548f19771cddf0ca68fb" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a11d252497d81548f19771cddf0ca68fb" kindref="member">remaining_args</ref>(oldArgs,<sp/>newArgList):</highlight></codeline> -<codeline lineno="87"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''</highlight></codeline> -<codeline lineno="88"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>Preserves<sp/>the<sp/>spacing<sp/>originally<sp/>in<sp/>the<sp/>argument<sp/>after</highlight></codeline> -<codeline lineno="89"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>the<sp/>removal<sp/>of<sp/>options.</highlight></codeline> -<codeline lineno="90"><highlight class="stringliteral"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="91"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>remaining_args('-f<sp/>bar<sp/><sp/><sp/>bar<sp/><sp/><sp/>cow',<sp/>['bar',<sp/>'cow'])</highlight></codeline> -<codeline lineno="92"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>'bar<sp/><sp/><sp/>cow'</highlight></codeline> -<codeline lineno="93"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="94"><highlight class="normal"><sp/><sp/><sp/><sp/>pattern<sp/>=<sp/></highlight><highlight class="stringliteral">'\s+'</highlight><highlight class="normal">.join(re.escape(a)<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>a<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>newArgList)<sp/>+<sp/></highlight><highlight class="stringliteral">'\s*$'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="95"><highlight class="normal"><sp/><sp/><sp/><sp/>matchObj<sp/>=<sp/>re.search(pattern,<sp/>oldArgs)</highlight></codeline> -<codeline lineno="96"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>oldArgs[matchObj.start():]</highlight></codeline> -<codeline lineno="97"><highlight class="normal"><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="98" refid="namespacecmd2_1a93001003cf51a72d1d6adaf5e3e22366" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a93001003cf51a72d1d6adaf5e3e22366" kindref="member">_attr_get_</ref>(obj,<sp/>attr):</highlight></codeline> -<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Returns<sp/>an<sp/>attribute's<sp/>value,<sp/>or<sp/>None<sp/>(no<sp/>error)<sp/>if<sp/>undefined.</highlight></codeline> -<codeline lineno="100"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Analagous<sp/>to<sp/>.get()<sp/>for<sp/>dictionaries.<sp/><sp/>Useful<sp/>when<sp/>checking<sp/>for</highlight></codeline> -<codeline lineno="101"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value<sp/>of<sp/>options<sp/>that<sp/>may<sp/>not<sp/>have<sp/>been<sp/>defined<sp/>on<sp/>a<sp/>given</highlight></codeline> -<codeline lineno="102"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>method.'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="103"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="104"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>getattr(obj,<sp/>attr)</highlight></codeline> -<codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>AttributeError:</highlight></codeline> -<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="107"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="108"><highlight class="normal">optparse.Values.get<sp/>=<sp/>_attr_get_</highlight></codeline> -<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="110" refid="namespacecmd2_1afd483925db6ff208624b8e5c0ae09271" refkind="member"><highlight class="normal">options_defined<sp/>=<sp/>[]<sp/></highlight><highlight class="comment">#<sp/>used<sp/>to<sp/>distinguish<sp/>--options<sp/>from<sp/>SQL-style<sp/>--comments</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="111"><highlight class="normal"></highlight></codeline> -<codeline lineno="112" refid="namespacecmd2_1a863be2c5e3b9fdec03710fd550801c22" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a863be2c5e3b9fdec03710fd550801c22" kindref="member">options</ref>(option_list,<sp/>arg_desc="arg"):</highlight></codeline> -<codeline lineno="113"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Used<sp/>as<sp/>a<sp/>decorator<sp/>and<sp/>passed<sp/>a<sp/>list<sp/>of<sp/>optparse-style<sp/>options,</highlight></codeline> -<codeline lineno="114"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>alters<sp/>a<sp/>cmd2<sp/>method<sp/>to<sp/>populate<sp/>its<sp/>``opts``<sp/>argument<sp/>from<sp/>its</highlight></codeline> -<codeline lineno="115"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>raw<sp/>text<sp/>argument.</highlight></codeline> -<codeline lineno="116"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="117"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Example:<sp/>transform</highlight></codeline> -<codeline lineno="118"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>def<sp/>do_something(self,<sp/>arg):</highlight></codeline> -<codeline lineno="119"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="120"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>into</highlight></codeline> -<codeline lineno="121"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>@options([make_option('-q',<sp/>'--quick',<sp/>action="store_true",</highlight></codeline> -<codeline lineno="122"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>help="Makes<sp/>things<sp/>fast")],</highlight></codeline> -<codeline lineno="123"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>"source<sp/>dest")</highlight></codeline> -<codeline lineno="124"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>def<sp/>do_something(self,<sp/>arg,<sp/>opts):</highlight></codeline> -<codeline lineno="125"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>opts.quick:</highlight></codeline> -<codeline lineno="126"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.fast_button<sp/>=<sp/>True</highlight></codeline> -<codeline lineno="127"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="128"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>isinstance(option_list,<sp/>list):</highlight></codeline> -<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>option_list<sp/>=<sp/>[option_list]</highlight></codeline> -<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>opt<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>option_list:</highlight></codeline> -<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>options_defined.append(pyparsing.Literal(opt.get_opt_string()))</highlight></codeline> -<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal">option_setup(func):</highlight></codeline> -<codeline lineno="133"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>optionParser<sp/>=<sp/><ref refid="classcmd2_1_1OptionParser" kindref="compound">OptionParser</ref>()</highlight></codeline> -<codeline lineno="134"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>opt<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>option_list:</highlight></codeline> -<codeline lineno="135"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>optionParser.add_option(opt)</highlight></codeline> -<codeline lineno="136"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>optionParser.set_usage(</highlight><highlight class="stringliteral">"%s<sp/>[options]<sp/>%s"</highlight><highlight class="normal"><sp/>%<sp/>(func.__name__[3:],<sp/>arg_desc))</highlight></codeline> -<codeline lineno="137"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>optionParser._func<sp/>=<sp/>func</highlight></codeline> -<codeline lineno="138"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal">new_func(instance,<sp/>arg):</highlight></codeline> -<codeline lineno="139"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="140"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>opts,<sp/>newArgList<sp/>=<sp/>optionParser.parse_args(arg.split())</highlight></codeline> -<codeline lineno="141"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Must<sp/>find<sp/>the<sp/>remaining<sp/>args<sp/>in<sp/>the<sp/>original<sp/>argument<sp/>list,<sp/>but<sp/></highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>mustn't<sp/>include<sp/>the<sp/>command<sp/>itself</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="143"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#if<sp/>hasattr(arg,<sp/>'parsed')<sp/>and<sp/>newArgList[0]<sp/>==<sp/>arg.parsed.command:</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="144"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/><sp/><sp/><sp/>newArgList<sp/>=<sp/>newArgList[1:]</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="145"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>newArgs<sp/>=<sp/><ref refid="namespacecmd2_1a11d252497d81548f19771cddf0ca68fb" kindref="member">remaining_args</ref>(arg,<sp/>newArgList)</highlight></codeline> -<codeline lineno="146"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>isinstance(arg,<sp/>ParsedString):</highlight></codeline> -<codeline lineno="147"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>=<sp/>arg.with_args_replaced(newArgs)</highlight></codeline> -<codeline lineno="148"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="149"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>=<sp/>newArgs</highlight></codeline> -<codeline lineno="150"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>optparse.OptParseError,<sp/>e:</highlight></codeline> -<codeline lineno="151"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">print</highlight><highlight class="normal"><sp/>(e)</highlight></codeline> -<codeline lineno="152"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>optionParser.print_help()</highlight></codeline> -<codeline lineno="153"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="154"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>hasattr(opts,<sp/></highlight><highlight class="stringliteral">'_exit'</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="156"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>func(instance,<sp/>arg,<sp/>opts)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="157"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="158"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_func.__doc__<sp/>=<sp/></highlight><highlight class="stringliteral">'%s\n%s'</highlight><highlight class="normal"><sp/>%<sp/>(func.__doc__,<sp/>optionParser.format_help())</highlight></codeline> -<codeline lineno="159"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>new_func</highlight></codeline> -<codeline lineno="160"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>option_setup</highlight></codeline> -<codeline lineno="161"><highlight class="normal"></highlight></codeline> -<codeline lineno="162" refid="classcmd2_1_1PasteBufferError" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1PasteBufferError" kindref="compound">PasteBufferError</ref>(EnvironmentError):</highlight></codeline> -<codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>sys.platform[:3]<sp/>==<sp/></highlight><highlight class="stringliteral">'win'</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="164" refid="classcmd2_1_1PasteBufferError_1adaa363483c6d5a54f13713233ba398b2" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>errmsg<sp/>=<sp/></highlight><highlight class="stringliteral">"""Redirecting<sp/>to<sp/>or<sp/>from<sp/>paste<sp/>buffer<sp/>requires<sp/>pywin32</highlight></codeline> -<codeline lineno="165"><highlight class="stringliteral">to<sp/>be<sp/>installed<sp/>on<sp/>operating<sp/>system.</highlight></codeline> -<codeline lineno="166"><highlight class="stringliteral">Download<sp/>from<sp/>http://sourceforge.net/projects/pywin32/"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">elif</highlight><highlight class="normal"><sp/>sys.platform[:3]<sp/>==<sp/></highlight><highlight class="stringliteral">'dar'</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Use<sp/>built<sp/>in<sp/>pbcopy<sp/>on<sp/>Mac<sp/>OSX</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="171"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>errmsg<sp/>=<sp/></highlight><highlight class="stringliteral">"""Redirecting<sp/>to<sp/>or<sp/>from<sp/>paste<sp/>buffer<sp/>requires<sp/>xclip<sp/></highlight></codeline> -<codeline lineno="172"><highlight class="stringliteral">to<sp/>be<sp/>installed<sp/>on<sp/>operating<sp/>system.</highlight></codeline> -<codeline lineno="173"><highlight class="stringliteral">On<sp/>Debian/Ubuntu,<sp/>'sudo<sp/>apt-get<sp/>install<sp/>xclip'<sp/>will<sp/>install<sp/>it."""</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="174" refid="classcmd2_1_1PasteBufferError_1ae1cd41756d1ae940201fe2cb0d0f821e" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1PasteBufferError_1ae1cd41756d1ae940201fe2cb0d0f821e" kindref="member">__init__</ref>(self):</highlight></codeline> -<codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Exception.__init__(self,<sp/>self.<ref refid="classcmd2_1_1PasteBufferError_1adaa363483c6d5a54f13713233ba398b2" kindref="member">errmsg</ref>)</highlight></codeline> -<codeline lineno="176"><highlight class="normal"></highlight></codeline> -<codeline lineno="177" refid="namespacecmd2_1abb901de4eb2987589c68b4d895acd8c3" refkind="member"><highlight class="normal">pastebufferr<sp/>=<sp/></highlight><highlight class="stringliteral">"""Redirecting<sp/>to<sp/>or<sp/>from<sp/>paste<sp/>buffer<sp/>requires<sp/>%s</highlight></codeline> -<codeline lineno="178"><highlight class="stringliteral">to<sp/>be<sp/>installed<sp/>on<sp/>operating<sp/>system.</highlight></codeline> -<codeline lineno="179"><highlight class="stringliteral">%s"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="180"><highlight class="normal"></highlight></codeline> -<codeline lineno="181"><highlight class="normal"></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>subprocess.mswindows:</highlight></codeline> -<codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="183"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>win32clipboard</highlight></codeline> -<codeline lineno="184" refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" kindref="member">get_paste_buffer</ref>():</highlight></codeline> -<codeline lineno="185"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>win32clipboard.OpenClipboard(0)</highlight></codeline> -<codeline lineno="186"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="187"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>win32clipboard.GetClipboardData()</highlight></codeline> -<codeline lineno="188"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>TypeError:</highlight></codeline> -<codeline lineno="189"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">#non-text</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="190"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>win32clipboard.CloseClipboard()</highlight></codeline> -<codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="192" refid="namespacecmd2_1a514a20ceb8ab40dd89d2df2dd5ff87a0" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a514a20ceb8ab40dd89d2df2dd5ff87a0" kindref="member">write_to_paste_buffer</ref>(txt):</highlight></codeline> -<codeline lineno="193"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>win32clipboard.OpenClipboard(0)</highlight></codeline> -<codeline lineno="194"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>win32clipboard.EmptyClipboard()</highlight></codeline> -<codeline lineno="195"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>win32clipboard.SetClipboardText(txt)</highlight></codeline> -<codeline lineno="196"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>win32clipboard.CloseClipboard()<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>ImportError:</highlight></codeline> -<codeline lineno="198" refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" kindref="member">get_paste_buffer</ref>(*args):</highlight></codeline> -<codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>OSError,<sp/>pastebufferr<sp/>%<sp/>(</highlight><highlight class="stringliteral">'pywin32'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'Download<sp/>from<sp/>http://sourceforge.net/projects/pywin32/'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="200" refid="namespacecmd2_1a514a20ceb8ab40dd89d2df2dd5ff87a0" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>write_to_paste_buffer<sp/>=<sp/>get_paste_buffer</highlight></codeline> -<codeline lineno="201"><highlight class="normal"></highlight><highlight class="keywordflow">elif</highlight><highlight class="normal"><sp/>sys.platform<sp/>==<sp/></highlight><highlight class="stringliteral">'darwin'</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="202" refid="namespacecmd2_1a3f2a6eb75c58ca830028f18cf2851958" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>can_clip<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="203"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="204"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>test<sp/>for<sp/>pbcopy<sp/>-<sp/>AFAIK,<sp/>should<sp/>always<sp/>be<sp/>installed<sp/>on<sp/>MacOS</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="205"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>subprocess.check_call(</highlight><highlight class="stringliteral">'pbcopy<sp/>-help'</highlight><highlight class="normal">,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE,<sp/>stderr=subprocess.PIPE)</highlight></codeline> -<codeline lineno="206"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>can_clip<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="207"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>(subprocess.CalledProcessError,<sp/>OSError,<sp/>IOError):</highlight></codeline> -<codeline lineno="208"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="209"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>can_clip:</highlight></codeline> -<codeline lineno="210"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" kindref="member">get_paste_buffer</ref>():</highlight></codeline> -<codeline lineno="211"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pbcopyproc<sp/>=<sp/>subprocess.Popen(</highlight><highlight class="stringliteral">'pbcopy<sp/>-help'</highlight><highlight class="normal">,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE,<sp/>stderr=subprocess.PIPE)</highlight></codeline> -<codeline lineno="212"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>pbcopyproc.stdout.read()</highlight></codeline> -<codeline lineno="213"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a514a20ceb8ab40dd89d2df2dd5ff87a0" kindref="member">write_to_paste_buffer</ref>(txt):</highlight></codeline> -<codeline lineno="214"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pbcopyproc<sp/>=<sp/>subprocess.Popen(</highlight><highlight class="stringliteral">'pbcopy'</highlight><highlight class="normal">,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE,<sp/>stderr=subprocess.PIPE)</highlight></codeline> -<codeline lineno="215"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pbcopyproc.communicate(txt.encode())</highlight></codeline> -<codeline lineno="216"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="217"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" kindref="member">get_paste_buffer</ref>(*args):</highlight></codeline> -<codeline lineno="218"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>OSError,<sp/>pastebufferr<sp/>%<sp/>(</highlight><highlight class="stringliteral">'pbcopy'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'On<sp/>MacOS<sp/>X<sp/>-<sp/>error<sp/>should<sp/>not<sp/>occur<sp/>-<sp/>part<sp/>of<sp/>the<sp/>default<sp/>installation'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="219"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>write_to_paste_buffer<sp/>=<sp/>get_paste_buffer</highlight></codeline> -<codeline lineno="220"><highlight class="normal"></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="221"><highlight class="normal"><sp/><sp/><sp/><sp/>can_clip<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="222"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="223"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>subprocess.check_call(</highlight><highlight class="stringliteral">'xclip<sp/>-o<sp/>-sel<sp/>clip'</highlight><highlight class="normal">,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE,<sp/>stderr=subprocess.PIPE)</highlight></codeline> -<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>can_clip<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>AttributeError:<sp/><sp/></highlight><highlight class="comment">#<sp/>check_call<sp/>not<sp/>defined,<sp/>Python<sp/><<sp/>2.5</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="226"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="227" refid="namespacecmd2_1ab810fc3f05607c1e4311225b04591244" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>teststring<sp/>=<sp/></highlight><highlight class="stringliteral">'Testing<sp/>for<sp/>presence<sp/>of<sp/>xclip.'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="228" refid="namespacecmd2_1ae76e61704924b26b7ddb97fce8c384ef" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc<sp/>=<sp/>subprocess.Popen(</highlight><highlight class="stringliteral">'xclip<sp/>-sel<sp/>clip'</highlight><highlight class="normal">,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE)</highlight></codeline> -<codeline lineno="229"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc.stdin.write(teststring)</highlight></codeline> -<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc.stdin.close()</highlight></codeline> -<codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc<sp/>=<sp/>subprocess.Popen(</highlight><highlight class="stringliteral">'xclip<sp/>-o<sp/>-sel<sp/>clip'</highlight><highlight class="normal">,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>xclipproc.stdout.read()<sp/>==<sp/>teststring:</highlight></codeline> -<codeline lineno="233"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>can_clip<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>Exception:<sp/></highlight><highlight class="comment">#<sp/>hate<sp/>a<sp/>bare<sp/>Exception<sp/>call,<sp/>but<sp/>exception<sp/>classes<sp/>vary<sp/>too<sp/>much<sp/>b/t<sp/>stdlib<sp/>versions</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="236"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>Exception:</highlight></codeline> -<codeline lineno="237"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"><sp/></highlight><highlight class="comment">#<sp/>something<sp/>went<sp/>wrong<sp/>with<sp/>xclip<sp/>and<sp/>we<sp/>cannot<sp/>use<sp/>it</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="238"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>can_clip:<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" kindref="member">get_paste_buffer</ref>():</highlight></codeline> -<codeline lineno="240"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc<sp/>=<sp/>subprocess.Popen(</highlight><highlight class="stringliteral">'xclip<sp/>-o<sp/>-sel<sp/>clip'</highlight><highlight class="normal">,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE)</highlight></codeline> -<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>xclipproc.stdout.read()</highlight></codeline> -<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a514a20ceb8ab40dd89d2df2dd5ff87a0" kindref="member">write_to_paste_buffer</ref>(txt):</highlight></codeline> -<codeline lineno="243"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc<sp/>=<sp/>subprocess.Popen(</highlight><highlight class="stringliteral">'xclip<sp/>-sel<sp/>clip'</highlight><highlight class="normal">,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE)</highlight></codeline> -<codeline lineno="244"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc.stdin.write(txt.encode())</highlight></codeline> -<codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc.stdin.close()</highlight></codeline> -<codeline lineno="246"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>but<sp/>we<sp/>want<sp/>it<sp/>in<sp/>both<sp/>the<sp/>"primary"<sp/>and<sp/>"mouse"<sp/>clipboards</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc<sp/>=<sp/>subprocess.Popen(</highlight><highlight class="stringliteral">'xclip'</highlight><highlight class="normal">,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE)</highlight></codeline> -<codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc.stdin.write(txt.encode())</highlight></codeline> -<codeline lineno="249"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>xclipproc.stdin.close()</highlight></codeline> -<codeline lineno="250"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="251"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" kindref="member">get_paste_buffer</ref>(*args):</highlight></codeline> -<codeline lineno="252"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>OSError,<sp/>pastebufferr<sp/>%<sp/>(</highlight><highlight class="stringliteral">'xclip'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'On<sp/>Debian/Ubuntu,<sp/>install<sp/>with<sp/>"sudo<sp/>apt-get<sp/>install<sp/>xclip"'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="253"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>write_to_paste_buffer<sp/>=<sp/>get_paste_buffer</highlight></codeline> -<codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="255"><highlight class="normal">pyparsing.ParserElement.setDefaultWhitespaceChars(</highlight><highlight class="stringliteral">'<sp/>\t'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="256"><highlight class="normal"></highlight></codeline> -<codeline lineno="257" refid="classcmd2_1_1ParsedString" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1ParsedString" kindref="compound">ParsedString</ref>(str):</highlight></codeline> -<codeline lineno="258" refid="classcmd2_1_1ParsedString_1a6ac3a7f2f37126a25774517b3eb7cace" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1ParsedString_1a6ac3a7f2f37126a25774517b3eb7cace" kindref="member">full_parsed_statement</ref>(self):</highlight></codeline> -<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new<sp/>=<sp/><ref refid="classcmd2_1_1ParsedString" kindref="compound">ParsedString</ref>(</highlight><highlight class="stringliteral">'%s<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>(self.parsed.command,<sp/>self.parsed.args))</highlight></codeline> -<codeline lineno="260"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new.parsed<sp/>=<sp/>self.parsed</highlight></codeline> -<codeline lineno="261"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new.parser<sp/>=<sp/>self.parser</highlight></codeline> -<codeline lineno="262"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>new<sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="263" refid="classcmd2_1_1ParsedString_1afe56ec060a51b268e266f7c0d1fb7328" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1ParsedString_1afe56ec060a51b268e266f7c0d1fb7328" kindref="member">with_args_replaced</ref>(self,<sp/>newargs):</highlight></codeline> -<codeline lineno="264"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new<sp/>=<sp/><ref refid="classcmd2_1_1ParsedString" kindref="compound">ParsedString</ref>(newargs)</highlight></codeline> -<codeline lineno="265"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new.parsed<sp/>=<sp/>self.parsed</highlight></codeline> -<codeline lineno="266"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new.parser<sp/>=<sp/>self.parser</highlight></codeline> -<codeline lineno="267"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new.parsed[</highlight><highlight class="stringliteral">'args'</highlight><highlight class="normal">]<sp/>=<sp/>newargs</highlight></codeline> -<codeline lineno="268"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new.parsed.statement[</highlight><highlight class="stringliteral">'args'</highlight><highlight class="normal">]<sp/>=<sp/>newargs</highlight></codeline> -<codeline lineno="269"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>new</highlight></codeline> -<codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="271" refid="classcmd2_1_1StubbornDict" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1StubbornDict" kindref="compound">StubbornDict</ref>(dict):</highlight></codeline> -<codeline lineno="272"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Dictionary<sp/>that<sp/>tolerates<sp/>many<sp/>input<sp/>formats.</highlight></codeline> -<codeline lineno="273"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>Create<sp/>it<sp/>with<sp/>stubbornDict(arg)<sp/>factory<sp/>function.</highlight></codeline> -<codeline lineno="274"><highlight class="stringliteral"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="275"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>d<sp/>=<sp/>StubbornDict(large='gross',<sp/>small='klein')</highlight></codeline> -<codeline lineno="276"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>sorted(d.items())</highlight></codeline> -<codeline lineno="277"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>[('large',<sp/>'gross'),<sp/>('small',<sp/>'klein')]</highlight></codeline> -<codeline lineno="278"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>d.append(['plain',<sp/>'<sp/><sp/>plaid'])</highlight></codeline> -<codeline lineno="279"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>sorted(d.items())</highlight></codeline> -<codeline lineno="280"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>[('large',<sp/>'gross'),<sp/>('plaid',<sp/>''),<sp/>('plain',<sp/>''),<sp/>('small',<sp/>'klein')]</highlight></codeline> -<codeline lineno="281"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>d<sp/>+=<sp/>'<sp/><sp/><sp/>girl<sp/>Frauelein,<sp/>Maedchen\\n\\n<sp/>shoe<sp/>schuh'</highlight></codeline> -<codeline lineno="282"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>sorted(d.items())</highlight></codeline> -<codeline lineno="283"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>[('girl',<sp/>'Frauelein,<sp/>Maedchen'),<sp/>('large',<sp/>'gross'),<sp/>('plaid',<sp/>''),<sp/>('plain',<sp/>''),<sp/>('shoe',<sp/>'schuh'),<sp/>('small',<sp/>'klein')]</highlight></codeline> -<codeline lineno="284"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>'''</highlight><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="285" refid="classcmd2_1_1StubbornDict_1a669dd7f5373f3726d8c8fb52a1e85bbd" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1StubbornDict_1a669dd7f5373f3726d8c8fb52a1e85bbd" kindref="member">update</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="286"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>dict.update(self,<sp/>StubbornDict.to_dict(arg))</highlight></codeline> -<codeline lineno="287" refid="classcmd2_1_1StubbornDict_1a66dc32a221c00611f1c131382703c333" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>append<sp/>=<sp/>update</highlight></codeline> -<codeline lineno="288" refid="classcmd2_1_1StubbornDict_1ad7c49b2ca37c0c88b198853706ae7e99" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1StubbornDict_1ad7c49b2ca37c0c88b198853706ae7e99" kindref="member">__iadd__</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="289"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1StubbornDict_1a669dd7f5373f3726d8c8fb52a1e85bbd" kindref="member">update</ref>(arg)</highlight></codeline> -<codeline lineno="290"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self</highlight></codeline> -<codeline lineno="291" refid="classcmd2_1_1StubbornDict_1a219b3f21c078f3b8158de67beae62da2" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1StubbornDict_1a219b3f21c078f3b8158de67beae62da2" kindref="member">__add__</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="292"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>selfcopy<sp/>=<sp/>copy.copy(self)</highlight></codeline> -<codeline lineno="293"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>selfcopy.update(<ref refid="namespacecmd2_1aae88fcdb31e45b322ecdaf7df9922823" kindref="member">stubbornDict</ref>(arg))</highlight></codeline> -<codeline lineno="294"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>selfcopy</highlight></codeline> -<codeline lineno="295" refid="classcmd2_1_1StubbornDict_1a190b1b2bd8a914bafaab137c5b1276ea" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1StubbornDict_1a190b1b2bd8a914bafaab137c5b1276ea" kindref="member">__radd__</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="296"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>selfcopy<sp/>=<sp/>copy.copy(self)</highlight></codeline> -<codeline lineno="297"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>selfcopy.update(<ref refid="namespacecmd2_1aae88fcdb31e45b322ecdaf7df9922823" kindref="member">stubbornDict</ref>(arg))</highlight></codeline> -<codeline lineno="298"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>selfcopy<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="299"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="300"><highlight class="normal"><sp/><sp/><sp/><sp/>@classmethod</highlight></codeline> -<codeline lineno="301" refid="classcmd2_1_1StubbornDict_1ad46f55b61faae98d241e30d52cd04eee" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1StubbornDict_1ad46f55b61faae98d241e30d52cd04eee" kindref="member">to_dict</ref>(cls,<sp/>arg):</highlight></codeline> -<codeline lineno="302"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'Generates<sp/>dictionary<sp/>from<sp/>string<sp/>or<sp/>list<sp/>of<sp/>strings'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="303"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>hasattr(arg,<sp/></highlight><highlight class="stringliteral">'splitlines'</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="304"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>=<sp/>arg.splitlines()</highlight></codeline> -<codeline lineno="305"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>hasattr(arg,<sp/></highlight><highlight class="stringliteral">'__reversed__'</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="306"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>{}<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="307"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>a<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>arg:</highlight></codeline> -<codeline lineno="308"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>a<sp/>=<sp/>a.strip()</highlight></codeline> -<codeline lineno="309"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>a:</highlight></codeline> -<codeline lineno="310"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>key_val<sp/>=<sp/>a.split(</highlight><highlight class="keywordtype">None</highlight><highlight class="normal">,<sp/>1)</highlight></codeline> -<codeline lineno="311"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>key<sp/>=<sp/>key_val[0]</highlight></codeline> -<codeline lineno="312"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>len(key_val)<sp/>><sp/>1:</highlight></codeline> -<codeline lineno="313"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>val<sp/>=<sp/>key_val[1]</highlight></codeline> -<codeline lineno="314"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="315"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>val<sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result[key]<sp/>=<sp/>val</highlight></codeline> -<codeline lineno="317"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="318"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>arg</highlight></codeline> -<codeline lineno="319"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result</highlight></codeline> -<codeline lineno="320"><highlight class="normal"></highlight></codeline> -<codeline lineno="321" refid="namespacecmd2_1aae88fcdb31e45b322ecdaf7df9922823" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1aae88fcdb31e45b322ecdaf7df9922823" kindref="member">stubbornDict</ref>(*arg,<sp/>**kwarg):</highlight></codeline> -<codeline lineno="322"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''</highlight></codeline> -<codeline lineno="323"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>sorted(stubbornDict('cow<sp/>a<sp/>bovine\\nhorse<sp/>an<sp/>equine').items())</highlight></codeline> -<codeline lineno="324"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>[('cow',<sp/>'a<sp/>bovine'),<sp/>('horse',<sp/>'an<sp/>equine')]</highlight></codeline> -<codeline lineno="325"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>sorted(stubbornDict(['badger',<sp/>'porcupine<sp/>a<sp/>poky<sp/>creature']).items())</highlight></codeline> -<codeline lineno="326"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>[('badger',<sp/>''),<sp/>('porcupine',<sp/>'a<sp/>poky<sp/>creature')]</highlight></codeline> -<codeline lineno="327"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>sorted(stubbornDict(turtle='has<sp/>shell',<sp/>frog='jumpy').items())</highlight></codeline> -<codeline lineno="328"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>[('frog',<sp/>'jumpy'),<sp/>('turtle',<sp/>'has<sp/>shell')]</highlight></codeline> -<codeline lineno="329"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="330"><highlight class="normal"><sp/><sp/><sp/><sp/>result<sp/>=<sp/>{}</highlight></codeline> -<codeline lineno="331"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>a<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>arg:</highlight></codeline> -<codeline lineno="332"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.update(StubbornDict.to_dict(a))</highlight></codeline> -<codeline lineno="333"><highlight class="normal"><sp/><sp/><sp/><sp/>result.update(kwarg)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="334"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classcmd2_1_1StubbornDict" kindref="compound">StubbornDict</ref>(result)</highlight></codeline> -<codeline lineno="335"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="336" refid="namespacecmd2_1aa5aa0c16a66d0ec0510ac38f3cc00ad3" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1aa5aa0c16a66d0ec0510ac38f3cc00ad3" kindref="member">replace_with_file_contents</ref>(fname):</highlight></codeline> -<codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>fname:</highlight></codeline> -<codeline lineno="338"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>open(os.path.expanduser(fname[0])).read()</highlight></codeline> -<codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>IOError:</highlight></codeline> -<codeline lineno="341"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/></highlight><highlight class="stringliteral">'<<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>fname[0]<sp/><sp/></highlight><highlight class="comment">#<sp/>wasn't<sp/>a<sp/>file<sp/>after<sp/>all</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="343"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/><ref refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" kindref="member">get_paste_buffer</ref>()</highlight></codeline> -<codeline lineno="344"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result<sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="345"><highlight class="normal"></highlight></codeline> -<codeline lineno="346" refid="classcmd2_1_1EmbeddedConsoleExit" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1EmbeddedConsoleExit" kindref="compound">EmbeddedConsoleExit</ref>(SystemExit):</highlight></codeline> -<codeline lineno="347"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="348"><highlight class="normal"></highlight></codeline> -<codeline lineno="349" refid="classcmd2_1_1EmptyStatement" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal">EmptyStatement(Exception):</highlight></codeline> -<codeline lineno="350"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="351"><highlight class="normal"></highlight></codeline> -<codeline lineno="352" refid="namespacecmd2_1ad4ac87ba068f9549b5a7735054df8065" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1ad4ac87ba068f9549b5a7735054df8065" kindref="member">ljust</ref>(x,<sp/>width,<sp/>fillchar='<sp/>'):</highlight></codeline> -<codeline lineno="353"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'analogous<sp/>to<sp/>str.ljust,<sp/>but<sp/>works<sp/>for<sp/>lists'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="354"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>hasattr(x,<sp/></highlight><highlight class="stringliteral">'ljust'</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="355"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>x.ljust(width,<sp/>fillchar)</highlight></codeline> -<codeline lineno="356"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="357"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>len(x)<sp/><<sp/>width:</highlight></codeline> -<codeline lineno="358"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>x<sp/>=<sp/>(x<sp/>+<sp/>[fillchar]<sp/>*<sp/>width)[:width]</highlight></codeline> -<codeline lineno="359"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>x</highlight></codeline> -<codeline lineno="360"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="361" refid="classcmd2_1_1Cmd" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd" kindref="compound">Cmd</ref>(cmd.Cmd):</highlight></codeline> -<codeline lineno="362" refid="classcmd2_1_1Cmd_1a417779ccb5de864826f97a959bd196d3" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>echo<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="363" refid="classcmd2_1_1Cmd_1a10de661ca23b94cd93972c260523c8a0" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>case_insensitive<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Commands<sp/>recognized<sp/>regardless<sp/>of<sp/>case</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="364" refid="classcmd2_1_1Cmd_1a186ca22e76dc63ad9d8a95cfaeb4f7fd" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>continuation_prompt<sp/>=<sp/></highlight><highlight class="stringliteral">'><sp/>'</highlight><highlight class="normal"><sp/><sp/></highlight></codeline> -<codeline lineno="365" refid="classcmd2_1_1Cmd_1a2d83899c5edb8c1296cb90b0fb282de7" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>timing<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Prints<sp/>elapsed<sp/>time<sp/>for<sp/>each<sp/>command</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="366"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>make<sp/>sure<sp/>your<sp/>terminators<sp/>are<sp/>not<sp/>in<sp/>legalChars!</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="367" refid="classcmd2_1_1Cmd_1a866c4b8895784a477d36bebfecfa397e" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>legalChars<sp/>=<sp/></highlight><highlight class="stringliteral">u'!#$%.:?@_'</highlight><highlight class="normal"><sp/>+<sp/>pyparsing.alphanums<sp/>+<sp/>pyparsing.alphas8bit</highlight></codeline> -<codeline lineno="368" refid="classcmd2_1_1Cmd_1ad8ccfbcd2a4eb800f040fcdbd26089df" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>shortcuts<sp/>=<sp/>{</highlight><highlight class="stringliteral">'?'</highlight><highlight class="normal">:<sp/></highlight><highlight class="stringliteral">'help'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'!'</highlight><highlight class="normal">:<sp/></highlight><highlight class="stringliteral">'shell'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'@'</highlight><highlight class="normal">:<sp/></highlight><highlight class="stringliteral">'load'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'@@'</highlight><highlight class="normal">:<sp/></highlight><highlight class="stringliteral">'_relative_load'</highlight><highlight class="normal">}</highlight></codeline> -<codeline lineno="369" refid="classcmd2_1_1Cmd_1a35586c262b272917f6ecae8e76fca6b9" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>excludeFromHistory<sp/>=<sp/></highlight><highlight class="stringliteral">'''run<sp/>r<sp/>list<sp/>l<sp/>history<sp/>hi<sp/>ed<sp/>edit<sp/>li<sp/>eof'''</highlight><highlight class="normal">.split()</highlight></codeline> -<codeline lineno="370" refid="classcmd2_1_1Cmd_1a7da859e33eae87d5069b96d366cf04b4" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>default_to_shell<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="371" refid="classcmd2_1_1Cmd_1a4e4d47a554f0725c2562c2bc19af1a3e" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>noSpecialParse<sp/>=<sp/></highlight><highlight class="stringliteral">'set<sp/>ed<sp/>edit<sp/>exit'</highlight><highlight class="normal">.split()</highlight></codeline> -<codeline lineno="372" refid="classcmd2_1_1Cmd_1ab14061f1d84f49fb8fefcce285e7aec7" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>defaultExtension<sp/>=<sp/></highlight><highlight class="stringliteral">'txt'</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>For<sp/>``save``,<sp/>``load``,<sp/>etc.</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="373" refid="classcmd2_1_1Cmd_1a3af82e64cdabf19b462cd0ddf686823d" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>default_file_name<sp/>=<sp/></highlight><highlight class="stringliteral">'command.txt'</highlight><highlight class="normal"><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>For<sp/>``save``,<sp/>``load``,<sp/>etc.</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="374" refid="classcmd2_1_1Cmd_1a810ba12198cbbc4e38643c83278956f6" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>abbrev<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Abbreviated<sp/>commands<sp/>recognized</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="375" refid="classcmd2_1_1Cmd_1a549399bed9574c87901100530343ac68" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>current_script_dir<sp/>=<sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="376" refid="classcmd2_1_1Cmd_1a01befaea1ef9fa2c8b26521f7b2dfb9c" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>reserved_words<sp/>=<sp/>[]</highlight></codeline> -<codeline lineno="377" refid="classcmd2_1_1Cmd_1ad571e5687af698c33a547062762a26bc" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>feedback_to_output<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Do<sp/>include<sp/>nonessentials<sp/>in<sp/>>,<sp/>|<sp/>output</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="378" refid="classcmd2_1_1Cmd_1a50495cbf3a3ea3467c86233ebbea4572" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>quiet<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Do<sp/>not<sp/>suppress<sp/>nonessential<sp/>output</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="379" refid="classcmd2_1_1Cmd_1a7b07b64964162c07f50675b2b40160b2" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>debug<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="380" refid="classcmd2_1_1Cmd_1a55e7978c792429a0a2e3321abdbd23fe" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>locals_in_py<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="381" refid="classcmd2_1_1Cmd_1ad480d9102b3a5e4c8c5541d2c205a1ad" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>kept_state<sp/>=<sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="382" refid="classcmd2_1_1Cmd_1a64b810574dab9ec12100c5344dc66735" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>redirector<sp/>=<sp/></highlight><highlight class="stringliteral">'>'</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>for<sp/>sending<sp/>output<sp/>to<sp/>file</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="383" refid="classcmd2_1_1Cmd_1a6cec2f634666d15d032d4c113e654c3c" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>settable<sp/>=<sp/><ref refid="namespacecmd2_1aae88fcdb31e45b322ecdaf7df9922823" kindref="member">stubbornDict</ref>(</highlight><highlight class="stringliteral">'''</highlight></codeline> -<codeline lineno="384"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>prompt</highlight></codeline> -<codeline lineno="385"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>colors<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Colorized<sp/>output<sp/>(*nix<sp/>only)</highlight></codeline> -<codeline lineno="386"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>continuation_prompt<sp/><sp/><sp/>On<sp/>2nd+<sp/>line<sp/>of<sp/>input</highlight></codeline> -<codeline lineno="387"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>debug<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Show<sp/>full<sp/>error<sp/>stack<sp/>on<sp/>error</highlight></codeline> -<codeline lineno="388"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>default_file_name<sp/><sp/><sp/><sp/><sp/>for<sp/>``save``,<sp/>``load``,<sp/>etc.</highlight></codeline> -<codeline lineno="389"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>editor<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Program<sp/>used<sp/>by<sp/>``edit``<sp/><sp/></highlight></codeline> -<codeline lineno="390"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>case_insensitive<sp/><sp/><sp/><sp/><sp/><sp/>upper-<sp/>and<sp/>lower-case<sp/>both<sp/>OK</highlight></codeline> -<codeline lineno="391"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>feedback_to_output<sp/><sp/><sp/><sp/>include<sp/>nonessentials<sp/>in<sp/>`|`,<sp/>`>`<sp/>results<sp/></highlight></codeline> -<codeline lineno="392"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>quiet<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Don't<sp/>print<sp/>nonessential<sp/>feedback</highlight></codeline> -<codeline lineno="393"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>echo<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Echo<sp/>command<sp/>issued<sp/>into<sp/>output</highlight></codeline> -<codeline lineno="394"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>timing<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Report<sp/>execution<sp/>times</highlight></codeline> -<codeline lineno="395"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>abbrev<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Accept<sp/>abbreviated<sp/>commands</highlight></codeline> -<codeline lineno="396"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>'''</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="397"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="398" refid="classcmd2_1_1Cmd_1ad8b5d33873f9b515e33f83a616d0828f" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1ad8b5d33873f9b515e33f83a616d0828f" kindref="member">poutput</ref>(self,<sp/>msg):</highlight></codeline> -<codeline lineno="399"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Convenient<sp/>shortcut<sp/>for<sp/>self.stdout.write();<sp/>adds<sp/>newline<sp/>if<sp/>necessary.'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="400"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>msg:</highlight></codeline> -<codeline lineno="401"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(msg)</highlight></codeline> -<codeline lineno="402"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>msg[-1]<sp/>!=<sp/></highlight><highlight class="stringliteral">'\n'</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="403"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(</highlight><highlight class="stringliteral">'\n'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="404" refid="classcmd2_1_1Cmd_1a118c16455f28dbd3918b565bca086db4" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a118c16455f28dbd3918b565bca086db4" kindref="member">perror</ref>(self,<sp/>errmsg,<sp/>statement=None):</highlight></codeline> -<codeline lineno="405"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a7b07b64964162c07f50675b2b40160b2" kindref="member">debug</ref>:</highlight></codeline> -<codeline lineno="406"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>traceback.print_exc()</highlight></codeline> -<codeline lineno="407"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">print</highlight><highlight class="normal"><sp/>(str(errmsg))</highlight></codeline> -<codeline lineno="408" refid="classcmd2_1_1Cmd_1a122b67681a0db23863f5ddaa7a687975" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a122b67681a0db23863f5ddaa7a687975" kindref="member">pfeedback</ref>(self,<sp/>msg):</highlight></codeline> -<codeline lineno="409"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""For<sp/>printing<sp/>nonessential<sp/>feedback.<sp/><sp/>Can<sp/>be<sp/>silenced<sp/>with<sp/>`quiet`.</highlight></codeline> -<codeline lineno="410"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Inclusion<sp/>in<sp/>redirected<sp/>output<sp/>is<sp/>controlled<sp/>by<sp/>`feedback_to_output`."""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="411"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a50495cbf3a3ea3467c86233ebbea4572" kindref="member">quiet</ref>:</highlight></codeline> -<codeline lineno="412"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad571e5687af698c33a547062762a26bc" kindref="member">feedback_to_output</ref>:</highlight></codeline> -<codeline lineno="413"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad8b5d33873f9b515e33f83a616d0828f" kindref="member">poutput</ref>(msg)</highlight></codeline> -<codeline lineno="414"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="415"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">print</highlight><highlight class="normal"><sp/>(msg)</highlight></codeline> -<codeline lineno="416" refid="classcmd2_1_1Cmd_1a7a8e8257d7d35c7813355cdefb62b85b" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>_STOP_AND_EXIT<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">#<sp/>distinguish<sp/>end<sp/>of<sp/>script<sp/>file<sp/>from<sp/>actual<sp/>exit</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="417" refid="classcmd2_1_1Cmd_1abe14bda0dc50326876c6a761cefba702" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>_STOP_SCRIPT_NO_EXIT<sp/>=<sp/>-999</highlight></codeline> -<codeline lineno="418" refid="classcmd2_1_1Cmd_1a25fe904aca52573c6f10e798dd561588" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>editor<sp/>=<sp/>os.environ.get(</highlight><highlight class="stringliteral">'EDITOR'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="419"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>editor:</highlight></codeline> -<codeline lineno="420"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>sys.platform[:3]<sp/>==<sp/></highlight><highlight class="stringliteral">'win'</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="421" refid="classcmd2_1_1Cmd_1a3a1abb5d4a8d42dcce7d61b04bdf9e97" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>editor<sp/>=<sp/></highlight><highlight class="stringliteral">'notepad'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="422"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="423"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>editor<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>[</highlight><highlight class="stringliteral">'gedit'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'kate'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'vim'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'emacs'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'nano'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'pico'</highlight><highlight class="normal">]:</highlight></codeline> -<codeline lineno="424"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>subprocess.Popen([</highlight><highlight class="stringliteral">'which'</highlight><highlight class="normal">,<sp/>editor],<sp/>stdout=subprocess.PIPE).communicate()[0]:</highlight></codeline> -<codeline lineno="425"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="426"><highlight class="normal"></highlight></codeline> -<codeline lineno="427" refid="classcmd2_1_1Cmd_1a91dd3e77a8d1f247dcfdddbfc0288b3b" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>colorcodes<sp/>=<sp/><sp/><sp/><sp/>{</highlight><highlight class="stringliteral">'bold'</highlight><highlight class="normal">:{</highlight><highlight class="keyword">True</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[1m'</highlight><highlight class="normal">,</highlight><highlight class="keyword">False</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[22m'</highlight><highlight class="normal">},</highlight></codeline> -<codeline lineno="428"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'cyan'</highlight><highlight class="normal">:{</highlight><highlight class="keyword">True</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[36m'</highlight><highlight class="normal">,</highlight><highlight class="keyword">False</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[39m'</highlight><highlight class="normal">},</highlight></codeline> -<codeline lineno="429"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'blue'</highlight><highlight class="normal">:{</highlight><highlight class="keyword">True</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[34m'</highlight><highlight class="normal">,</highlight><highlight class="keyword">False</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[39m'</highlight><highlight class="normal">},</highlight></codeline> -<codeline lineno="430"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'red'</highlight><highlight class="normal">:{</highlight><highlight class="keyword">True</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[31m'</highlight><highlight class="normal">,</highlight><highlight class="keyword">False</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[39m'</highlight><highlight class="normal">},</highlight></codeline> -<codeline lineno="431"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'magenta'</highlight><highlight class="normal">:{</highlight><highlight class="keyword">True</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[35m'</highlight><highlight class="normal">,</highlight><highlight class="keyword">False</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[39m'</highlight><highlight class="normal">},</highlight></codeline> -<codeline lineno="432"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'green'</highlight><highlight class="normal">:{</highlight><highlight class="keyword">True</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[32m'</highlight><highlight class="normal">,</highlight><highlight class="keyword">False</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[39m'</highlight><highlight class="normal">},</highlight></codeline> -<codeline lineno="433"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'underline'</highlight><highlight class="normal">:{</highlight><highlight class="keyword">True</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[4m'</highlight><highlight class="normal">,</highlight><highlight class="keyword">False</highlight><highlight class="normal">:</highlight><highlight class="stringliteral">'\x1b[24m'</highlight><highlight class="normal">}}</highlight></codeline> -<codeline lineno="434" refid="classcmd2_1_1Cmd_1a2ec43e734ae5b2a581216dc7914b231a" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>colors<sp/>=<sp/>(platform.system()<sp/>!=<sp/></highlight><highlight class="stringliteral">'Windows'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="435" refid="classcmd2_1_1Cmd_1a9c7f8fd1e7909d18a0f1d8cebf6c1966" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a9c7f8fd1e7909d18a0f1d8cebf6c1966" kindref="member">colorize</ref>(self,<sp/>val,<sp/>color):</highlight></codeline> -<codeline lineno="436"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Given<sp/>a<sp/>string<sp/>(``val``),<sp/>returns<sp/>that<sp/>string<sp/>wrapped<sp/>in<sp/>UNIX-style<sp/></highlight></codeline> -<codeline lineno="437"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>special<sp/>characters<sp/>that<sp/>turn<sp/>on<sp/>(and<sp/>then<sp/>off)<sp/>text<sp/>color<sp/>and<sp/>style.</highlight></codeline> -<codeline lineno="438"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>If<sp/>the<sp/>``colors``<sp/>environment<sp/>paramter<sp/>is<sp/>``False``,<sp/>or<sp/>the<sp/>application</highlight></codeline> -<codeline lineno="439"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>is<sp/>running<sp/>on<sp/>Windows,<sp/>will<sp/>return<sp/>``val``<sp/>unchanged.</highlight></codeline> -<codeline lineno="440" refid="classcmd2_1_1Cmd_1a2a71ccfd9f189e17db765b603f2c9a78" refkind="member"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>``color``<sp/>should<sp/>be<sp/>one<sp/>of<sp/>the<sp/>supported<sp/>strings<sp/>(or<sp/>styles):</highlight></codeline> -<codeline lineno="441"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>red/blue/green/cyan/magenta,<sp/>bold,<sp/>underline'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="442"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a2ec43e734ae5b2a581216dc7914b231a" kindref="member">colors</ref><sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>(self.<ref refid="classcmd2_1_1Cmd_1a2a71ccfd9f189e17db765b603f2c9a78" kindref="member">stdout</ref><sp/>==<sp/>self.<ref refid="classcmd2_1_1Cmd_1af7cb41e066bc55be38b97ea82269e5e8" kindref="member">initial_stdout</ref>):</highlight></codeline> -<codeline lineno="443"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a91dd3e77a8d1f247dcfdddbfc0288b3b" kindref="member">colorcodes</ref>[color][</highlight><highlight class="keyword">True</highlight><highlight class="normal">]<sp/>+<sp/>val<sp/>+<sp/>self.<ref refid="classcmd2_1_1Cmd_1a91dd3e77a8d1f247dcfdddbfc0288b3b" kindref="member">colorcodes</ref>[color][</highlight><highlight class="keyword">False</highlight><highlight class="normal">]</highlight></codeline> -<codeline lineno="444"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>val</highlight></codeline> -<codeline lineno="445"><highlight class="normal"></highlight></codeline> -<codeline lineno="446" refid="classcmd2_1_1Cmd_1a79949284f70e1fdb7e33117cc4195f80" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a79949284f70e1fdb7e33117cc4195f80" kindref="member">do_cmdenvironment</ref>(self,<sp/>args):</highlight></codeline> -<codeline lineno="447"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Summary<sp/>report<sp/>of<sp/>interactive<sp/>parameters.'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="448"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(</highlight><highlight class="stringliteral">"""</highlight></codeline> -<codeline lineno="449"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Commands<sp/>are<sp/>%(casesensitive)scase-sensitive.</highlight></codeline> -<codeline lineno="450"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Commands<sp/>may<sp/>be<sp/>terminated<sp/>with:<sp/>%(terminators)s</highlight></codeline> -<codeline lineno="451"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Settable<sp/>parameters:<sp/>%(settable)s\n"""</highlight><highlight class="normal"><sp/>%<sp/>\</highlight></codeline> -<codeline lineno="452"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>{<sp/></highlight><highlight class="stringliteral">'casesensitive'</highlight><highlight class="normal">:<sp/>(self.<ref refid="classcmd2_1_1Cmd_1a10de661ca23b94cd93972c260523c8a0" kindref="member">case_insensitive</ref><sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">'not<sp/>'</highlight><highlight class="normal">)<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">,</highlight></codeline> -<codeline lineno="453"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'terminators'</highlight><highlight class="normal">:<sp/>str(self.<ref refid="classcmd2_1_1Cmd_1a6bd95a7f702f668696ab6e88555da23d" kindref="member">terminators</ref>),</highlight></codeline> -<codeline lineno="454"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'settable'</highlight><highlight class="normal">:<sp/></highlight><highlight class="stringliteral">'<sp/>'</highlight><highlight class="normal">.join(self.<ref refid="classcmd2_1_1Cmd_1a6cec2f634666d15d032d4c113e654c3c" kindref="member">settable</ref>)</highlight></codeline> -<codeline lineno="455"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>})</highlight></codeline> -<codeline lineno="456"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="457" refid="classcmd2_1_1Cmd_1af112b7b704dcd8d34c389fcaa150e3d0" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1af112b7b704dcd8d34c389fcaa150e3d0" kindref="member">do_help</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="458"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>arg:</highlight></codeline> -<codeline lineno="459"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>funcname<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a7fbb17b136654f705387ede1fb685a3e" kindref="member">func_named</ref>(arg)</highlight></codeline> -<codeline lineno="460"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>funcname:</highlight></codeline> -<codeline lineno="461"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>fn<sp/>=<sp/>getattr(self,<sp/>funcname)</highlight></codeline> -<codeline lineno="462"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="463"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>fn.optionParser.print_help(file=self.<ref refid="classcmd2_1_1Cmd_1a2a71ccfd9f189e17db765b603f2c9a78" kindref="member">stdout</ref>)</highlight></codeline> -<codeline lineno="464"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>AttributeError:</highlight></codeline> -<codeline lineno="465"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cmd.Cmd.do_help(self,<sp/>funcname[3:])</highlight></codeline> -<codeline lineno="466"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="467"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cmd.Cmd.do_help(self,<sp/>arg)</highlight></codeline> -<codeline lineno="468"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="469" refid="classcmd2_1_1Cmd_1a728675cc7b48ac258c5026929df0dfe4" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1afef8fbba2cb5adea45e3a22a506c8665" kindref="member">__init__</ref>(self,<sp/>*args,<sp/>**kwargs):<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="470"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cmd.Cmd.__init__(self,<sp/>*args,<sp/>**kwargs)</highlight></codeline> -<codeline lineno="471"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1af7cb41e066bc55be38b97ea82269e5e8" kindref="member">initial_stdout</ref><sp/>=<sp/>sys.stdout</highlight></codeline> -<codeline lineno="472"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a666a090bc7298aae6ca55840e9418f96" kindref="member">history</ref><sp/>=<sp/><ref refid="classcmd2_1_1History" kindref="compound">History</ref>()</highlight></codeline> -<codeline lineno="473"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a30058e5e628d60dedf7c500e270b3e5d" kindref="member">pystate</ref><sp/>=<sp/>{}</highlight></codeline> -<codeline lineno="474"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad8ccfbcd2a4eb800f040fcdbd26089df" kindref="member">shortcuts</ref><sp/>=<sp/>sorted(self.shortcuts.items(),<sp/>reverse=</highlight><highlight class="keyword">True</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="475"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a8ccd464e255a798b587637f9b812dbcd" kindref="member">keywords</ref><sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a01befaea1ef9fa2c8b26521f7b2dfb9c" kindref="member">reserved_words</ref><sp/>+<sp/>[fname[3:]<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>fname<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>dir(self)<sp/></highlight></codeline> -<codeline lineno="476"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>fname.startswith(</highlight><highlight class="stringliteral">'do_'</highlight><highlight class="normal">)]<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="477"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a819bd7bd930dab0e39e59af3397c2eac" kindref="member">_init_parser</ref>()</highlight></codeline> -<codeline lineno="478"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="479" refid="classcmd2_1_1Cmd_1aea47330c6e0f4e5f14e2cdff41679597" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1aea47330c6e0f4e5f14e2cdff41679597" kindref="member">do_shortcuts</ref>(self,<sp/>args):</highlight></codeline> -<codeline lineno="480"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""Lists<sp/>single-key<sp/>shortcuts<sp/>available."""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="481"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/></highlight><highlight class="stringliteral">"\n"</highlight><highlight class="normal">.join(</highlight><highlight class="stringliteral">'%s:<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>(sc[0],<sp/>sc[1])<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>sc<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>sorted(self.<ref refid="classcmd2_1_1Cmd_1ad8ccfbcd2a4eb800f040fcdbd26089df" kindref="member">shortcuts</ref>))</highlight></codeline> -<codeline lineno="482"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(</highlight><highlight class="stringliteral">"Single-key<sp/>shortcuts<sp/>for<sp/>other<sp/>commands:\n%s\n"</highlight><highlight class="normal"><sp/>%<sp/>(result))</highlight></codeline> -<codeline lineno="483"><highlight class="normal"></highlight></codeline> -<codeline lineno="484" refid="classcmd2_1_1Cmd_1a794ce4cfd06ddd8df24df33d9f116a65" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>prefixParser<sp/>=<sp/>pyparsing.Empty()</highlight></codeline> -<codeline lineno="485" refid="classcmd2_1_1Cmd_1ae6adde6cd440331e4add0bdf8c2c61d0" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>commentGrammars<sp/>=<sp/>pyparsing.Or([pyparsing.pythonStyleComment,<sp/>pyparsing.cStyleComment])</highlight></codeline> -<codeline lineno="486"><highlight class="normal"><sp/><sp/><sp/><sp/>commentGrammars.addParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="487" refid="classcmd2_1_1Cmd_1a0333f71a3291354d3238a4853ec5e762" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>commentInProgress<sp/><sp/>=<sp/>pyparsing.Literal(</highlight><highlight class="stringliteral">'/*'</highlight><highlight class="normal">)<sp/>+<sp/>pyparsing.SkipTo(</highlight></codeline> -<codeline lineno="488"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pyparsing.stringEnd<sp/>^<sp/></highlight><highlight class="stringliteral">'*/'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="489" refid="classcmd2_1_1Cmd_1a6bd95a7f702f668696ab6e88555da23d" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>terminators<sp/>=<sp/>[</highlight><highlight class="stringliteral">';'</highlight><highlight class="normal">]</highlight></codeline> -<codeline lineno="490" refid="classcmd2_1_1Cmd_1a395ee1f733c5faeb66e74b308cbc5e63" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>blankLinesAllowed<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="491" refid="classcmd2_1_1Cmd_1a05fbd7501cbc1f911e9a4925e5f0804a" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>multilineCommands<sp/>=<sp/>[]</highlight></codeline> -<codeline lineno="492"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="493" refid="classcmd2_1_1Cmd_1a819bd7bd930dab0e39e59af3397c2eac" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a819bd7bd930dab0e39e59af3397c2eac" kindref="member">_init_parser</ref>(self):</highlight></codeline> -<codeline lineno="494"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">r'''</highlight></codeline> -<codeline lineno="495"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>c<sp/>=<sp/>Cmd()</highlight></codeline> -<codeline lineno="496"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>c.multilineCommands<sp/>=<sp/>['multiline']</highlight></codeline> -<codeline lineno="497"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>c.case_insensitive<sp/>=<sp/>True</highlight></codeline> -<codeline lineno="498"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>c._init_parser()</highlight></codeline> -<codeline lineno="499"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('').dump())</highlight></codeline> -<codeline lineno="500"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[]</highlight></codeline> -<codeline lineno="501"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('').dump())</highlight></codeline> -<codeline lineno="502"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[]<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="503"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('/*<sp/>empty<sp/>command<sp/>*/').dump())</highlight></codeline> -<codeline lineno="504"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[]<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="505"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('plainword').dump())</highlight></codeline> -<codeline lineno="506"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['plainword',<sp/>'']</highlight></codeline> -<codeline lineno="507"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>plainword</highlight></codeline> -<codeline lineno="508"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['plainword',<sp/>'']</highlight></codeline> -<codeline lineno="509"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>plainword<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="510"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('termbare;').dump())</highlight></codeline> -<codeline lineno="511"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['termbare',<sp/>'',<sp/>';',<sp/>'']</highlight></codeline> -<codeline lineno="512"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>termbare</highlight></codeline> -<codeline lineno="513"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['termbare',<sp/>'',<sp/>';']</highlight></codeline> -<codeline lineno="514"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>termbare</highlight></codeline> -<codeline lineno="515"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="516"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="517"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('termbare;<sp/>suffx').dump())</highlight></codeline> -<codeline lineno="518"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['termbare',<sp/>'',<sp/>';',<sp/>'suffx']</highlight></codeline> -<codeline lineno="519"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>termbare</highlight></codeline> -<codeline lineno="520"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['termbare',<sp/>'',<sp/>';']</highlight></codeline> -<codeline lineno="521"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>termbare</highlight></codeline> -<codeline lineno="522"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="523"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>suffix:<sp/>suffx</highlight></codeline> -<codeline lineno="524"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="525"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('barecommand').dump())</highlight></codeline> -<codeline lineno="526"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['barecommand',<sp/>'']</highlight></codeline> -<codeline lineno="527"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>barecommand</highlight></codeline> -<codeline lineno="528"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['barecommand',<sp/>'']</highlight></codeline> -<codeline lineno="529"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>barecommand</highlight></codeline> -<codeline lineno="530"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('COMmand<sp/>with<sp/>args').dump())</highlight></codeline> -<codeline lineno="531"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['command',<sp/>'with<sp/>args']</highlight></codeline> -<codeline lineno="532"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>with<sp/>args</highlight></codeline> -<codeline lineno="533"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>command</highlight></codeline> -<codeline lineno="534"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['command',<sp/>'with<sp/>args']</highlight></codeline> -<codeline lineno="535"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>with<sp/>args</highlight></codeline> -<codeline lineno="536"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>command</highlight></codeline> -<codeline lineno="537"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('command<sp/>with<sp/>args<sp/>and<sp/>terminator;<sp/>and<sp/>suffix').dump())</highlight></codeline> -<codeline lineno="538"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['command',<sp/>'with<sp/>args<sp/>and<sp/>terminator',<sp/>';',<sp/>'and<sp/>suffix']</highlight></codeline> -<codeline lineno="539"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>with<sp/>args<sp/>and<sp/>terminator</highlight></codeline> -<codeline lineno="540"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>command</highlight></codeline> -<codeline lineno="541"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['command',<sp/>'with<sp/>args<sp/>and<sp/>terminator',<sp/>';']</highlight></codeline> -<codeline lineno="542"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>with<sp/>args<sp/>and<sp/>terminator</highlight></codeline> -<codeline lineno="543"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>command</highlight></codeline> -<codeline lineno="544"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="545"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>suffix:<sp/>and<sp/>suffix</highlight></codeline> -<codeline lineno="546"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="547"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('simple<sp/>|<sp/>piped').dump())</highlight></codeline> -<codeline lineno="548"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['simple',<sp/>'',<sp/>'|',<sp/>'<sp/>piped']</highlight></codeline> -<codeline lineno="549"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>simple</highlight></codeline> -<codeline lineno="550"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>pipeTo:<sp/><sp/>piped</highlight></codeline> -<codeline lineno="551"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['simple',<sp/>'']</highlight></codeline> -<codeline lineno="552"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>simple</highlight></codeline> -<codeline lineno="553"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('double-pipe<sp/>||<sp/>is<sp/>not<sp/>a<sp/>pipe').dump())</highlight></codeline> -<codeline lineno="554"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['double',<sp/>'-pipe<sp/>||<sp/>is<sp/>not<sp/>a<sp/>pipe']</highlight></codeline> -<codeline lineno="555"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>-pipe<sp/>||<sp/>is<sp/>not<sp/>a<sp/>pipe</highlight></codeline> -<codeline lineno="556"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>double</highlight></codeline> -<codeline lineno="557"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['double',<sp/>'-pipe<sp/>||<sp/>is<sp/>not<sp/>a<sp/>pipe']</highlight></codeline> -<codeline lineno="558"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>-pipe<sp/>||<sp/>is<sp/>not<sp/>a<sp/>pipe</highlight></codeline> -<codeline lineno="559"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>double</highlight></codeline> -<codeline lineno="560"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('command<sp/>with<sp/>args,<sp/>terminator;sufx<sp/>|<sp/>piped').dump())</highlight></codeline> -<codeline lineno="561"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['command',<sp/>'with<sp/>args,<sp/>terminator',<sp/>';',<sp/>'sufx',<sp/>'|',<sp/>'<sp/>piped']</highlight></codeline> -<codeline lineno="562"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>with<sp/>args,<sp/>terminator</highlight></codeline> -<codeline lineno="563"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>command</highlight></codeline> -<codeline lineno="564"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>pipeTo:<sp/><sp/>piped</highlight></codeline> -<codeline lineno="565"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['command',<sp/>'with<sp/>args,<sp/>terminator',<sp/>';']</highlight></codeline> -<codeline lineno="566"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>with<sp/>args,<sp/>terminator</highlight></codeline> -<codeline lineno="567"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>command</highlight></codeline> -<codeline lineno="568"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="569"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>suffix:<sp/>sufx</highlight></codeline> -<codeline lineno="570"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="571"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('output<sp/>into<sp/>><sp/>afile.txt').dump())</highlight></codeline> -<codeline lineno="572"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['output',<sp/>'into',<sp/>'>',<sp/>'afile.txt']</highlight></codeline> -<codeline lineno="573"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>into</highlight></codeline> -<codeline lineno="574"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>output</highlight></codeline> -<codeline lineno="575"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>output:<sp/>></highlight></codeline> -<codeline lineno="576"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>outputTo:<sp/>afile.txt</highlight></codeline> -<codeline lineno="577"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['output',<sp/>'into']</highlight></codeline> -<codeline lineno="578"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>into</highlight></codeline> -<codeline lineno="579"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>output<sp/><sp/><sp/></highlight></codeline> -<codeline lineno="580"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('output<sp/>into;sufx<sp/>|<sp/>pipethrume<sp/>plz<sp/>><sp/>afile.txt').dump())</highlight></codeline> -<codeline lineno="581"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['output',<sp/>'into',<sp/>';',<sp/>'sufx',<sp/>'|',<sp/>'<sp/>pipethrume<sp/>plz',<sp/>'>',<sp/>'afile.txt']</highlight></codeline> -<codeline lineno="582"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>into</highlight></codeline> -<codeline lineno="583"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>output</highlight></codeline> -<codeline lineno="584"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>output:<sp/>></highlight></codeline> -<codeline lineno="585"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>outputTo:<sp/>afile.txt</highlight></codeline> -<codeline lineno="586"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>pipeTo:<sp/><sp/>pipethrume<sp/>plz</highlight></codeline> -<codeline lineno="587"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['output',<sp/>'into',<sp/>';']</highlight></codeline> -<codeline lineno="588"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>into</highlight></codeline> -<codeline lineno="589"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>output</highlight></codeline> -<codeline lineno="590"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="591"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>suffix:<sp/>sufx</highlight></codeline> -<codeline lineno="592"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="593"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('output<sp/>to<sp/>paste<sp/>buffer<sp/>>><sp/>').dump())</highlight></codeline> -<codeline lineno="594"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['output',<sp/>'to<sp/>paste<sp/>buffer',<sp/>'>>',<sp/>'']</highlight></codeline> -<codeline lineno="595"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>to<sp/>paste<sp/>buffer</highlight></codeline> -<codeline lineno="596"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>output</highlight></codeline> -<codeline lineno="597"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>output:<sp/>>></highlight></codeline> -<codeline lineno="598"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['output',<sp/>'to<sp/>paste<sp/>buffer']</highlight></codeline> -<codeline lineno="599"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>to<sp/>paste<sp/>buffer</highlight></codeline> -<codeline lineno="600"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>output</highlight></codeline> -<codeline lineno="601"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('ignore<sp/>the<sp/>/*<sp/>commented<sp/>|<sp/>><sp/>*/<sp/>stuff;').dump())</highlight></codeline> -<codeline lineno="602"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['ignore',<sp/>'the<sp/>/*<sp/>commented<sp/>|<sp/>><sp/>*/<sp/>stuff',<sp/>';',<sp/>'']</highlight></codeline> -<codeline lineno="603"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>the<sp/>/*<sp/>commented<sp/>|<sp/>><sp/>*/<sp/>stuff</highlight></codeline> -<codeline lineno="604"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>ignore</highlight></codeline> -<codeline lineno="605"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['ignore',<sp/>'the<sp/>/*<sp/>commented<sp/>|<sp/>><sp/>*/<sp/>stuff',<sp/>';']</highlight></codeline> -<codeline lineno="606"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>the<sp/>/*<sp/>commented<sp/>|<sp/>><sp/>*/<sp/>stuff</highlight></codeline> -<codeline lineno="607"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>ignore</highlight></codeline> -<codeline lineno="608"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="609"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="610"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('has<sp/>><sp/>inside;').dump())</highlight></codeline> -<codeline lineno="611"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['has',<sp/>'><sp/>inside',<sp/>';',<sp/>'']</highlight></codeline> -<codeline lineno="612"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>><sp/>inside</highlight></codeline> -<codeline lineno="613"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>has</highlight></codeline> -<codeline lineno="614"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['has',<sp/>'><sp/>inside',<sp/>';']</highlight></codeline> -<codeline lineno="615"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>><sp/>inside</highlight></codeline> -<codeline lineno="616"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>has</highlight></codeline> -<codeline lineno="617"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="618"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="619"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('multiline<sp/>has<sp/>><sp/>inside<sp/>an<sp/>unfinished<sp/>command').dump())</highlight></codeline> -<codeline lineno="620"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['multiline',<sp/>'<sp/>has<sp/>><sp/>inside<sp/>an<sp/>unfinished<sp/>command']</highlight></codeline> -<codeline lineno="621"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="622"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('multiline<sp/>has<sp/>><sp/>inside;').dump())</highlight></codeline> -<codeline lineno="623"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['multiline',<sp/>'has<sp/>><sp/>inside',<sp/>';',<sp/>'']</highlight></codeline> -<codeline lineno="624"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>has<sp/>><sp/>inside</highlight></codeline> -<codeline lineno="625"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline</highlight></codeline> -<codeline lineno="626"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['multiline',<sp/>'has<sp/>><sp/>inside',<sp/>';']</highlight></codeline> -<codeline lineno="627"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>has<sp/>><sp/>inside</highlight></codeline> -<codeline lineno="628"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline</highlight></codeline> -<codeline lineno="629"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="630"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="631"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('multiline<sp/>command<sp/>/*<sp/>with<sp/>comment<sp/>in<sp/>progress;').dump())</highlight></codeline> -<codeline lineno="632"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['multiline',<sp/>'<sp/>command<sp/>/*<sp/>with<sp/>comment<sp/>in<sp/>progress;']</highlight></codeline> -<codeline lineno="633"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline</highlight></codeline> -<codeline lineno="634"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('multiline<sp/>command<sp/>/*<sp/>with<sp/>comment<sp/>complete<sp/>*/<sp/>is<sp/>done;').dump())</highlight></codeline> -<codeline lineno="635"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['multiline',<sp/>'command<sp/>/*<sp/>with<sp/>comment<sp/>complete<sp/>*/<sp/>is<sp/>done',<sp/>';',<sp/>'']</highlight></codeline> -<codeline lineno="636"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>command<sp/>/*<sp/>with<sp/>comment<sp/>complete<sp/>*/<sp/>is<sp/>done</highlight></codeline> -<codeline lineno="637"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline</highlight></codeline> -<codeline lineno="638"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['multiline',<sp/>'command<sp/>/*<sp/>with<sp/>comment<sp/>complete<sp/>*/<sp/>is<sp/>done',<sp/>';']</highlight></codeline> -<codeline lineno="639"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>command<sp/>/*<sp/>with<sp/>comment<sp/>complete<sp/>*/<sp/>is<sp/>done</highlight></codeline> -<codeline lineno="640"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline</highlight></codeline> -<codeline lineno="641"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="642"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>;</highlight></codeline> -<codeline lineno="643"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('multiline<sp/>command<sp/>ends\n\n').dump())</highlight></codeline> -<codeline lineno="644"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['multiline',<sp/>'command<sp/>ends',<sp/>'\n',<sp/>'\n']</highlight></codeline> -<codeline lineno="645"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>command<sp/>ends</highlight></codeline> -<codeline lineno="646"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline</highlight></codeline> -<codeline lineno="647"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['multiline',<sp/>'command<sp/>ends',<sp/>'\n',<sp/>'\n']</highlight></codeline> -<codeline lineno="648"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>command<sp/>ends</highlight></codeline> -<codeline lineno="649"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline</highlight></codeline> -<codeline lineno="650"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>['\n',<sp/>'\n']</highlight></codeline> -<codeline lineno="651"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>['\n',<sp/>'\n']</highlight></codeline> -<codeline lineno="652"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('multiline<sp/>command<sp/>"with<sp/>term;<sp/>ends"<sp/>now\n\n').dump())</highlight></codeline> -<codeline lineno="653"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['multiline',<sp/>'command<sp/>"with<sp/>term;<sp/>ends"<sp/>now',<sp/>'\n',<sp/>'\n']</highlight></codeline> -<codeline lineno="654"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>command<sp/>"with<sp/>term;<sp/>ends"<sp/>now</highlight></codeline> -<codeline lineno="655"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline</highlight></codeline> -<codeline lineno="656"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['multiline',<sp/>'command<sp/>"with<sp/>term;<sp/>ends"<sp/>now',<sp/>'\n',<sp/>'\n']</highlight></codeline> -<codeline lineno="657"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>command<sp/>"with<sp/>term;<sp/>ends"<sp/>now</highlight></codeline> -<codeline lineno="658"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>multilineCommand:<sp/>multiline</highlight></codeline> -<codeline lineno="659"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>['\n',<sp/>'\n']</highlight></codeline> -<codeline lineno="660"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>terminator:<sp/>['\n',<sp/>'\n']</highlight></codeline> -<codeline lineno="661"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>>>><sp/>print<sp/>(c.parser.parseString('what<sp/>if<sp/>"quoted<sp/>strings<sp/>/*<sp/>seem<sp/>to<sp/>"<sp/>start<sp/>comments?').dump())</highlight></codeline> -<codeline lineno="662"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>['what',<sp/>'if<sp/>"quoted<sp/>strings<sp/>/*<sp/>seem<sp/>to<sp/>"<sp/>start<sp/>comments?']</highlight></codeline> -<codeline lineno="663"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>if<sp/>"quoted<sp/>strings<sp/>/*<sp/>seem<sp/>to<sp/>"<sp/>start<sp/>comments?</highlight></codeline> -<codeline lineno="664"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>what</highlight></codeline> -<codeline lineno="665"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>statement:<sp/>['what',<sp/>'if<sp/>"quoted<sp/>strings<sp/>/*<sp/>seem<sp/>to<sp/>"<sp/>start<sp/>comments?']</highlight></codeline> -<codeline lineno="666"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>args:<sp/>if<sp/>"quoted<sp/>strings<sp/>/*<sp/>seem<sp/>to<sp/>"<sp/>start<sp/>comments?</highlight></codeline> -<codeline lineno="667" refid="classcmd2_1_1Cmd_1a58e84cc1e072fda53b98ba9ed4376540" refkind="member"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>command:<sp/>what</highlight></codeline> -<codeline lineno="668"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="669"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#outputParser<sp/>=<sp/>(pyparsing.Literal('>>')<sp/>|<sp/>(pyparsing.WordStart()<sp/>+<sp/>'>')<sp/>|<sp/>pyparsing.Regex('[^=]>'))('output')</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="670"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>outputParser<sp/>=<sp/>(pyparsing.Literal(self.<ref refid="classcmd2_1_1Cmd_1a64b810574dab9ec12100c5344dc66735" kindref="member">redirector</ref><sp/>*2)<sp/>|<sp/>\</highlight></codeline> -<codeline lineno="671"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(pyparsing.WordStart()<sp/>+<sp/>self.<ref refid="classcmd2_1_1Cmd_1a64b810574dab9ec12100c5344dc66735" kindref="member">redirector</ref>)<sp/>|<sp/>\</highlight></codeline> -<codeline lineno="672"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pyparsing.Regex(</highlight><highlight class="stringliteral">'[^=]'</highlight><highlight class="normal"><sp/>+<sp/>self.<ref refid="classcmd2_1_1Cmd_1a64b810574dab9ec12100c5344dc66735" kindref="member">redirector</ref>))(</highlight><highlight class="stringliteral">'output'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="673"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="674"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>terminatorParser<sp/>=<sp/>pyparsing.Or([(hasattr(t,<sp/></highlight><highlight class="stringliteral">'parseString'</highlight><highlight class="normal">)<sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>t)<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>pyparsing.Literal(t)<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>t<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a6bd95a7f702f668696ab6e88555da23d" kindref="member">terminators</ref>])(</highlight><highlight class="stringliteral">'terminator'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="675"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stringEnd<sp/>=<sp/>pyparsing.stringEnd<sp/>^<sp/></highlight><highlight class="stringliteral">'\nEOF'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="676"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a295de6e6060359049be89b5cdb6c09b1" kindref="member">multilineCommand</ref><sp/>=<sp/>pyparsing.Or([pyparsing.Keyword(c,<sp/>caseless=self.<ref refid="classcmd2_1_1Cmd_1a10de661ca23b94cd93972c260523c8a0" kindref="member">case_insensitive</ref>)<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>c<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a05fbd7501cbc1f911e9a4925e5f0804a" kindref="member">multilineCommands</ref>])(</highlight><highlight class="stringliteral">'multilineCommand'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="677"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>oneLineCommand<sp/>=<sp/>(~self.<ref refid="classcmd2_1_1Cmd_1a295de6e6060359049be89b5cdb6c09b1" kindref="member">multilineCommand</ref><sp/>+<sp/>pyparsing.Word(self.<ref refid="classcmd2_1_1Cmd_1a866c4b8895784a477d36bebfecfa397e" kindref="member">legalChars</ref>))(</highlight><highlight class="stringliteral">'command'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="678"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pipe<sp/>=<sp/>pyparsing.Keyword(</highlight><highlight class="stringliteral">'|'</highlight><highlight class="normal">,<sp/>identChars=</highlight><highlight class="stringliteral">'|'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="679"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.commentGrammars.ignore(pyparsing.quotedString).setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="680"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>doNotParse<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1ae6adde6cd440331e4add0bdf8c2c61d0" kindref="member">commentGrammars</ref><sp/>|<sp/>self.<ref refid="classcmd2_1_1Cmd_1a0333f71a3291354d3238a4853ec5e762" kindref="member">commentInProgress</ref><sp/>|<sp/>pyparsing.quotedString</highlight></codeline> -<codeline lineno="681"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>afterElements<sp/>=<sp/>\</highlight></codeline> -<codeline lineno="682"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pyparsing.Optional(pipe<sp/>+<sp/>pyparsing.SkipTo(outputParser<sp/>^<sp/>stringEnd,<sp/>ignore=doNotParse)(</highlight><highlight class="stringliteral">'pipeTo'</highlight><highlight class="normal">))<sp/>+<sp/>\</highlight></codeline> -<codeline lineno="683"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pyparsing.Optional(outputParser<sp/>+<sp/>pyparsing.SkipTo(stringEnd,<sp/>ignore=doNotParse).setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/>x[0].strip())(</highlight><highlight class="stringliteral">'outputTo'</highlight><highlight class="normal">))</highlight></codeline> -<codeline lineno="684"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a10de661ca23b94cd93972c260523c8a0" kindref="member">case_insensitive</ref>:</highlight></codeline> -<codeline lineno="685"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.multilineCommand.setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/>x[0].lower())</highlight></codeline> -<codeline lineno="686"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>oneLineCommand.setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/>x[0].lower())</highlight></codeline> -<codeline lineno="687"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a395ee1f733c5faeb66e74b308cbc5e63" kindref="member">blankLinesAllowed</ref>:</highlight></codeline> -<codeline lineno="688"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ab45987033aafd0458078de49d4cf1fb5" kindref="member">blankLineTerminationParser</ref><sp/>=<sp/>pyparsing.NoMatch</highlight></codeline> -<codeline lineno="689"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="690"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a826ac7c82dd02c99be27940c179c9af3" kindref="member">blankLineTerminator</ref><sp/>=<sp/>(pyparsing.lineEnd<sp/>+<sp/>pyparsing.lineEnd)(</highlight><highlight class="stringliteral">'terminator'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="691"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.blankLineTerminator.setResultsName(</highlight><highlight class="stringliteral">'terminator'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="692"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ab45987033aafd0458078de49d4cf1fb5" kindref="member">blankLineTerminationParser</ref><sp/>=<sp/>((self.<ref refid="classcmd2_1_1Cmd_1a295de6e6060359049be89b5cdb6c09b1" kindref="member">multilineCommand</ref><sp/>^<sp/>oneLineCommand)<sp/>+<sp/>pyparsing.SkipTo(self.<ref refid="classcmd2_1_1Cmd_1a826ac7c82dd02c99be27940c179c9af3" kindref="member">blankLineTerminator</ref>,<sp/>ignore=doNotParse).setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/>x[0].strip())(</highlight><highlight class="stringliteral">'args'</highlight><highlight class="normal">)<sp/>+<sp/>self.<ref refid="classcmd2_1_1Cmd_1a826ac7c82dd02c99be27940c179c9af3" kindref="member">blankLineTerminator</ref>)(</highlight><highlight class="stringliteral">'statement'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="693"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a501ba802672b553037e265760319cfe1" kindref="member">multilineParser</ref><sp/>=<sp/>(((self.<ref refid="classcmd2_1_1Cmd_1a295de6e6060359049be89b5cdb6c09b1" kindref="member">multilineCommand</ref><sp/>^<sp/>oneLineCommand)<sp/>+<sp/>pyparsing.SkipTo(terminatorParser,<sp/>ignore=doNotParse).setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/>x[0].strip())(</highlight><highlight class="stringliteral">'args'</highlight><highlight class="normal">)<sp/>+<sp/>terminatorParser)(</highlight><highlight class="stringliteral">'statement'</highlight><highlight class="normal">)<sp/>+</highlight></codeline> -<codeline lineno="694"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pyparsing.SkipTo(outputParser<sp/>^<sp/>pipe<sp/>^<sp/>stringEnd,<sp/>ignore=doNotParse).setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/>x[0].strip())(</highlight><highlight class="stringliteral">'suffix'</highlight><highlight class="normal">)<sp/>+<sp/>afterElements)</highlight></codeline> -<codeline lineno="695"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.multilineParser.ignore(self.<ref refid="classcmd2_1_1Cmd_1a0333f71a3291354d3238a4853ec5e762" kindref="member">commentInProgress</ref>)</highlight></codeline> -<codeline lineno="696"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a58e84cc1e072fda53b98ba9ed4376540" kindref="member">singleLineParser</ref><sp/>=<sp/>((oneLineCommand<sp/>+<sp/>pyparsing.SkipTo(terminatorParser<sp/>^<sp/>stringEnd<sp/>^<sp/>pipe<sp/>^<sp/>outputParser,<sp/>ignore=doNotParse).setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:x[0].strip())(</highlight><highlight class="stringliteral">'args'</highlight><highlight class="normal">))(</highlight><highlight class="stringliteral">'statement'</highlight><highlight class="normal">)<sp/>+</highlight></codeline> -<codeline lineno="697"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pyparsing.Optional(terminatorParser)<sp/>+<sp/>afterElements)</highlight></codeline> -<codeline lineno="698"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#self.multilineParser<sp/>=<sp/>self.multilineParser.setResultsName('multilineParser')</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="699"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#self.singleLineParser<sp/>=<sp/>self.singleLineParser.setResultsName('singleLineParser')</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="700"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ab45987033aafd0458078de49d4cf1fb5" kindref="member">blankLineTerminationParser</ref><sp/>=<sp/>self.blankLineTerminationParser.setResultsName(</highlight><highlight class="stringliteral">'statement'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="701"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a60c8c9f51ca086f83a2563b7c5e93421" kindref="member">parser</ref><sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a794ce4cfd06ddd8df24df33d9f116a65" kindref="member">prefixParser</ref><sp/>+<sp/>(</highlight></codeline> -<codeline lineno="702"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stringEnd<sp/>|</highlight></codeline> -<codeline lineno="703"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a501ba802672b553037e265760319cfe1" kindref="member">multilineParser</ref><sp/>|</highlight></codeline> -<codeline lineno="704"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a58e84cc1e072fda53b98ba9ed4376540" kindref="member">singleLineParser</ref><sp/>|</highlight></codeline> -<codeline lineno="705"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ab45987033aafd0458078de49d4cf1fb5" kindref="member">blankLineTerminationParser</ref><sp/>|<sp/></highlight></codeline> -<codeline lineno="706"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a295de6e6060359049be89b5cdb6c09b1" kindref="member">multilineCommand</ref><sp/>+<sp/>pyparsing.SkipTo(stringEnd,<sp/>ignore=doNotParse)</highlight></codeline> -<codeline lineno="707"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)</highlight></codeline> -<codeline lineno="708"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.parser.ignore(self.<ref refid="classcmd2_1_1Cmd_1ae6adde6cd440331e4add0bdf8c2c61d0" kindref="member">commentGrammars</ref>)</highlight></codeline> -<codeline lineno="709"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="710"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>inputMark<sp/>=<sp/>pyparsing.Literal(</highlight><highlight class="stringliteral">'<'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="711"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>inputMark.setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="712"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>fileName<sp/>=<sp/>pyparsing.Word(self.<ref refid="classcmd2_1_1Cmd_1a866c4b8895784a477d36bebfecfa397e" kindref="member">legalChars</ref><sp/>+<sp/></highlight><highlight class="stringliteral">'/\\'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="713"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>inputFrom<sp/>=<sp/>fileName(</highlight><highlight class="stringliteral">'inputFrom'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="714"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>inputFrom.setParseAction(replace_with_file_contents)</highlight></codeline> -<codeline lineno="715"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>a<sp/>not-entirely-satisfactory<sp/>way<sp/>of<sp/>distinguishing<sp/><<sp/>as<sp/>in<sp/>"import<sp/>from"<sp/>from<sp/><</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="716"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>as<sp/>in<sp/>"lesser<sp/>than"</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="717"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a984d7a052143f938fa7894fbd44632d2" kindref="member">inputParser</ref><sp/>=<sp/>inputMark<sp/>+<sp/>pyparsing.Optional(inputFrom)<sp/>+<sp/>pyparsing.Optional(</highlight><highlight class="stringliteral">'>'</highlight><highlight class="normal">)<sp/>+<sp/>\</highlight></codeline> -<codeline lineno="718"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pyparsing.Optional(fileName)<sp/>+<sp/>(pyparsing.stringEnd<sp/>|<sp/></highlight><highlight class="stringliteral">'|'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="719"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.inputParser.ignore(self.<ref refid="classcmd2_1_1Cmd_1a0333f71a3291354d3238a4853ec5e762" kindref="member">commentInProgress</ref>)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="720"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="721" refid="classcmd2_1_1Cmd_1a794ada2c7a6027d079d6a5bae38fea2b" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a794ada2c7a6027d079d6a5bae38fea2b" kindref="member">preparse</ref>(self,<sp/>raw,<sp/>**kwargs):</highlight></codeline> -<codeline lineno="722"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>raw</highlight></codeline> -<codeline lineno="723" refid="classcmd2_1_1Cmd_1aeda7fe76e7ecbc032386722e8f5cae3a" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1aeda7fe76e7ecbc032386722e8f5cae3a" kindref="member">postparse</ref>(self,<sp/>parseResult):</highlight></codeline> -<codeline lineno="724"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>parseResult</highlight></codeline> -<codeline lineno="725"><highlight class="normal"><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="726" refid="classcmd2_1_1Cmd_1a1d2749139a96bd29ddabc6cb0dfd4c00" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a1d2749139a96bd29ddabc6cb0dfd4c00" kindref="member">parsed</ref>(self,<sp/>raw,<sp/>**kwargs):</highlight></codeline> -<codeline lineno="727"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>isinstance(raw,<sp/>ParsedString):</highlight></codeline> -<codeline lineno="728"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>p<sp/>=<sp/>raw</highlight></codeline> -<codeline lineno="729"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="730"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>preparse<sp/>is<sp/>an<sp/>overridable<sp/>hook;<sp/>default<sp/>makes<sp/>no<sp/>changes</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="731"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>s<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a794ada2c7a6027d079d6a5bae38fea2b" kindref="member">preparse</ref>(raw,<sp/>**kwargs)</highlight></codeline> -<codeline lineno="732"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>s<sp/>=<sp/>self.inputParser.transformString(s.lstrip())</highlight></codeline> -<codeline lineno="733"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>s<sp/>=<sp/>self.commentGrammars.transformString(s)</highlight></codeline> -<codeline lineno="734"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(shortcut,<sp/>expansion)<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad8ccfbcd2a4eb800f040fcdbd26089df" kindref="member">shortcuts</ref>:</highlight></codeline> -<codeline lineno="735"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>s.lower().startswith(shortcut):</highlight></codeline> -<codeline lineno="736"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>s<sp/>=<sp/>s.replace(shortcut,<sp/>expansion<sp/>+<sp/></highlight><highlight class="stringliteral">'<sp/>'</highlight><highlight class="normal">,<sp/>1)</highlight></codeline> -<codeline lineno="737"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="738"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>self.parser.parseString(s)</highlight></codeline> -<codeline lineno="739"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result[</highlight><highlight class="stringliteral">'raw'</highlight><highlight class="normal">]<sp/>=<sp/>raw<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="740"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result[</highlight><highlight class="stringliteral">'command'</highlight><highlight class="normal">]<sp/>=<sp/>result.multilineCommand<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>result.command<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="741"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1aeda7fe76e7ecbc032386722e8f5cae3a" kindref="member">postparse</ref>(result)</highlight></codeline> -<codeline lineno="742"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>p<sp/>=<sp/><ref refid="classcmd2_1_1ParsedString" kindref="compound">ParsedString</ref>(result.args)</highlight></codeline> -<codeline lineno="743"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>p.parsed<sp/>=<sp/>result</highlight></codeline> -<codeline lineno="744"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>p.parser<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a1d2749139a96bd29ddabc6cb0dfd4c00" kindref="member">parsed</ref></highlight></codeline> -<codeline lineno="745"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(key,<sp/>val)<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>kwargs.items():</highlight></codeline> -<codeline lineno="746"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>p.parsed[key]<sp/>=<sp/>val</highlight></codeline> -<codeline lineno="747"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>p</highlight></codeline> -<codeline lineno="748"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="749" refid="classcmd2_1_1Cmd_1ab021b9befbc198bc266b1a439cdc44e6" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1ab021b9befbc198bc266b1a439cdc44e6" kindref="member">postparsing_precmd</ref>(self,<sp/>statement):</highlight></codeline> -<codeline lineno="750"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/>0</highlight></codeline> -<codeline lineno="751"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>stop,<sp/>statement</highlight></codeline> -<codeline lineno="752" refid="classcmd2_1_1Cmd_1ae64756253f4ef8494ad3cd920f749eb6" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1ae64756253f4ef8494ad3cd920f749eb6" kindref="member">postparsing_postcmd</ref>(self,<sp/>stop):</highlight></codeline> -<codeline lineno="753"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>stop</highlight></codeline> -<codeline lineno="754"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="755" refid="classcmd2_1_1Cmd_1a7fbb17b136654f705387ede1fb685a3e" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a7fbb17b136654f705387ede1fb685a3e" kindref="member">func_named</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="756"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="757"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>target<sp/>=<sp/></highlight><highlight class="stringliteral">'do_'</highlight><highlight class="normal"><sp/>+<sp/>arg</highlight></codeline> -<codeline lineno="758"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>target<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>dir(self):</highlight></codeline> -<codeline lineno="759"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>target</highlight></codeline> -<codeline lineno="760"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="761"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a810ba12198cbbc4e38643c83278956f6" kindref="member">abbrev</ref>:<sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>accept<sp/>shortened<sp/>versions<sp/>of<sp/>commands</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="762"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>funcs<sp/>=<sp/>[fname<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>fname<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a8ccd464e255a798b587637f9b812dbcd" kindref="member">keywords</ref><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>fname.startswith(arg)]</highlight></codeline> -<codeline lineno="763"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>len(funcs)<sp/>==<sp/>1:</highlight></codeline> -<codeline lineno="764"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/></highlight><highlight class="stringliteral">'do_'</highlight><highlight class="normal"><sp/>+<sp/>funcs[0]</highlight></codeline> -<codeline lineno="765"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result</highlight></codeline> -<codeline lineno="766" refid="classcmd2_1_1Cmd_1ac188a434c9c7d5c939e971a3d42c1c63" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1ac188a434c9c7d5c939e971a3d42c1c63" kindref="member">onecmd_plus_hooks</ref>(self,<sp/>line):</highlight></codeline> -<codeline lineno="767"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>The<sp/>outermost<sp/>level<sp/>of<sp/>try/finally<sp/>nesting<sp/>can<sp/>be<sp/>condensed<sp/>once</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="768"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Python<sp/>2.4<sp/>support<sp/>can<sp/>be<sp/>dropped.</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="769"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/>0</highlight></codeline> -<codeline lineno="770"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="771"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="772"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>statement<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a9f07c787a0f421ce9186b404fed63c54" kindref="member">complete_statement</ref>(line)</highlight></codeline> -<codeline lineno="773"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(stop,<sp/>statement)<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1ab021b9befbc198bc266b1a439cdc44e6" kindref="member">postparsing_precmd</ref>(statement)</highlight></codeline> -<codeline lineno="774"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>stop:</highlight></codeline> -<codeline lineno="775"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1ae64756253f4ef8494ad3cd920f749eb6" kindref="member">postparsing_postcmd</ref>(stop)</highlight></codeline> -<codeline lineno="776"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>statement.parsed.command<sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a35586c262b272917f6ecae8e76fca6b9" kindref="member">excludeFromHistory</ref>:</highlight></codeline> -<codeline lineno="777"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.history.append(statement.parsed.raw)<sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="778"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="779"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a46d1bc05e01f5eced432f00c9934db88" kindref="member">redirect_output</ref>(statement)</highlight></codeline> -<codeline lineno="780"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>timestart<sp/>=<sp/>datetime.datetime.now()</highlight></codeline> -<codeline lineno="781"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>statement<sp/>=<sp/>self.precmd(statement)</highlight></codeline> -<codeline lineno="782"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a7b46b9fabe42bf5ec481ab5ea68effcd" kindref="member">onecmd</ref>(statement)</highlight></codeline> -<codeline lineno="783"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/>self.postcmd(stop,<sp/>statement)</highlight></codeline> -<codeline lineno="784"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a2d83899c5edb8c1296cb90b0fb282de7" kindref="member">timing</ref>:</highlight></codeline> -<codeline lineno="785"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a122b67681a0db23863f5ddaa7a687975" kindref="member">pfeedback</ref>(</highlight><highlight class="stringliteral">'Elapsed:<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>str(datetime.datetime.now()<sp/>-<sp/>timestart))</highlight></codeline> -<codeline lineno="786"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">finally</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="787"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a8b44f9a5a3197613178b4a8fb1804ef7" kindref="member">restore_output</ref>(statement)</highlight></codeline> -<codeline lineno="788"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>EmptyStatement:</highlight></codeline> -<codeline lineno="789"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0</highlight></codeline> -<codeline lineno="790"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>Exception,<sp/>e:</highlight></codeline> -<codeline lineno="791"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a118c16455f28dbd3918b565bca086db4" kindref="member">perror</ref>(str(e),<sp/>statement)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="792"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">finally</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="793"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1ae64756253f4ef8494ad3cd920f749eb6" kindref="member">postparsing_postcmd</ref>(stop)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="794" refid="classcmd2_1_1Cmd_1a9f07c787a0f421ce9186b404fed63c54" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a9f07c787a0f421ce9186b404fed63c54" kindref="member">complete_statement</ref>(self,<sp/>line):</highlight></codeline> -<codeline lineno="795"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""Keep<sp/>accepting<sp/>lines<sp/>of<sp/>input<sp/>until<sp/>the<sp/>command<sp/>is<sp/>complete."""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="796"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>line)<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>(</highlight></codeline> -<codeline lineno="797"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>pyparsing.Or(self.<ref refid="classcmd2_1_1Cmd_1ae6adde6cd440331e4add0bdf8c2c61d0" kindref="member">commentGrammars</ref>).</highlight></codeline> -<codeline lineno="798"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>x:<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">).transformString(line)):</highlight></codeline> -<codeline lineno="799"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>EmptyStatement</highlight></codeline> -<codeline lineno="800"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>statement<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a1d2749139a96bd29ddabc6cb0dfd4c00" kindref="member">parsed</ref>(line)</highlight></codeline> -<codeline lineno="801"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/>statement.parsed.multilineCommand<sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>(statement.parsed.terminator<sp/>==<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="802"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>statement<sp/>=<sp/></highlight><highlight class="stringliteral">'%s\n%s'</highlight><highlight class="normal"><sp/>%<sp/>(statement.parsed.raw,<sp/></highlight></codeline> -<codeline lineno="803"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ab2b46bf4fdbb22536322417117eebf16" kindref="member">pseudo_raw_input</ref>(self.<ref refid="classcmd2_1_1Cmd_1a186ca22e76dc63ad9d8a95cfaeb4f7fd" kindref="member">continuation_prompt</ref>))<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="804"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>statement<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a1d2749139a96bd29ddabc6cb0dfd4c00" kindref="member">parsed</ref>(statement)</highlight></codeline> -<codeline lineno="805"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>statement.parsed.command:</highlight></codeline> -<codeline lineno="806"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>EmptyStatement</highlight></codeline> -<codeline lineno="807"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>statement</highlight></codeline> -<codeline lineno="808"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="809" refid="classcmd2_1_1Cmd_1a46d1bc05e01f5eced432f00c9934db88" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a46d1bc05e01f5eced432f00c9934db88" kindref="member">redirect_output</ref>(self,<sp/>statement):</highlight></codeline> -<codeline lineno="810"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>statement.parsed.pipeTo:</highlight></codeline> -<codeline lineno="811"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad480d9102b3a5e4c8c5541d2c205a1ad" kindref="member">kept_state</ref><sp/>=<sp/><ref refid="classcmd2_1_1Statekeeper" kindref="compound">Statekeeper</ref>(self,<sp/>(</highlight><highlight class="stringliteral">'stdout'</highlight><highlight class="normal">,))</highlight></codeline> -<codeline lineno="812"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a86a3b99c482252a9c9e7fc283c7eae5d" kindref="member">kept_sys</ref><sp/>=<sp/><ref refid="classcmd2_1_1Statekeeper" kindref="compound">Statekeeper</ref>(sys,<sp/>(</highlight><highlight class="stringliteral">'stdout'</highlight><highlight class="normal">,))</highlight></codeline> -<codeline lineno="813"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ac1dac1bcd74f78671161775a95d74c0a" kindref="member">redirect</ref><sp/>=<sp/>subprocess.Popen(statement.parsed.pipeTo,<sp/>shell=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>stdout=subprocess.PIPE,<sp/>stdin=subprocess.PIPE)</highlight></codeline> -<codeline lineno="814"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sys.stdout<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a2a71ccfd9f189e17db765b603f2c9a78" kindref="member">stdout</ref><sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1ac1dac1bcd74f78671161775a95d74c0a" kindref="member">redirect</ref>.stdin</highlight></codeline> -<codeline lineno="815"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">elif</highlight><highlight class="normal"><sp/>statement.parsed.output:</highlight></codeline> -<codeline lineno="816"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>statement.parsed.outputTo)<sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>can_clip):</highlight></codeline> -<codeline lineno="817"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>EnvironmentError(</highlight><highlight class="stringliteral">'Cannot<sp/>redirect<sp/>to<sp/>paste<sp/>buffer;<sp/>install<sp/>``xclip``<sp/>and<sp/>re-run<sp/>to<sp/>enable'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="818"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad480d9102b3a5e4c8c5541d2c205a1ad" kindref="member">kept_state</ref><sp/>=<sp/><ref refid="classcmd2_1_1Statekeeper" kindref="compound">Statekeeper</ref>(self,<sp/>(</highlight><highlight class="stringliteral">'stdout'</highlight><highlight class="normal">,))<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="819"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a86a3b99c482252a9c9e7fc283c7eae5d" kindref="member">kept_sys</ref><sp/>=<sp/><ref refid="classcmd2_1_1Statekeeper" kindref="compound">Statekeeper</ref>(sys,<sp/>(</highlight><highlight class="stringliteral">'stdout'</highlight><highlight class="normal">,))</highlight></codeline> -<codeline lineno="820"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>statement.parsed.outputTo:</highlight></codeline> -<codeline lineno="821"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>mode<sp/>=<sp/></highlight><highlight class="stringliteral">'w'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="822"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>statement.parsed.output<sp/>==<sp/>2<sp/>*<sp/>self.<ref refid="classcmd2_1_1Cmd_1a64b810574dab9ec12100c5344dc66735" kindref="member">redirector</ref>:</highlight></codeline> -<codeline lineno="823"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>mode<sp/>=<sp/></highlight><highlight class="stringliteral">'a'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="824"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sys.stdout<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a2a71ccfd9f189e17db765b603f2c9a78" kindref="member">stdout</ref><sp/>=<sp/>open(os.path.expanduser(statement.parsed.outputTo),<sp/>mode)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="825"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="826"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sys.stdout<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a2a71ccfd9f189e17db765b603f2c9a78" kindref="member">stdout</ref><sp/>=<sp/>tempfile.TemporaryFile(mode=</highlight><highlight class="stringliteral">"w+"</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="827"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>statement.parsed.output<sp/>==<sp/></highlight><highlight class="stringliteral">'>>'</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="828"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(<ref refid="namespacecmd2_1a9f1495f6c72f7d8c0dbb0f9f22029763" kindref="member">get_paste_buffer</ref>())</highlight></codeline> -<codeline lineno="829"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="830" refid="classcmd2_1_1Cmd_1a8b44f9a5a3197613178b4a8fb1804ef7" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a8b44f9a5a3197613178b4a8fb1804ef7" kindref="member">restore_output</ref>(self,<sp/>statement):</highlight></codeline> -<codeline lineno="831"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad480d9102b3a5e4c8c5541d2c205a1ad" kindref="member">kept_state</ref>:</highlight></codeline> -<codeline lineno="832"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>statement.parsed.output:</highlight></codeline> -<codeline lineno="833"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>statement.parsed.outputTo:</highlight></codeline> -<codeline lineno="834"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.seek(0)</highlight></codeline> -<codeline lineno="835"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespacecmd2_1a514a20ceb8ab40dd89d2df2dd5ff87a0" kindref="member">write_to_paste_buffer</ref>(self.stdout.read())</highlight></codeline> -<codeline lineno="836"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">elif</highlight><highlight class="normal"><sp/>statement.parsed.pipeTo:</highlight></codeline> -<codeline lineno="837"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>result<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.redirect.communicate():<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="838"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.kept_state.stdout.write(result<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="839"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.close()</highlight></codeline> -<codeline lineno="840"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.kept_state.restore()<sp/><sp/></highlight></codeline> -<codeline lineno="841"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.kept_sys.restore()</highlight></codeline> -<codeline lineno="842"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad480d9102b3a5e4c8c5541d2c205a1ad" kindref="member">kept_state</ref><sp/>=<sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="843"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="844" refid="classcmd2_1_1Cmd_1a7b46b9fabe42bf5ec481ab5ea68effcd" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a7b46b9fabe42bf5ec481ab5ea68effcd" kindref="member">onecmd</ref>(self,<sp/>line):</highlight></codeline> -<codeline lineno="845"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""Interpret<sp/>the<sp/>argument<sp/>as<sp/>though<sp/>it<sp/>had<sp/>been<sp/>typed<sp/>in<sp/>response</highlight></codeline> -<codeline lineno="846"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>to<sp/>the<sp/>prompt.</highlight></codeline> -<codeline lineno="847"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="848"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>This<sp/>may<sp/>be<sp/>overridden,<sp/>but<sp/>should<sp/>not<sp/>normally<sp/>need<sp/>to<sp/>be;</highlight></codeline> -<codeline lineno="849"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>see<sp/>the<sp/>precmd()<sp/>and<sp/>postcmd()<sp/>methods<sp/>for<sp/>useful<sp/>execution<sp/>hooks.</highlight></codeline> -<codeline lineno="850"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>The<sp/>return<sp/>value<sp/>is<sp/>a<sp/>flag<sp/>indicating<sp/>whether<sp/>interpretation<sp/>of</highlight></codeline> -<codeline lineno="851"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>commands<sp/>by<sp/>the<sp/>interpreter<sp/>should<sp/>stop.</highlight></codeline> -<codeline lineno="852"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="853"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>This<sp/>(`cmd2`)<sp/>version<sp/>of<sp/>`onecmd`<sp/>already<sp/>override's<sp/>`cmd`'s<sp/>`onecmd`.</highlight></codeline> -<codeline lineno="854" refid="classcmd2_1_1Cmd_1adaaec8df571e88463c3b8b02fefea8b2" refkind="member"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="855"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="856"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>statement<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a1d2749139a96bd29ddabc6cb0dfd4c00" kindref="member">parsed</ref>(line)</highlight></codeline> -<codeline lineno="857"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1adaaec8df571e88463c3b8b02fefea8b2" kindref="member">lastcmd</ref><sp/>=<sp/>statement.parsed.raw<sp/><sp/><sp/></highlight></codeline> -<codeline lineno="858"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>funcname<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a7fbb17b136654f705387ede1fb685a3e" kindref="member">func_named</ref>(statement.parsed.command)</highlight></codeline> -<codeline lineno="859"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>funcname:</highlight></codeline> -<codeline lineno="860"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1aea64b66ff75b5daaeef61a3dd583df99" kindref="member">_default</ref>(statement)</highlight></codeline> -<codeline lineno="861"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="862"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>func<sp/>=<sp/>getattr(self,<sp/>funcname)</highlight></codeline> -<codeline lineno="863"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>AttributeError:</highlight></codeline> -<codeline lineno="864"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1aea64b66ff75b5daaeef61a3dd583df99" kindref="member">_default</ref>(statement)</highlight></codeline> -<codeline lineno="865"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/>func(statement)<sp/></highlight></codeline> -<codeline lineno="866"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>stop<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="867"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="868" refid="classcmd2_1_1Cmd_1aea64b66ff75b5daaeef61a3dd583df99" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1aea64b66ff75b5daaeef61a3dd583df99" kindref="member">_default</ref>(self,<sp/>statement):</highlight></codeline> -<codeline lineno="869"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>=<sp/>statement.full_parsed_statement()</highlight></codeline> -<codeline lineno="870"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a7da859e33eae87d5069b96d366cf04b4" kindref="member">default_to_shell</ref>:</highlight></codeline> -<codeline lineno="871"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>os.system(arg)</highlight></codeline> -<codeline lineno="872"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>result:</highlight></codeline> -<codeline lineno="873"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1ae64756253f4ef8494ad3cd920f749eb6" kindref="member">postparsing_postcmd</ref>(</highlight><highlight class="keywordtype">None</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="874"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1ae64756253f4ef8494ad3cd920f749eb6" kindref="member">postparsing_postcmd</ref>(self.default(arg))</highlight></codeline> -<codeline lineno="875"><highlight class="normal"></highlight></codeline> -<codeline lineno="876" refid="classcmd2_1_1Cmd_1ab2b46bf4fdbb22536322417117eebf16" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1ab2b46bf4fdbb22536322417117eebf16" kindref="member">pseudo_raw_input</ref>(self,<sp/>prompt):</highlight></codeline> -<codeline lineno="877"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""copied<sp/>from<sp/>cmd's<sp/>cmdloop;<sp/>like<sp/>raw_input,<sp/>but<sp/>accounts<sp/>for<sp/>changed<sp/>stdin,<sp/>stdout"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="878"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="879"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1add0217858bbc4c268a5f2f27330ad1f8" kindref="member">use_rawinput</ref>:</highlight></codeline> -<codeline lineno="880"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="881"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>raw_input(prompt)</highlight></codeline> -<codeline lineno="882"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>EOFError:</highlight></codeline> -<codeline lineno="883"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/></highlight><highlight class="stringliteral">'EOF'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="884"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="885"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(prompt)</highlight></codeline> -<codeline lineno="886"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.flush()</highlight></codeline> -<codeline lineno="887"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>self.stdin.readline()</highlight></codeline> -<codeline lineno="888"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>len(line):</highlight></codeline> -<codeline lineno="889"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/></highlight><highlight class="stringliteral">'EOF'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="890"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="891"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>line[-1]<sp/>==<sp/></highlight><highlight class="stringliteral">'\n'</highlight><highlight class="normal">:<sp/></highlight><highlight class="comment">#<sp/>this<sp/>was<sp/>always<sp/>true<sp/>in<sp/>Cmd</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="892"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>line[:-1]<sp/></highlight></codeline> -<codeline lineno="893"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>line</highlight></codeline> -<codeline lineno="894"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="895" refid="classcmd2_1_1Cmd_1a392c5cd062c20d916c0cacc9cc36c022" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a392c5cd062c20d916c0cacc9cc36c022" kindref="member">_cmdloop</ref>(self,<sp/>intro=None):</highlight></codeline> -<codeline lineno="896"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""Repeatedly<sp/>issue<sp/>a<sp/>prompt,<sp/>accept<sp/>input,<sp/>parse<sp/>an<sp/>initial<sp/>prefix</highlight></codeline> -<codeline lineno="897"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>off<sp/>the<sp/>received<sp/>input,<sp/>and<sp/>dispatch<sp/>to<sp/>action<sp/>methods,<sp/>passing<sp/>them</highlight></codeline> -<codeline lineno="898" refid="classcmd2_1_1Cmd_1a4540b84ee5f75aa1f915042ac4f327dc" refkind="member"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>the<sp/>remainder<sp/>of<sp/>the<sp/>line<sp/>as<sp/>argument.</highlight></codeline> -<codeline lineno="899"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="900"><highlight class="normal"></highlight></codeline> -<codeline lineno="901"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>An<sp/>almost<sp/>perfect<sp/>copy<sp/>from<sp/>Cmd;<sp/>however,<sp/>the<sp/>pseudo_raw_input<sp/>portion</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="902"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>has<sp/>been<sp/>split<sp/>out<sp/>so<sp/>that<sp/>it<sp/>can<sp/>be<sp/>called<sp/>separately</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="903"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="904"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.preloop()</highlight></codeline> -<codeline lineno="905"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1add0217858bbc4c268a5f2f27330ad1f8" kindref="member">use_rawinput</ref><sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>self.completekey:</highlight></codeline> -<codeline lineno="906"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="907"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>readline</highlight></codeline> -<codeline lineno="908"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a4540b84ee5f75aa1f915042ac4f327dc" kindref="member">old_completer</ref><sp/>=<sp/>readline.get_completer()</highlight></codeline> -<codeline lineno="909"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>readline.set_completer(self.complete)</highlight></codeline> -<codeline lineno="910"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>readline.parse_and_bind(self.completekey+</highlight><highlight class="stringliteral">":<sp/>complete"</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="911"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>ImportError:</highlight></codeline> -<codeline lineno="912"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="913"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="914"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>intro<sp/></highlight><highlight class="keywordflow">is</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="915"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a3f1d7fcb42b72f182eed91009e0708c3" kindref="member">intro</ref><sp/>=<sp/>intro</highlight></codeline> -<codeline lineno="916"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a3f1d7fcb42b72f182eed91009e0708c3" kindref="member">intro</ref>:</highlight></codeline> -<codeline lineno="917"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(str(self.<ref refid="classcmd2_1_1Cmd_1a3f1d7fcb42b72f182eed91009e0708c3" kindref="member">intro</ref>)+</highlight><highlight class="stringliteral">"\n"</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="918"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="919"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>stop:</highlight></codeline> -<codeline lineno="920"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.cmdqueue:</highlight></codeline> -<codeline lineno="921"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>self.cmdqueue.pop(0)</highlight></codeline> -<codeline lineno="922"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="923"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1ab2b46bf4fdbb22536322417117eebf16" kindref="member">pseudo_raw_input</ref>(self.<ref refid="classcmd2_1_1Cmd_1ae9a33dc613b00f4d5b849c0d3521f2c3" kindref="member">prompt</ref>)</highlight></codeline> -<codeline lineno="924"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(self.<ref refid="classcmd2_1_1Cmd_1a417779ccb5de864826f97a959bd196d3" kindref="member">echo</ref>)<sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>(isinstance(self.<ref refid="classcmd2_1_1Cmd_1a6f0eed071b4e9197cc4fa46a2c8f1457" kindref="member">stdin</ref>,<sp/>file)):</highlight></codeline> -<codeline lineno="925"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(line<sp/>+<sp/></highlight><highlight class="stringliteral">'\n'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="926"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1ac188a434c9c7d5c939e971a3d42c1c63" kindref="member">onecmd_plus_hooks</ref>(line)</highlight></codeline> -<codeline lineno="927"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.postloop()</highlight></codeline> -<codeline lineno="928"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">finally</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="929"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1add0217858bbc4c268a5f2f27330ad1f8" kindref="member">use_rawinput</ref><sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>self.completekey:</highlight></codeline> -<codeline lineno="930"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="931"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">import</highlight><highlight class="normal"><sp/>readline</highlight></codeline> -<codeline lineno="932"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>readline.set_completer(self.<ref refid="classcmd2_1_1Cmd_1a4540b84ee5f75aa1f915042ac4f327dc" kindref="member">old_completer</ref>)</highlight></codeline> -<codeline lineno="933"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>ImportError:</highlight></codeline> -<codeline lineno="934"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="935"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>stop</highlight></codeline> -<codeline lineno="936"><highlight class="normal"></highlight></codeline> -<codeline lineno="937" refid="classcmd2_1_1Cmd_1ab2783ec53899e2b4c0abda7007471e64" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1ab2783ec53899e2b4c0abda7007471e64" kindref="member">do_EOF</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="938"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1abe14bda0dc50326876c6a761cefba702" kindref="member">_STOP_SCRIPT_NO_EXIT</ref><sp/></highlight><highlight class="comment">#<sp/>End<sp/>of<sp/>script;<sp/>should<sp/>not<sp/>exit<sp/>app</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="939" refid="classcmd2_1_1Cmd_1a489ae23e2c2dc31c04eab9287c9339fa" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>do_eof<sp/>=<sp/>do_EOF</highlight></codeline> -<codeline lineno="940"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="941" refid="classcmd2_1_1Cmd_1a27f6387585848a575e95c936ce97c4cf" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a27f6387585848a575e95c936ce97c4cf" kindref="member">do_quit</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="942"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a7a8e8257d7d35c7813355cdefb62b85b" kindref="member">_STOP_AND_EXIT</ref></highlight></codeline> -<codeline lineno="943" refid="classcmd2_1_1Cmd_1a7407cf3f70091dc1ade5acb856585850" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>do_exit<sp/>=<sp/>do_quit</highlight></codeline> -<codeline lineno="944" refid="classcmd2_1_1Cmd_1ad938266e8224edd7a6e681b9f4416cb5" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>do_q<sp/>=<sp/>do_quit</highlight></codeline> -<codeline lineno="945"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="946" refid="classcmd2_1_1Cmd_1a28cd403d962038aca658344673a5ab38" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a28cd403d962038aca658344673a5ab38" kindref="member">select</ref>(self,<sp/>options,<sp/>prompt='Your<sp/>choice?<sp/>'):</highlight></codeline> -<codeline lineno="947"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Presents<sp/>a<sp/>numbered<sp/>menu<sp/>to<sp/>the<sp/>user.<sp/><sp/>Modelled<sp/>after</highlight></codeline> -<codeline lineno="948"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>the<sp/>bash<sp/>shell's<sp/>SELECT.<sp/><sp/>Returns<sp/>the<sp/>item<sp/>chosen.</highlight></codeline> -<codeline lineno="949"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="950"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Argument<sp/>``options``<sp/>can<sp/>be:</highlight></codeline> -<codeline lineno="951"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="952"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>|<sp/>a<sp/>single<sp/>string<sp/>-><sp/>will<sp/>be<sp/>split<sp/>into<sp/>one-word<sp/>options</highlight></codeline> -<codeline lineno="953"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>|<sp/>a<sp/>list<sp/>of<sp/>strings<sp/>-><sp/>will<sp/>be<sp/>offered<sp/>as<sp/>options</highlight></codeline> -<codeline lineno="954"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>|<sp/>a<sp/>list<sp/>of<sp/>tuples<sp/>-><sp/>interpreted<sp/>as<sp/>(value,<sp/>text),<sp/>so<sp/></highlight></codeline> -<codeline lineno="955"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>that<sp/>the<sp/>return<sp/>value<sp/>can<sp/>differ<sp/>from</highlight></codeline> -<codeline lineno="956"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>the<sp/>text<sp/>advertised<sp/>to<sp/>the<sp/>user<sp/>'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="957"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>isinstance(options,<sp/>basestring):</highlight></codeline> -<codeline lineno="958"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>options<sp/>=<sp/>zip(options.split(),<sp/>options.split())</highlight></codeline> -<codeline lineno="959"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>fulloptions<sp/>=<sp/>[]</highlight></codeline> -<codeline lineno="960"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>opt<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>options:</highlight></codeline> -<codeline lineno="961"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>isinstance(opt,<sp/>basestring):</highlight></codeline> -<codeline lineno="962"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>fulloptions.append((opt,<sp/>opt))</highlight></codeline> -<codeline lineno="963"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="964"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="965"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>fulloptions.append((opt[0],<sp/>opt[1]))</highlight></codeline> -<codeline lineno="966"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>IndexError:</highlight></codeline> -<codeline lineno="967"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>fulloptions.append((opt[0],<sp/>opt[0]))</highlight></codeline> -<codeline lineno="968"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(idx,<sp/>(value,<sp/>text))<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>enumerate(fulloptions):</highlight></codeline> -<codeline lineno="969"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad8b5d33873f9b515e33f83a616d0828f" kindref="member">poutput</ref>(</highlight><highlight class="stringliteral">'<sp/><sp/>%2d.<sp/>%s\n'</highlight><highlight class="normal"><sp/>%<sp/>(idx+1,<sp/>text))</highlight></codeline> -<codeline lineno="970"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="971"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>response<sp/>=<sp/>raw_input(prompt)</highlight></codeline> -<codeline lineno="972"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="973"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>response<sp/>=<sp/>int(response)</highlight></codeline> -<codeline lineno="974"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>fulloptions[response<sp/>-<sp/>1][0]</highlight></codeline> -<codeline lineno="975"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="976"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>ValueError:</highlight></codeline> -<codeline lineno="977"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"><sp/></highlight><highlight class="comment">#<sp/>loop<sp/>and<sp/>ask<sp/>again</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="978"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result</highlight></codeline> -<codeline lineno="979"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="980"><highlight class="normal"><sp/><sp/><sp/><sp/>@<ref refid="namespacecmd2_1a863be2c5e3b9fdec03710fd550801c22" kindref="member">options</ref>([make_option(</highlight><highlight class="stringliteral">'-l'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'--long'</highlight><highlight class="normal">,<sp/>action=</highlight><highlight class="stringliteral">"store_true"</highlight><highlight class="normal">,</highlight></codeline> -<codeline lineno="981" refid="classcmd2_1_1Cmd_1a9db85d1db5ea30170d540102f1206b1f" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>help=</highlight><highlight class="stringliteral">"describe<sp/>function<sp/>of<sp/>parameter"</highlight><highlight class="normal">)])<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="982" refid="classcmd2_1_1Cmd_1a4816ba13212f079e4b1e865d20041983" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a4816ba13212f079e4b1e865d20041983" kindref="member">do_show</ref>(self,<sp/>arg,<sp/>opts):</highlight></codeline> -<codeline lineno="983"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Shows<sp/>value<sp/>of<sp/>a<sp/>parameter.'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="984"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>param<sp/>=<sp/>arg.strip().lower()</highlight></codeline> -<codeline lineno="985"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>{}</highlight></codeline> -<codeline lineno="986"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>maxlen<sp/>=<sp/>0</highlight></codeline> -<codeline lineno="987"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>p<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a6cec2f634666d15d032d4c113e654c3c" kindref="member">settable</ref>:</highlight></codeline> -<codeline lineno="988"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>param)<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>p.startswith(param):</highlight></codeline> -<codeline lineno="989"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result[p]<sp/>=<sp/></highlight><highlight class="stringliteral">'%s:<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>(p,<sp/>str(getattr(self,<sp/>p)))</highlight></codeline> -<codeline lineno="990"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>maxlen<sp/>=<sp/>max(maxlen,<sp/>len(result[p]))</highlight></codeline> -<codeline lineno="991"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>result:</highlight></codeline> -<codeline lineno="992"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>p<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>sorted(result):</highlight></codeline> -<codeline lineno="993"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>opts.long:</highlight></codeline> -<codeline lineno="994"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad8b5d33873f9b515e33f83a616d0828f" kindref="member">poutput</ref>(</highlight><highlight class="stringliteral">'%s<sp/>#<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>(result[p].<ref refid="namespacecmd2_1ad4ac87ba068f9549b5a7735054df8065" kindref="member">ljust</ref>(maxlen),<sp/>self.<ref refid="classcmd2_1_1Cmd_1a6cec2f634666d15d032d4c113e654c3c" kindref="member">settable</ref>[p]))</highlight></codeline> -<codeline lineno="995"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="996"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad8b5d33873f9b515e33f83a616d0828f" kindref="member">poutput</ref>(result[p])</highlight></codeline> -<codeline lineno="997"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="998"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>NotImplementedError(</highlight><highlight class="stringliteral">"Parameter<sp/>'%s'<sp/>not<sp/>supported<sp/>(type<sp/>'show'<sp/>for<sp/>list<sp/>of<sp/>parameters)."</highlight><highlight class="normal"><sp/>%<sp/>param)</highlight></codeline> -<codeline lineno="999"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1000" refid="classcmd2_1_1Cmd_1a1587bec304ebe93070072d273da9bb31" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a1587bec304ebe93070072d273da9bb31" kindref="member">do_set</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="1001"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''</highlight></codeline> -<codeline lineno="1002"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Sets<sp/>a<sp/>cmd2<sp/>parameter.<sp/><sp/>Accepts<sp/>abbreviated<sp/>parameter<sp/>names<sp/>so<sp/>long</highlight></codeline> -<codeline lineno="1003"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>as<sp/>there<sp/>is<sp/>no<sp/>ambiguity.<sp/><sp/>Call<sp/>without<sp/>arguments<sp/>for<sp/>a<sp/>list<sp/>of<sp/></highlight></codeline> -<codeline lineno="1004"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>settable<sp/>parameters<sp/>with<sp/>their<sp/>values.'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1005"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1006"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>statement,<sp/>paramName,<sp/>val<sp/>=<sp/>arg.parsed.raw.split(</highlight><highlight class="keywordtype">None</highlight><highlight class="normal">,<sp/>2)</highlight></codeline> -<codeline lineno="1007"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>val<sp/>=<sp/>val.strip()</highlight></codeline> -<codeline lineno="1008"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>paramName<sp/>=<sp/>paramName.strip().lower()</highlight></codeline> -<codeline lineno="1009"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>paramName<sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a6cec2f634666d15d032d4c113e654c3c" kindref="member">settable</ref>:</highlight></codeline> -<codeline lineno="1010"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hits<sp/>=<sp/>[p<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>p<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a6cec2f634666d15d032d4c113e654c3c" kindref="member">settable</ref><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>p.startswith(paramName)]</highlight></codeline> -<codeline lineno="1011"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>len(hits)<sp/>==<sp/>1:</highlight></codeline> -<codeline lineno="1012"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>paramName<sp/>=<sp/>hits[0]</highlight></codeline> -<codeline lineno="1013"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1014"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a4816ba13212f079e4b1e865d20041983" kindref="member">do_show</ref>(paramName)</highlight></codeline> -<codeline lineno="1015"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>currentVal<sp/>=<sp/>getattr(self,<sp/>paramName)</highlight></codeline> -<codeline lineno="1016"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(val[0]<sp/>==<sp/>val[-1])<sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>val[0]<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>(</highlight><highlight class="stringliteral">"'"</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'"'</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="1017"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>val<sp/>=<sp/>val[1:-1]</highlight></codeline> -<codeline lineno="1018"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1019"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>val<sp/>=<sp/><ref refid="namespacecmd2_1a0880940558f324b3958aedfc430f592d" kindref="member">cast</ref>(currentVal,<sp/>val)</highlight></codeline> -<codeline lineno="1020"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>setattr(self,<sp/>paramName,<sp/>val)</highlight></codeline> -<codeline lineno="1021"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(</highlight><highlight class="stringliteral">'%s<sp/>-<sp/>was:<sp/>%s\nnow:<sp/>%s\n'</highlight><highlight class="normal"><sp/>%<sp/>(paramName,<sp/>currentVal,<sp/>val))</highlight></codeline> -<codeline lineno="1022"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>currentVal<sp/>!=<sp/>val:</highlight></codeline> -<codeline lineno="1023"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1024"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>onchange_hook<sp/>=<sp/>getattr(self,<sp/></highlight><highlight class="stringliteral">'_onchange_%s'</highlight><highlight class="normal"><sp/>%<sp/>paramName)</highlight></codeline> -<codeline lineno="1025"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>onchange_hook(old=currentVal,<sp/>new=val)</highlight></codeline> -<codeline lineno="1026"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>AttributeError:</highlight></codeline> -<codeline lineno="1027"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1028"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>(ValueError,<sp/>AttributeError,<sp/>NotSettableError),<sp/>e:</highlight></codeline> -<codeline lineno="1029"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a4816ba13212f079e4b1e865d20041983" kindref="member">do_show</ref>(arg)</highlight></codeline> -<codeline lineno="1030"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1031" refid="classcmd2_1_1Cmd_1a468717f63c360b46dd5f5bcbae4b0c9c" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a468717f63c360b46dd5f5bcbae4b0c9c" kindref="member">do_pause</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="1032"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'Displays<sp/>the<sp/>specified<sp/>text<sp/>then<sp/>waits<sp/>for<sp/>the<sp/>user<sp/>to<sp/>press<sp/>RETURN.'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1033"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>raw_input(arg<sp/>+<sp/></highlight><highlight class="stringliteral">'\n'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1034"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1035" refid="classcmd2_1_1Cmd_1a734c394c38de8828960370d6d8e68004" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a734c394c38de8828960370d6d8e68004" kindref="member">do_shell</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="1036"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'execute<sp/>a<sp/>command<sp/>as<sp/>if<sp/>at<sp/>the<sp/>OS<sp/>prompt.'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1037"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>os.system(arg)</highlight></codeline> -<codeline lineno="1038"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1039" refid="classcmd2_1_1Cmd_1a5ccce52c26063115070d56b6f099223b" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a5ccce52c26063115070d56b6f099223b" kindref="member">do_py</ref>(self,<sp/>arg):<sp/><sp/></highlight></codeline> -<codeline lineno="1040"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''</highlight></codeline> -<codeline lineno="1041"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>py<sp/><command>:<sp/>Executes<sp/>a<sp/>Python<sp/>command.</highlight></codeline> -<codeline lineno="1042"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>py:<sp/>Enters<sp/>interactive<sp/>Python<sp/>mode.</highlight></codeline> -<codeline lineno="1043"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>End<sp/>with<sp/>``Ctrl-D``<sp/>(Unix)<sp/>/<sp/>``Ctrl-Z``<sp/>(Windows),<sp/>``quit()``,<sp/>'`exit()``.</highlight></codeline> -<codeline lineno="1044"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Non-python<sp/>commands<sp/>can<sp/>be<sp/>issued<sp/>with<sp/>``cmd("your<sp/>command")``.</highlight></codeline> -<codeline lineno="1045"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Run<sp/>python<sp/>code<sp/>from<sp/>external<sp/>files<sp/>with<sp/>``run("filename.py")``</highlight></codeline> -<codeline lineno="1046"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1047"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a30058e5e628d60dedf7c500e270b3e5d" kindref="member">pystate</ref>[</highlight><highlight class="stringliteral">'self'</highlight><highlight class="normal">]<sp/>=<sp/>self</highlight></codeline> -<codeline lineno="1048"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>=<sp/>arg.parsed.raw[2:].strip()</highlight></codeline> -<codeline lineno="1049"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>localvars<sp/>=<sp/>(self.<ref refid="classcmd2_1_1Cmd_1a55e7978c792429a0a2e3321abdbd23fe" kindref="member">locals_in_py</ref><sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a30058e5e628d60dedf7c500e270b3e5d" kindref="member">pystate</ref>)<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>{}</highlight></codeline> -<codeline lineno="1050"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>interp<sp/>=<sp/>InteractiveConsole(locals=localvars)</highlight></codeline> -<codeline lineno="1051"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>interp.runcode(</highlight><highlight class="stringliteral">'import<sp/>sys,<sp/>os;sys.path.insert(0,<sp/>os.getcwd())'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1052"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>arg.strip():</highlight></codeline> -<codeline lineno="1053"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>interp.runcode(arg)</highlight></codeline> -<codeline lineno="1054"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1055"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal">quit():</highlight></codeline> -<codeline lineno="1056"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>EmbeddedConsoleExit</highlight></codeline> -<codeline lineno="1057"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1ac188a434c9c7d5c939e971a3d42c1c63" kindref="member">onecmd_plus_hooks</ref>(arg):</highlight></codeline> -<codeline lineno="1058"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1ac188a434c9c7d5c939e971a3d42c1c63" kindref="member">onecmd_plus_hooks</ref>(arg<sp/>+<sp/></highlight><highlight class="stringliteral">'\n'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1059"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal">run(arg):</highlight></codeline> -<codeline lineno="1060"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1061"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>file<sp/>=<sp/>open(arg)</highlight></codeline> -<codeline lineno="1062"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>interp.runcode(file.read())</highlight></codeline> -<codeline lineno="1063"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>file.close()</highlight></codeline> -<codeline lineno="1064"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>IOError,<sp/>e:</highlight></codeline> -<codeline lineno="1065"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a118c16455f28dbd3918b565bca086db4" kindref="member">perror</ref>(e)</highlight></codeline> -<codeline lineno="1066"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a30058e5e628d60dedf7c500e270b3e5d" kindref="member">pystate</ref>[</highlight><highlight class="stringliteral">'quit'</highlight><highlight class="normal">]<sp/>=<sp/>quit</highlight></codeline> -<codeline lineno="1067"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a30058e5e628d60dedf7c500e270b3e5d" kindref="member">pystate</ref>[</highlight><highlight class="stringliteral">'exit'</highlight><highlight class="normal">]<sp/>=<sp/>quit</highlight></codeline> -<codeline lineno="1068"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a30058e5e628d60dedf7c500e270b3e5d" kindref="member">pystate</ref>[</highlight><highlight class="stringliteral">'cmd'</highlight><highlight class="normal">]<sp/>=<sp/>onecmd_plus_hooks</highlight></codeline> -<codeline lineno="1069"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a30058e5e628d60dedf7c500e270b3e5d" kindref="member">pystate</ref>[</highlight><highlight class="stringliteral">'run'</highlight><highlight class="normal">]<sp/>=<sp/>run</highlight></codeline> -<codeline lineno="1070"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1071"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cprt<sp/>=<sp/></highlight><highlight class="stringliteral">'Type<sp/>"help",<sp/>"copyright",<sp/>"credits"<sp/>or<sp/>"license"<sp/>for<sp/>more<sp/>information.'</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1072"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>keepstate<sp/>=<sp/><ref refid="classcmd2_1_1Statekeeper" kindref="compound">Statekeeper</ref>(sys,<sp/>(</highlight><highlight class="stringliteral">'stdin'</highlight><highlight class="normal">,</highlight><highlight class="stringliteral">'stdout'</highlight><highlight class="normal">))</highlight></codeline> -<codeline lineno="1073"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sys.stdout<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a2a71ccfd9f189e17db765b603f2c9a78" kindref="member">stdout</ref></highlight></codeline> -<codeline lineno="1074"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sys.stdin<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a6f0eed071b4e9197cc4fa46a2c8f1457" kindref="member">stdin</ref></highlight></codeline> -<codeline lineno="1075"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>interp.interact(banner=<sp/></highlight><highlight class="stringliteral">"Python<sp/>%s<sp/>on<sp/>%s\n%s\n(%s)\n%s"</highlight><highlight class="normal"><sp/>%</highlight></codeline> -<codeline lineno="1076"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(sys.version,<sp/>sys.platform,<sp/>cprt,<sp/>self.__class__.__name__,<sp/>self.<ref refid="classcmd2_1_1Cmd_1a5ccce52c26063115070d56b6f099223b" kindref="member">do_py</ref>.__doc__))</highlight></codeline> -<codeline lineno="1077"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>EmbeddedConsoleExit:</highlight></codeline> -<codeline lineno="1078"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1079"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>keepstate.restore()</highlight></codeline> -<codeline lineno="1080"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1081"><highlight class="normal"><sp/><sp/><sp/><sp/>@<ref refid="namespacecmd2_1a863be2c5e3b9fdec03710fd550801c22" kindref="member">options</ref>([make_option(</highlight><highlight class="stringliteral">'-s'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'--script'</highlight><highlight class="normal">,<sp/>action=</highlight><highlight class="stringliteral">"store_true"</highlight><highlight class="normal">,<sp/>help=</highlight><highlight class="stringliteral">"Script<sp/>format;<sp/>no<sp/>separation<sp/>lines"</highlight><highlight class="normal">),</highlight></codeline> -<codeline lineno="1082"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>],<sp/>arg_desc<sp/>=<sp/></highlight><highlight class="stringliteral">'(limit<sp/>on<sp/>which<sp/>commands<sp/>to<sp/>include)'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1083" refid="classcmd2_1_1Cmd_1a46d9a5551bb0456721a0bf7dc07b0d0b" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a46d9a5551bb0456721a0bf7dc07b0d0b" kindref="member">do_history</ref>(self,<sp/>arg,<sp/>opts):</highlight></codeline> -<codeline lineno="1084"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""history<sp/>[arg]:<sp/>lists<sp/>past<sp/>commands<sp/>issued</highlight></codeline> -<codeline lineno="1085"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1086"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>|<sp/>no<sp/>arg:<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>list<sp/>all</highlight></codeline> -<codeline lineno="1087"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>|<sp/>arg<sp/>is<sp/>integer:<sp/>list<sp/>one<sp/>history<sp/>item,<sp/>by<sp/>index</highlight></codeline> -<codeline lineno="1088"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>|<sp/>arg<sp/>is<sp/>string:<sp/><sp/>string<sp/>search</highlight></codeline> -<codeline lineno="1089"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>|<sp/>arg<sp/>is<sp/>/enclosed<sp/>in<sp/>forward-slashes/:<sp/>regular<sp/>expression<sp/>search</highlight></codeline> -<codeline lineno="1090"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1091"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>arg:</highlight></codeline> -<codeline lineno="1092"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>history<sp/>=<sp/>self.history.get(arg)</highlight></codeline> -<codeline lineno="1093"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1094"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>history<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a666a090bc7298aae6ca55840e9418f96" kindref="member">history</ref></highlight></codeline> -<codeline lineno="1095"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>hi<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>history:</highlight></codeline> -<codeline lineno="1096"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>opts.script:</highlight></codeline> -<codeline lineno="1097"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad8b5d33873f9b515e33f83a616d0828f" kindref="member">poutput</ref>(hi)</highlight></codeline> -<codeline lineno="1098"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1099"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(hi.pr())</highlight></codeline> -<codeline lineno="1100" refid="classcmd2_1_1Cmd_1aea5c4d49c7b6f552b6123e5a981a6f49" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1aea5c4d49c7b6f552b6123e5a981a6f49" kindref="member">last_matching</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="1101"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1102"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>arg:</highlight></codeline> -<codeline lineno="1103"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.history.get(arg)[-1]</highlight></codeline> -<codeline lineno="1104"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1105"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a666a090bc7298aae6ca55840e9418f96" kindref="member">history</ref>[-1]</highlight></codeline> -<codeline lineno="1106"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>IndexError:</highlight></codeline> -<codeline lineno="1107"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1108" refid="classcmd2_1_1Cmd_1af278702e71cf57de45012216904d1bb5" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1af278702e71cf57de45012216904d1bb5" kindref="member">do_list</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="1109"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""list<sp/>[arg]:<sp/>lists<sp/>last<sp/>command<sp/>issued</highlight></codeline> -<codeline lineno="1110"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1111"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>no<sp/>arg<sp/>-><sp/>list<sp/>most<sp/>recent<sp/>command</highlight></codeline> -<codeline lineno="1112"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>is<sp/>integer<sp/>-><sp/>list<sp/>one<sp/>history<sp/>item,<sp/>by<sp/>index</highlight></codeline> -<codeline lineno="1113"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>a..b,<sp/>a:b,<sp/>a:,<sp/>..b<sp/>-><sp/>list<sp/>spans<sp/>from<sp/>a<sp/>(or<sp/>start)<sp/>to<sp/>b<sp/>(or<sp/>end)</highlight></codeline> -<codeline lineno="1114"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>is<sp/>string<sp/>-><sp/>list<sp/>all<sp/>commands<sp/>matching<sp/>string<sp/>search</highlight></codeline> -<codeline lineno="1115"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>is<sp/>/enclosed<sp/>in<sp/>forward-slashes/<sp/>-><sp/>regular<sp/>expression<sp/>search</highlight></codeline> -<codeline lineno="1116"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1117"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1118"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>history<sp/>=<sp/>self.history.span(arg<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">'-1'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1119"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>IndexError:</highlight></codeline> -<codeline lineno="1120"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>history<sp/>=<sp/>self.history.search(arg)</highlight></codeline> -<codeline lineno="1121"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>hi<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>history:</highlight></codeline> -<codeline lineno="1122"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ad8b5d33873f9b515e33f83a616d0828f" kindref="member">poutput</ref>(hi.pr())</highlight></codeline> -<codeline lineno="1123"><highlight class="normal"></highlight></codeline> -<codeline lineno="1124" refid="classcmd2_1_1Cmd_1a71e16c0eab993aa6f22272e04615fa4e" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>do_hi<sp/>=<sp/>do_history</highlight></codeline> -<codeline lineno="1125" refid="classcmd2_1_1Cmd_1a978b02763d086aa3f4a278c370b6798f" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>do_l<sp/>=<sp/>do_list</highlight></codeline> -<codeline lineno="1126" refid="classcmd2_1_1Cmd_1a0be8d5c8676c2da5eacb8dbaf2e10e29" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>do_li<sp/>=<sp/>do_list</highlight></codeline> -<codeline lineno="1127"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1128" refid="classcmd2_1_1Cmd_1aebdc7ebb6dc83e9dadb8827cdab1952a" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1aebdc7ebb6dc83e9dadb8827cdab1952a" kindref="member">do_ed</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="1129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""ed:<sp/>edit<sp/>most<sp/>recent<sp/>command<sp/>in<sp/>text<sp/>editor</highlight></codeline> -<codeline lineno="1130"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ed<sp/>[N]:<sp/>edit<sp/>numbered<sp/>command<sp/>from<sp/>history</highlight></codeline> -<codeline lineno="1131"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ed<sp/>[filename]:<sp/>edit<sp/>specified<sp/>file<sp/>name</highlight></codeline> -<codeline lineno="1132"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1133"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>commands<sp/>are<sp/>run<sp/>after<sp/>editor<sp/>is<sp/>closed.</highlight></codeline> -<codeline lineno="1134"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>"set<sp/>edit<sp/>(program-name)"<sp/>or<sp/>set<sp/><sp/>EDITOR<sp/>environment<sp/>variable</highlight></codeline> -<codeline lineno="1135"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>to<sp/>control<sp/>which<sp/>editing<sp/>program<sp/>is<sp/>used."""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1136"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a25fe904aca52573c6f10e798dd561588" kindref="member">editor</ref>:</highlight></codeline> -<codeline lineno="1137"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>EnvironmentError(</highlight><highlight class="stringliteral">"Please<sp/>use<sp/>'set<sp/>editor'<sp/>to<sp/>specify<sp/>your<sp/>text<sp/>editing<sp/>program<sp/>of<sp/>choice."</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1138"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>filename<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a3af82e64cdabf19b462cd0ddf686823d" kindref="member">default_file_name</ref></highlight></codeline> -<codeline lineno="1139"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>arg:</highlight></codeline> -<codeline lineno="1140"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1141"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>buffer<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1aea5c4d49c7b6f552b6123e5a981a6f49" kindref="member">last_matching</ref>(int(arg))</highlight></codeline> -<codeline lineno="1142"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>ValueError:</highlight></codeline> -<codeline lineno="1143"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>filename<sp/>=<sp/>arg</highlight></codeline> -<codeline lineno="1144"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>buffer<sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1145"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1146"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>buffer<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a666a090bc7298aae6ca55840e9418f96" kindref="member">history</ref>[-1]</highlight></codeline> -<codeline lineno="1147"><highlight class="normal"></highlight></codeline> -<codeline lineno="1148"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>buffer:</highlight></codeline> -<codeline lineno="1149"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>f<sp/>=<sp/>open(os.path.expanduser(filename),<sp/></highlight><highlight class="stringliteral">'w'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1150"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>f.write(buffer<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1151"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>f.close()<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1152"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1153"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>os.system(</highlight><highlight class="stringliteral">'%s<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>(self.<ref refid="classcmd2_1_1Cmd_1a25fe904aca52573c6f10e798dd561588" kindref="member">editor</ref>,<sp/>filename))</highlight></codeline> -<codeline lineno="1154"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a3a237dae48a4dba0daa7e114ff098e90" kindref="member">do__load</ref>(filename)</highlight></codeline> -<codeline lineno="1155" refid="classcmd2_1_1Cmd_1a900317e58aad07d0d1fb48080dc63d5c" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>do_edit<sp/>=<sp/>do_ed</highlight></codeline> -<codeline lineno="1156"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1157" refid="classcmd2_1_1Cmd_1aafc3b1cd861e711c3f5e10cd00a41221" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>saveparser<sp/>=<sp/>(pyparsing.Optional(pyparsing.Word(pyparsing.nums)^</highlight><highlight class="stringliteral">'*'</highlight><highlight class="normal">)(</highlight><highlight class="stringliteral">"idx"</highlight><highlight class="normal">)<sp/>+<sp/></highlight></codeline> -<codeline lineno="1158"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pyparsing.Optional(pyparsing.Word(legalChars<sp/>+<sp/></highlight><highlight class="stringliteral">'/\\'</highlight><highlight class="normal">))(</highlight><highlight class="stringliteral">"fname"</highlight><highlight class="normal">)<sp/>+</highlight></codeline> -<codeline lineno="1159"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pyparsing.stringEnd)<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1160" refid="classcmd2_1_1Cmd_1a12d5262e31e148dafea6017a356ed9cd" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a12d5262e31e148dafea6017a356ed9cd" kindref="member">do_save</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="1161"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""`save<sp/>[N]<sp/>[filename.ext]`</highlight></codeline> -<codeline lineno="1162"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="1163"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Saves<sp/>command<sp/>from<sp/>history<sp/>to<sp/>file.</highlight></codeline> -<codeline lineno="1164"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="1165"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>|<sp/>N<sp/>=><sp/>Number<sp/>of<sp/>command<sp/>(from<sp/>history),<sp/>or<sp/>`*`;<sp/></highlight></codeline> -<codeline lineno="1166"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>|<sp/><sp/><sp/><sp/><sp/><sp/>most<sp/>recent<sp/>command<sp/>if<sp/>omitted"""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1167"><highlight class="normal"></highlight></codeline> -<codeline lineno="1168"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1169"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>args<sp/>=<sp/>self.saveparser.parseString(arg)</highlight></codeline> -<codeline lineno="1170"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>pyparsing.ParseException:</highlight></codeline> -<codeline lineno="1171"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a118c16455f28dbd3918b565bca086db4" kindref="member">perror</ref>(</highlight><highlight class="stringliteral">'Could<sp/>not<sp/>understand<sp/>save<sp/>target<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>arg)</highlight></codeline> -<codeline lineno="1172"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>SyntaxError(self.<ref refid="classcmd2_1_1Cmd_1a12d5262e31e148dafea6017a356ed9cd" kindref="member">do_save</ref>.__doc__)</highlight></codeline> -<codeline lineno="1173"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>fname<sp/>=<sp/>args.fname<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a3af82e64cdabf19b462cd0ddf686823d" kindref="member">default_file_name</ref></highlight></codeline> -<codeline lineno="1174"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>args.idx<sp/>==<sp/></highlight><highlight class="stringliteral">'*'</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1175"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>saveme<sp/>=<sp/></highlight><highlight class="stringliteral">'\n\n'</highlight><highlight class="normal">.join(self.<ref refid="classcmd2_1_1Cmd_1a666a090bc7298aae6ca55840e9418f96" kindref="member">history</ref>[:])</highlight></codeline> -<codeline lineno="1176"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">elif</highlight><highlight class="normal"><sp/>args.idx:</highlight></codeline> -<codeline lineno="1177"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>saveme<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a666a090bc7298aae6ca55840e9418f96" kindref="member">history</ref>[int(args.idx)-1]</highlight></codeline> -<codeline lineno="1178"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1179"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>saveme<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a666a090bc7298aae6ca55840e9418f96" kindref="member">history</ref>[-1]</highlight></codeline> -<codeline lineno="1180"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1181"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>f<sp/>=<sp/>open(os.path.expanduser(fname),<sp/></highlight><highlight class="stringliteral">'w'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1182"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>f.write(saveme)</highlight></codeline> -<codeline lineno="1183"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>f.close()</highlight></codeline> -<codeline lineno="1184"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a122b67681a0db23863f5ddaa7a687975" kindref="member">pfeedback</ref>(</highlight><highlight class="stringliteral">'Saved<sp/>to<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>(fname))</highlight></codeline> -<codeline lineno="1185"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>Exception,<sp/>e:</highlight></codeline> -<codeline lineno="1186"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a118c16455f28dbd3918b565bca086db4" kindref="member">perror</ref>(</highlight><highlight class="stringliteral">'Error<sp/>saving<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>(fname))</highlight></codeline> -<codeline lineno="1187"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1188"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1189" refid="classcmd2_1_1Cmd_1a2eba6d3d12d65789880959d788be2d86" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a2eba6d3d12d65789880959d788be2d86" kindref="member">read_file_or_url</ref>(self,<sp/>fname):</highlight></codeline> -<codeline lineno="1190"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>TODO:<sp/>not<sp/>working<sp/>on<sp/>localhost</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1191"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>isinstance(fname,<sp/>file):</highlight></codeline> -<codeline lineno="1192"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>open(fname,<sp/></highlight><highlight class="stringliteral">'</highlight><highlight class="stringliteral">r')</highlight></codeline> -<codeline lineno="1193"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1194"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>match<sp/>=<sp/>self.urlre.match(fname)</highlight></codeline> -<codeline lineno="1195"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>match:</highlight></codeline> -<codeline lineno="1196"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>urllib.urlopen(match.group(1))</highlight></codeline> -<codeline lineno="1197"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1198"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>fname<sp/>=<sp/>os.path.expanduser(fname)</highlight></codeline> -<codeline lineno="1199"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1200"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>open(os.path.expanduser(fname),<sp/></highlight><highlight class="stringliteral">'</highlight><highlight class="stringliteral">r')</highlight></codeline> -<codeline lineno="1201"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>IOError:<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1202"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>open(</highlight><highlight class="stringliteral">'%s.%s'</highlight><highlight class="normal"><sp/>%<sp/>(os.path.expanduser(fname),<sp/></highlight></codeline> -<codeline lineno="1203"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ab14061f1d84f49fb8fefcce285e7aec7" kindref="member">defaultExtension</ref>),<sp/></highlight><highlight class="stringliteral">'</highlight><highlight class="stringliteral">r')</highlight></codeline> -<codeline lineno="1204"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result</highlight></codeline> -<codeline lineno="1205"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1206" refid="classcmd2_1_1Cmd_1aa084d0f962d9ea060c935ff6a9cf74a8" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1aa084d0f962d9ea060c935ff6a9cf74a8" kindref="member">do__relative_load</ref>(self,<sp/>arg=None):</highlight></codeline> -<codeline lineno="1207"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''</highlight></codeline> -<codeline lineno="1208"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Runs<sp/>commands<sp/>in<sp/>script<sp/>at<sp/>file<sp/>or<sp/>URL;<sp/>if<sp/>this<sp/>is<sp/>called<sp/>from<sp/>within<sp/>an</highlight></codeline> -<codeline lineno="1209"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>already-running<sp/>script,<sp/>the<sp/>filename<sp/>will<sp/>be<sp/>interpreted<sp/>relative<sp/>to<sp/>the<sp/></highlight></codeline> -<codeline lineno="1210"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>already-running<sp/>script's<sp/>directory.'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1211"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>arg:</highlight></codeline> -<codeline lineno="1212"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>=<sp/>arg.split(</highlight><highlight class="keywordtype">None</highlight><highlight class="normal">,<sp/>1)</highlight></codeline> -<codeline lineno="1213"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>targetname,<sp/>args<sp/>=<sp/>arg[0],<sp/>(arg[1:]<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>[</highlight><highlight class="stringliteral">''</highlight><highlight class="normal">])[0]</highlight></codeline> -<codeline lineno="1214"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>targetname<sp/>=<sp/>os.path.join(self.<ref refid="classcmd2_1_1Cmd_1a549399bed9574c87901100530343ac68" kindref="member">current_script_dir</ref><sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">,<sp/>targetname)</highlight></codeline> -<codeline lineno="1215"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a3a237dae48a4dba0daa7e114ff098e90" kindref="member">do__load</ref>(</highlight><highlight class="stringliteral">'%s<sp/>%s'</highlight><highlight class="normal"><sp/>%<sp/>(targetname,<sp/>args))</highlight></codeline> -<codeline lineno="1216"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1217" refid="classcmd2_1_1Cmd_1ad8c02476fc0918fde1093ce103be09de" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>urlre<sp/>=<sp/>re.compile(</highlight><highlight class="stringliteral">'(https?://[-\\w\\./]+)'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1218" refid="classcmd2_1_1Cmd_1add0217858bbc4c268a5f2f27330ad1f8" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a8b8c98ab5e1b98e618a5a9122c50fc74" kindref="member">do_load</ref>(self,<sp/>arg=None):<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1219"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""Runs<sp/>script<sp/>of<sp/>command(s)<sp/>from<sp/>a<sp/>file<sp/>or<sp/>URL."""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1220"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>arg<sp/></highlight><highlight class="keywordflow">is</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1221"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>targetname<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a3af82e64cdabf19b462cd0ddf686823d" kindref="member">default_file_name</ref></highlight></codeline> -<codeline lineno="1222"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1223"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>=<sp/>arg.split(</highlight><highlight class="keywordtype">None</highlight><highlight class="normal">,<sp/>1)</highlight></codeline> -<codeline lineno="1224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>targetname,<sp/>args<sp/>=<sp/>arg[0],<sp/>(arg[1:]<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>[</highlight><highlight class="stringliteral">''</highlight><highlight class="normal">])[0].strip()</highlight></codeline> -<codeline lineno="1225"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1226"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>target<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a2eba6d3d12d65789880959d788be2d86" kindref="member">read_file_or_url</ref>(targetname)</highlight></codeline> -<codeline lineno="1227"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>IOError,<sp/>e:</highlight></codeline> -<codeline lineno="1228"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a118c16455f28dbd3918b565bca086db4" kindref="member">perror</ref>(</highlight><highlight class="stringliteral">'Problem<sp/>accessing<sp/>script<sp/>from<sp/>%s:<sp/>\n%s'</highlight><highlight class="normal"><sp/>%<sp/>(targetname,<sp/>e))</highlight></codeline> -<codeline lineno="1229"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1230"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>keepstate<sp/>=<sp/><ref refid="classcmd2_1_1Statekeeper" kindref="compound">Statekeeper</ref>(self,<sp/>(</highlight><highlight class="stringliteral">'stdin'</highlight><highlight class="normal">,</highlight><highlight class="stringliteral">'use_rawinput'</highlight><highlight class="normal">,</highlight><highlight class="stringliteral">'prompt'</highlight><highlight class="normal">,</highlight></codeline> -<codeline lineno="1231"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'continuation_prompt'</highlight><highlight class="normal">,</highlight><highlight class="stringliteral">'current_script_dir'</highlight><highlight class="normal">))</highlight></codeline> -<codeline lineno="1232"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a6f0eed071b4e9197cc4fa46a2c8f1457" kindref="member">stdin</ref><sp/>=<sp/>target<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1233"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1add0217858bbc4c268a5f2f27330ad1f8" kindref="member">use_rawinput</ref><sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1234"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1ae9a33dc613b00f4d5b849c0d3521f2c3" kindref="member">prompt</ref><sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a186ca22e76dc63ad9d8a95cfaeb4f7fd" kindref="member">continuation_prompt</ref><sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1235"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a549399bed9574c87901100530343ac68" kindref="member">current_script_dir</ref><sp/>=<sp/>os.path.split(targetname)[0]</highlight></codeline> -<codeline lineno="1236"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1a392c5cd062c20d916c0cacc9cc36c022" kindref="member">_cmdloop</ref>()</highlight></codeline> -<codeline lineno="1237"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdin.close()</highlight></codeline> -<codeline lineno="1238"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>keepstate.restore()</highlight></codeline> -<codeline lineno="1239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1adaaec8df571e88463c3b8b02fefea8b2" kindref="member">lastcmd</ref><sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1240"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>stop<sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>(stop<sp/>!=<sp/>self.<ref refid="classcmd2_1_1Cmd_1abe14bda0dc50326876c6a761cefba702" kindref="member">_STOP_SCRIPT_NO_EXIT</ref>)<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1241" refid="classcmd2_1_1Cmd_1a3a237dae48a4dba0daa7e114ff098e90" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>do__load<sp/>=<sp/>do_load<sp/><sp/></highlight><highlight class="comment">#<sp/>avoid<sp/>an<sp/>unfortunate<sp/>legacy<sp/>use<sp/>of<sp/>do_load<sp/>from<sp/>sqlpython</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1242"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1243" refid="classcmd2_1_1Cmd_1aafd86f263566aa4f2b5bd3c3ea64c678" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1aafd86f263566aa4f2b5bd3c3ea64c678" kindref="member">do_run</ref>(self,<sp/>arg):</highlight></codeline> -<codeline lineno="1244"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""run<sp/>[arg]:<sp/>re-runs<sp/>an<sp/>earlier<sp/>command</highlight></codeline> -<codeline lineno="1245"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1246"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>no<sp/>arg<sp/>-><sp/>run<sp/>most<sp/>recent<sp/>command</highlight></codeline> -<codeline lineno="1247"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>is<sp/>integer<sp/>-><sp/>run<sp/>one<sp/>history<sp/>item,<sp/>by<sp/>index</highlight></codeline> -<codeline lineno="1248"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>is<sp/>string<sp/>-><sp/>run<sp/>most<sp/>recent<sp/>command<sp/>by<sp/>string<sp/>search</highlight></codeline> -<codeline lineno="1249"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>arg<sp/>is<sp/>/enclosed<sp/>in<sp/>forward-slashes/<sp/>-><sp/>run<sp/>most<sp/>recent<sp/>by<sp/>regex</highlight></codeline> -<codeline lineno="1250"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>"""</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1251"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'run<sp/>[N]:<sp/>runs<sp/>the<sp/>SQL<sp/>that<sp/>was<sp/>run<sp/>N<sp/>commands<sp/>ago'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1252"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>runme<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1aea5c4d49c7b6f552b6123e5a981a6f49" kindref="member">last_matching</ref>(arg)</highlight></codeline> -<codeline lineno="1253"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a122b67681a0db23863f5ddaa7a687975" kindref="member">pfeedback</ref>(runme)</highlight></codeline> -<codeline lineno="1254"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>runme:</highlight></codeline> -<codeline lineno="1255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd_1ac188a434c9c7d5c939e971a3d42c1c63" kindref="member">onecmd_plus_hooks</ref>(runme)</highlight></codeline> -<codeline lineno="1256" refid="classcmd2_1_1Cmd_1a0a9b6e01b7ac4efb65f2957c28949e87" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>do_r<sp/>=<sp/>do_run<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1257"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1258" refid="classcmd2_1_1Cmd_1a66160524beda7b75d70070bebce69e42" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a66160524beda7b75d70070bebce69e42" kindref="member">fileimport</ref>(self,<sp/>statement,<sp/>source):</highlight></codeline> -<codeline lineno="1259"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1260"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>f<sp/>=<sp/>open(os.path.expanduser(source))</highlight></codeline> -<codeline lineno="1261"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>IOError:</highlight></codeline> -<codeline lineno="1262"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.stdout.write(</highlight><highlight class="stringliteral">"Couldn't<sp/>read<sp/>from<sp/>file<sp/>%s\n"</highlight><highlight class="normal"><sp/>%<sp/>source)</highlight></codeline> -<codeline lineno="1263"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1264"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>data<sp/>=<sp/>f.read()</highlight></codeline> -<codeline lineno="1265"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>f.close()</highlight></codeline> -<codeline lineno="1266"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>data</highlight></codeline> -<codeline lineno="1267"><highlight class="normal"></highlight></codeline> -<codeline lineno="1268" refid="classcmd2_1_1Cmd_1a160c7a080d222defe32c781138901d4e" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a160c7a080d222defe32c781138901d4e" kindref="member">runTranscriptTests</ref>(self,<sp/>callargs):</highlight></codeline> -<codeline lineno="1269"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal">TestMyAppCase(<ref refid="classcmd2_1_1Cmd2TestCase" kindref="compound">Cmd2TestCase</ref>):</highlight></codeline> -<codeline lineno="1270"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>CmdApp<sp/>=<sp/>self.__class__<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1271"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.__class__.testfiles<sp/>=<sp/>callargs</highlight></codeline> -<codeline lineno="1272"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sys.argv<sp/>=<sp/>[sys.argv[0]]<sp/></highlight><highlight class="comment">#<sp/>the<sp/>--test<sp/>argument<sp/>upsets<sp/>unittest.main()</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1273"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>testcase<sp/>=<sp/>TestMyAppCase()</highlight></codeline> -<codeline lineno="1274"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>runner<sp/>=<sp/>unittest.TextTestRunner()</highlight></codeline> -<codeline lineno="1275"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>runner.run(testcase)</highlight></codeline> -<codeline lineno="1276"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.printErrors()</highlight></codeline> -<codeline lineno="1277"><highlight class="normal"></highlight></codeline> -<codeline lineno="1278" refid="classcmd2_1_1Cmd_1a19b932e21ac917375f16457c986ad4f6" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a19b932e21ac917375f16457c986ad4f6" kindref="member">run_commands_at_invocation</ref>(self,<sp/>callargs):</highlight></codeline> -<codeline lineno="1279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>initial_command<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>callargs:</highlight></codeline> -<codeline lineno="1280"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1ac188a434c9c7d5c939e971a3d42c1c63" kindref="member">onecmd_plus_hooks</ref>(initial_command<sp/>+<sp/></highlight><highlight class="stringliteral">'\n'</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="1281"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a7a8e8257d7d35c7813355cdefb62b85b" kindref="member">_STOP_AND_EXIT</ref></highlight></codeline> -<codeline lineno="1282"><highlight class="normal"></highlight></codeline> -<codeline lineno="1283" refid="classcmd2_1_1Cmd_1a0e5f32e5ab972e32273ef5d69de81afc" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd_1a0e5f32e5ab972e32273ef5d69de81afc" kindref="member">cmdloop</ref>(self):</highlight></codeline> -<codeline lineno="1284"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>parser<sp/>=<sp/>optparse.OptionParser()</highlight></codeline> -<codeline lineno="1285"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>parser.add_option(</highlight><highlight class="stringliteral">'-t'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'--test'</highlight><highlight class="normal">,<sp/>dest=</highlight><highlight class="stringliteral">'test'</highlight><highlight class="normal">,</highlight></codeline> -<codeline lineno="1286"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>action=</highlight><highlight class="stringliteral">"store_true"</highlight><highlight class="normal">,<sp/></highlight></codeline> -<codeline lineno="1287"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>help=</highlight><highlight class="stringliteral">'Test<sp/>against<sp/>transcript(s)<sp/>in<sp/>FILE<sp/>(wildcards<sp/>OK)'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1288"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(callopts,<sp/>callargs)<sp/>=<sp/>parser.parse_args()</highlight></codeline> -<codeline lineno="1289"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>callopts.test:</highlight></codeline> -<codeline lineno="1290"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a160c7a080d222defe32c781138901d4e" kindref="member">runTranscriptTests</ref>(callargs)</highlight></codeline> -<codeline lineno="1291"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1292"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd_1a19b932e21ac917375f16457c986ad4f6" kindref="member">run_commands_at_invocation</ref>(callargs):</highlight></codeline> -<codeline lineno="1293"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd_1a392c5cd062c20d916c0cacc9cc36c022" kindref="member">_cmdloop</ref>()<sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1294"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1295" refid="classcmd2_1_1HistoryItem" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1HistoryItem" kindref="compound">HistoryItem</ref>(str):</highlight></codeline> -<codeline lineno="1296" refid="classcmd2_1_1HistoryItem_1ac496a3283d2754e61e156ddbf2370259" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>listformat<sp/>=<sp/></highlight><highlight class="stringliteral">'-------------------------[%d]\n%s\n'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1297" refid="classcmd2_1_1HistoryItem_1a74c5f486309e86773802f72335ff4252" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1HistoryItem_1ab873a526e5978d15a16fddae74005471" kindref="member">__init__</ref>(self,<sp/>instr):</highlight></codeline> -<codeline lineno="1298"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>str.__init__(self)</highlight></codeline> -<codeline lineno="1299"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1HistoryItem_1a74c5f486309e86773802f72335ff4252" kindref="member">lowercase</ref><sp/>=<sp/>self.lower()</highlight></codeline> -<codeline lineno="1300"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1HistoryItem_1a83243fbd9faac88d0fb2c13473029d12" kindref="member">idx</ref><sp/>=<sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1301" refid="classcmd2_1_1HistoryItem_1af49dd31da48eafd74653503a69eae230" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1HistoryItem_1af49dd31da48eafd74653503a69eae230" kindref="member">pr</ref>(self):</highlight></codeline> -<codeline lineno="1302"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1HistoryItem_1ac496a3283d2754e61e156ddbf2370259" kindref="member">listformat</ref><sp/>%<sp/>(self.<ref refid="classcmd2_1_1HistoryItem_1a83243fbd9faac88d0fb2c13473029d12" kindref="member">idx</ref>,<sp/>str(self))</highlight></codeline> -<codeline lineno="1303"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1304" refid="classcmd2_1_1History" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1History" kindref="compound">History</ref>(list):</highlight></codeline> -<codeline lineno="1305"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''A<sp/>list<sp/>of<sp/>HistoryItems<sp/>that<sp/>knows<sp/>how<sp/>to<sp/>respond<sp/>to<sp/>user<sp/>requests.</highlight></codeline> -<codeline lineno="1306"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h<sp/>=<sp/>History([HistoryItem('first'),<sp/>HistoryItem('second'),<sp/>HistoryItem('third'),<sp/>HistoryItem('fourth')])</highlight></codeline> -<codeline lineno="1307"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h.span('-2..')</highlight></codeline> -<codeline lineno="1308"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>['third',<sp/>'fourth']</highlight></codeline> -<codeline lineno="1309"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h.span('2..3')</highlight></codeline> -<codeline lineno="1310"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>['second',<sp/>'third']</highlight></codeline> -<codeline lineno="1311"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h.span('3')</highlight></codeline> -<codeline lineno="1312"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>['third']<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1313"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h.span(':')</highlight></codeline> -<codeline lineno="1314"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>['first',<sp/>'second',<sp/>'third',<sp/>'fourth']</highlight></codeline> -<codeline lineno="1315"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h.span('2..')</highlight></codeline> -<codeline lineno="1316"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>['second',<sp/>'third',<sp/>'fourth']</highlight></codeline> -<codeline lineno="1317"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h.span('-1')</highlight></codeline> -<codeline lineno="1318"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>['fourth']<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1319"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h.span('-2..-3')</highlight></codeline> -<codeline lineno="1320"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>['third',<sp/>'second']<sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1321"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h.search('o')</highlight></codeline> -<codeline lineno="1322"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>['second',<sp/>'fourth']</highlight></codeline> -<codeline lineno="1323"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>>>><sp/>h.search('/IR/')</highlight></codeline> -<codeline lineno="1324"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>['first',<sp/>'third']</highlight></codeline> -<codeline lineno="1325"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1326" refid="classcmd2_1_1History_1accd354b7c81e1cd538438b834630f3ac" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1History_1accd354b7c81e1cd538438b834630f3ac" kindref="member">zero_based_index</ref>(self,<sp/>onebased):</highlight></codeline> -<codeline lineno="1327"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>onebased</highlight></codeline> -<codeline lineno="1328"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>result<sp/>><sp/>0:</highlight></codeline> -<codeline lineno="1329"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>-=<sp/>1</highlight></codeline> -<codeline lineno="1330"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result</highlight></codeline> -<codeline lineno="1331" refid="classcmd2_1_1History_1a28fe5dc698da4c7bf82fdcdfb2e70506" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1History_1a28fe5dc698da4c7bf82fdcdfb2e70506" kindref="member">to_index</ref>(self,<sp/>raw):</highlight></codeline> -<codeline lineno="1332"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>raw:</highlight></codeline> -<codeline lineno="1333"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>self.<ref refid="classcmd2_1_1History_1accd354b7c81e1cd538438b834630f3ac" kindref="member">zero_based_index</ref>(int(raw))</highlight></codeline> -<codeline lineno="1334"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1335"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1336"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result</highlight></codeline> -<codeline lineno="1337" refid="classcmd2_1_1History_1ae1db5657367e6aa9b0e43811d5b8893f" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1History_1ae1db5657367e6aa9b0e43811d5b8893f" kindref="member">search</ref>(self,<sp/>target):</highlight></codeline> -<codeline lineno="1338"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>target<sp/>=<sp/>target.strip()</highlight></codeline> -<codeline lineno="1339"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>target[0]<sp/>==<sp/>target[-1]<sp/>==<sp/></highlight><highlight class="stringliteral">'/'</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>len(target)<sp/>><sp/>1:</highlight></codeline> -<codeline lineno="1340"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>target<sp/>=<sp/>target[1:-1]</highlight></codeline> -<codeline lineno="1341"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1342"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>target<sp/>=<sp/>re.escape(target)</highlight></codeline> -<codeline lineno="1343"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>pattern<sp/>=<sp/>re.compile(target,<sp/>re.IGNORECASE)</highlight></codeline> -<codeline lineno="1344"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>[s<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>s<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self<sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>pattern.search(s)]</highlight></codeline> -<codeline lineno="1345" refid="classcmd2_1_1History_1aa5204f159577beb16f07a8a9ada184ec" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>spanpattern<sp/>=<sp/>re.compile(</highlight><highlight class="stringliteral">r'^\s*(?P<start>\-?\d+)?\s*(?P<separator>:|(\.{2,}))?\s*(?P<end>\-?\d+)?\s*$'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1346" refid="classcmd2_1_1History_1a8c0837240ac7747aa804ba9eebddab60" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1History_1a8c0837240ac7747aa804ba9eebddab60" kindref="member">span</ref>(self,<sp/>raw):</highlight></codeline> -<codeline lineno="1347"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>raw.lower()<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>(</highlight><highlight class="stringliteral">'*'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'-'</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">'all'</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="1348"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>raw<sp/>=<sp/></highlight><highlight class="stringliteral">':'</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1349"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>results<sp/>=<sp/>self.spanpattern.search(raw)</highlight></codeline> -<codeline lineno="1350"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>results:</highlight></codeline> -<codeline lineno="1351"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>IndexError</highlight></codeline> -<codeline lineno="1352"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>results.group(</highlight><highlight class="stringliteral">'separator'</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="1353"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>[self[self.<ref refid="classcmd2_1_1History_1a28fe5dc698da4c7bf82fdcdfb2e70506" kindref="member">to_index</ref>(results.group(</highlight><highlight class="stringliteral">'start'</highlight><highlight class="normal">))]]</highlight></codeline> -<codeline lineno="1354"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>start<sp/>=<sp/>self.<ref refid="classcmd2_1_1History_1a28fe5dc698da4c7bf82fdcdfb2e70506" kindref="member">to_index</ref>(results.group(</highlight><highlight class="stringliteral">'start'</highlight><highlight class="normal">))</highlight></codeline> -<codeline lineno="1355"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>end<sp/>=<sp/>self.<ref refid="classcmd2_1_1History_1a28fe5dc698da4c7bf82fdcdfb2e70506" kindref="member">to_index</ref>(results.group(</highlight><highlight class="stringliteral">'end'</highlight><highlight class="normal">))</highlight></codeline> -<codeline lineno="1356"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>reverse<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1357"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>end<sp/></highlight><highlight class="keywordflow">is</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1358"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>end<sp/><<sp/>start:</highlight></codeline> -<codeline lineno="1359"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(start,<sp/>end)<sp/>=<sp/>(end,<sp/>start)</highlight></codeline> -<codeline lineno="1360"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>reverse<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1361"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>end<sp/>+=<sp/>1</highlight></codeline> -<codeline lineno="1362"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>self[start:end]</highlight></codeline> -<codeline lineno="1363"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>reverse:</highlight></codeline> -<codeline lineno="1364"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.reverse()</highlight></codeline> -<codeline lineno="1365"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result</highlight></codeline> -<codeline lineno="1366"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1367" refid="classcmd2_1_1History_1a47db7cadf89510850e60e3c908a376f1" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>rangePattern<sp/>=<sp/>re.compile(</highlight><highlight class="stringliteral">r'^\s*(?P<start>[\d]+)?\s*\-\s*(?P<end>[\d]+)?\s*$'</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1368" refid="classcmd2_1_1History_1aef5a4f297a77df78cd0e6bb17b67fb16" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1History_1aef5a4f297a77df78cd0e6bb17b67fb16" kindref="member">append</ref>(self,<sp/>new):</highlight></codeline> -<codeline lineno="1369"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new<sp/>=<sp/><ref refid="classcmd2_1_1HistoryItem" kindref="compound">HistoryItem</ref>(new)</highlight></codeline> -<codeline lineno="1370"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>list.append(self,<sp/>new)</highlight></codeline> -<codeline lineno="1371"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new.idx<sp/>=<sp/>len(self)</highlight></codeline> -<codeline lineno="1372" refid="classcmd2_1_1History_1a1c036910ea442db79fe012715b29c9db" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1History_1a1c036910ea442db79fe012715b29c9db" kindref="member">extend</ref>(self,<sp/>new):</highlight></codeline> -<codeline lineno="1373"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>n<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>new:</highlight></codeline> -<codeline lineno="1374"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1History_1aef5a4f297a77df78cd0e6bb17b67fb16" kindref="member">append</ref>(n)</highlight></codeline> -<codeline lineno="1375"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1376" refid="classcmd2_1_1History_1a030faac02c0b814fc676d21d8c5e049c" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1History_1a030faac02c0b814fc676d21d8c5e049c" kindref="member">get</ref>(self,<sp/>getme=None,<sp/>fromEnd=False):</highlight></codeline> -<codeline lineno="1377"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>getme:</highlight></codeline> -<codeline lineno="1378"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self</highlight></codeline> -<codeline lineno="1379"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1380"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>getme<sp/>=<sp/>int(getme)</highlight></codeline> -<codeline lineno="1381"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>getme<sp/><<sp/>0:</highlight></codeline> -<codeline lineno="1382"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self[:(-1<sp/>*<sp/>getme)]</highlight></codeline> -<codeline lineno="1383"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1384"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>[self[getme-1]]</highlight></codeline> -<codeline lineno="1385"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>IndexError:</highlight></codeline> -<codeline lineno="1386"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>[]</highlight></codeline> -<codeline lineno="1387"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>ValueError:</highlight></codeline> -<codeline lineno="1388"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>rangeResult<sp/>=<sp/>self.rangePattern.search(getme)</highlight></codeline> -<codeline lineno="1389"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>rangeResult:</highlight></codeline> -<codeline lineno="1390"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>start<sp/>=<sp/>rangeResult.group(</highlight><highlight class="stringliteral">'start'</highlight><highlight class="normal">)<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1391"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>end<sp/>=<sp/>rangeResult.group(</highlight><highlight class="stringliteral">'start'</highlight><highlight class="normal">)<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1392"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>start:</highlight></codeline> -<codeline lineno="1393"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>start<sp/>=<sp/>int(start)<sp/>-<sp/>1</highlight></codeline> -<codeline lineno="1394"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>end:</highlight></codeline> -<codeline lineno="1395"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>end<sp/>=<sp/>int(end)</highlight></codeline> -<codeline lineno="1396"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>self[start:end]</highlight></codeline> -<codeline lineno="1397"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1398"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>getme<sp/>=<sp/>getme.strip()</highlight></codeline> -<codeline lineno="1399"><highlight class="normal"></highlight></codeline> -<codeline lineno="1400"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>getme.startswith(</highlight><highlight class="stringliteral">r'/'</highlight><highlight class="normal">)<sp/></highlight><highlight class="keywordflow">and</highlight><highlight class="normal"><sp/>getme.endswith(</highlight><highlight class="stringliteral">r'/'</highlight><highlight class="normal">):</highlight></codeline> -<codeline lineno="1401"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>finder<sp/>=<sp/>re.compile(getme[1:-1],<sp/>re.DOTALL<sp/>|<sp/>re.MULTILINE<sp/>|<sp/>re.IGNORECASE)</highlight></codeline> -<codeline lineno="1402"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal">isin(hi):</highlight></codeline> -<codeline lineno="1403"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>finder.search(hi)</highlight></codeline> -<codeline lineno="1404"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1405"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal">isin(hi):</highlight></codeline> -<codeline lineno="1406"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>(getme.lower()<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>hi.lowercase)</highlight></codeline> -<codeline lineno="1407"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>[itm<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>itm<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self<sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>isin(itm)]</highlight></codeline> -<codeline lineno="1408"><highlight class="normal"></highlight></codeline> -<codeline lineno="1409" refid="classcmd2_1_1NotSettableError" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1NotSettableError" kindref="compound">NotSettableError</ref>(Exception):</highlight></codeline> -<codeline lineno="1410"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1411"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1412" refid="namespacecmd2_1a0880940558f324b3958aedfc430f592d" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="namespacecmd2_1a0880940558f324b3958aedfc430f592d" kindref="member">cast</ref>(current,<sp/>new):</highlight></codeline> -<codeline lineno="1413"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"""Tries<sp/>to<sp/>force<sp/>a<sp/>new<sp/>value<sp/>into<sp/>the<sp/>same<sp/>type<sp/>as<sp/>the<sp/>current."""</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1414"><highlight class="normal"><sp/><sp/><sp/><sp/>typ<sp/>=<sp/>type(current)</highlight></codeline> -<codeline lineno="1415"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>typ<sp/>==<sp/>bool:</highlight></codeline> -<codeline lineno="1416"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1417"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>bool(int(new))</highlight></codeline> -<codeline lineno="1418"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>(ValueError,<sp/>TypeError):</highlight></codeline> -<codeline lineno="1419"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1420"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1421"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new<sp/>=<sp/>new.lower()<sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1422"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1423"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1424"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(new==</highlight><highlight class="stringliteral">'on'</highlight><highlight class="normal">)<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>(new[0]<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>(</highlight><highlight class="stringliteral">'y'</highlight><highlight class="normal">,</highlight><highlight class="stringliteral">'t'</highlight><highlight class="normal">)):</highlight></codeline> -<codeline lineno="1425"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1426"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(new==</highlight><highlight class="stringliteral">'off'</highlight><highlight class="normal">)<sp/></highlight><highlight class="keywordflow">or</highlight><highlight class="normal"><sp/>(new[0]<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>(</highlight><highlight class="stringliteral">'n'</highlight><highlight class="normal">,</highlight><highlight class="stringliteral">'f'</highlight><highlight class="normal">)):</highlight></codeline> -<codeline lineno="1427"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1428"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1429"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1430"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>typ(new)</highlight></codeline> -<codeline lineno="1431"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1432"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">pass</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1433"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">print</highlight><highlight class="normal"><sp/>(</highlight><highlight class="stringliteral">"Problem<sp/>setting<sp/>parameter<sp/>(now<sp/>%s)<sp/>to<sp/>%s;<sp/>incorrect<sp/>type?"</highlight><highlight class="normal"><sp/>%<sp/>(current,<sp/>new))</highlight></codeline> -<codeline lineno="1434"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>current</highlight></codeline> -<codeline lineno="1435"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1436" refid="classcmd2_1_1Statekeeper" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Statekeeper" kindref="compound">Statekeeper</ref>(object):</highlight></codeline> -<codeline lineno="1437" refid="classcmd2_1_1Statekeeper_1a84a5071e786e0dff91a413e3fd0470c1" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Statekeeper_1a3550a0316a7f911d7b13da87844ee882" kindref="member">__init__</ref>(self,<sp/>obj,<sp/>attribs):</highlight></codeline> -<codeline lineno="1438"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Statekeeper_1a84a5071e786e0dff91a413e3fd0470c1" kindref="member">obj</ref><sp/>=<sp/>obj</highlight></codeline> -<codeline lineno="1439"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Statekeeper_1a18466d6cef3f084e92f086a86d4a7244" kindref="member">attribs</ref><sp/>=<sp/>attribs</highlight></codeline> -<codeline lineno="1440"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Statekeeper_1a84a5071e786e0dff91a413e3fd0470c1" kindref="member">obj</ref>:</highlight></codeline> -<codeline lineno="1441"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Statekeeper_1a848245f65d18fddf4bb768bd3f911b30" kindref="member">save</ref>()</highlight></codeline> -<codeline lineno="1442" refid="classcmd2_1_1Statekeeper_1a848245f65d18fddf4bb768bd3f911b30" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Statekeeper_1a848245f65d18fddf4bb768bd3f911b30" kindref="member">save</ref>(self):</highlight></codeline> -<codeline lineno="1443"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>attrib<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Statekeeper_1a18466d6cef3f084e92f086a86d4a7244" kindref="member">attribs</ref>:</highlight></codeline> -<codeline lineno="1444"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>setattr(self,<sp/>attrib,<sp/>getattr(self.<ref refid="classcmd2_1_1Statekeeper_1a84a5071e786e0dff91a413e3fd0470c1" kindref="member">obj</ref>,<sp/>attrib))</highlight></codeline> -<codeline lineno="1445" refid="classcmd2_1_1Statekeeper_1a00e6cfdbe169bcb76db888b9d0beff03" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Statekeeper_1a00e6cfdbe169bcb76db888b9d0beff03" kindref="member">restore</ref>(self):</highlight></codeline> -<codeline lineno="1446"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Statekeeper_1a84a5071e786e0dff91a413e3fd0470c1" kindref="member">obj</ref>:</highlight></codeline> -<codeline lineno="1447"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>attrib<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Statekeeper_1a18466d6cef3f084e92f086a86d4a7244" kindref="member">attribs</ref>:</highlight></codeline> -<codeline lineno="1448"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>setattr(self.<ref refid="classcmd2_1_1Statekeeper_1a84a5071e786e0dff91a413e3fd0470c1" kindref="member">obj</ref>,<sp/>attrib,<sp/>getattr(self,<sp/>attrib))<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1449"><highlight class="normal"></highlight></codeline> -<codeline lineno="1450" refid="classcmd2_1_1Borg" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Borg" kindref="compound">Borg</ref>(object):</highlight></codeline> -<codeline lineno="1451"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''All<sp/>instances<sp/>of<sp/>any<sp/>Borg<sp/>subclass<sp/>will<sp/>share<sp/>state.</highlight></codeline> -<codeline lineno="1452"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>from<sp/>Python<sp/>Cookbook,<sp/>2nd<sp/>Ed.,<sp/>recipe<sp/>6.16'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1453" refid="classcmd2_1_1Borg_1a3af75c745a5c124376fa050b4d1c3912" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>_shared_state<sp/>=<sp/>{}</highlight></codeline> -<codeline lineno="1454" refid="classcmd2_1_1Borg_1addff1031aaf78f5e1dc5ff0c6dba5137" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Borg_1addff1031aaf78f5e1dc5ff0c6dba5137" kindref="member">__new__</ref>(cls,<sp/>*a,<sp/>**k):</highlight></codeline> -<codeline lineno="1455"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>obj<sp/>=<sp/>object.__new__(cls,<sp/>*a,<sp/>**k)</highlight></codeline> -<codeline lineno="1456"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>obj.__dict__<sp/>=<sp/>cls._shared_state</highlight></codeline> -<codeline lineno="1457"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>obj</highlight></codeline> -<codeline lineno="1458"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1459" refid="classcmd2_1_1OutputTrap" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1OutputTrap" kindref="compound">OutputTrap</ref>(<ref refid="classcmd2_1_1Borg" kindref="compound">Borg</ref>):</highlight></codeline> -<codeline lineno="1460"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Instantiate<sp/><sp/>an<sp/>OutputTrap<sp/>to<sp/>divert/capture<sp/>ALL<sp/>stdout<sp/>output.<sp/><sp/>For<sp/>use<sp/>in<sp/>unit<sp/>testing.</highlight></codeline> -<codeline lineno="1461"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>Call<sp/>`tearDown()`<sp/>to<sp/>return<sp/>to<sp/>normal<sp/>output.'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1462" refid="classcmd2_1_1OutputTrap_1ac7a0b848dc18c74b089bc0d4044996de" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1OutputTrap_1a0dc45d536432b07d7ec32da5755b5c85" kindref="member">__init__</ref>(self):</highlight></codeline> -<codeline lineno="1463"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1OutputTrap_1a9117a6d5bfa07f1eeade54f24eeba0ed" kindref="member">contents</ref><sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1464"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1OutputTrap_1ac7a0b848dc18c74b089bc0d4044996de" kindref="member">old_stdout</ref><sp/>=<sp/>sys.stdout</highlight></codeline> -<codeline lineno="1465"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sys.stdout<sp/>=<sp/>self</highlight></codeline> -<codeline lineno="1466" refid="classcmd2_1_1OutputTrap_1aa3bec468fdc0d248cd43cb8e8e0d96cd" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1OutputTrap_1aa3bec468fdc0d248cd43cb8e8e0d96cd" kindref="member">write</ref>(self,<sp/>txt):</highlight></codeline> -<codeline lineno="1467"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1OutputTrap_1a9117a6d5bfa07f1eeade54f24eeba0ed" kindref="member">contents</ref><sp/>+=<sp/>txt</highlight></codeline> -<codeline lineno="1468" refid="classcmd2_1_1OutputTrap_1a492ceb8dfb3f6e90bf095a710ab56ad1" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1OutputTrap_1a492ceb8dfb3f6e90bf095a710ab56ad1" kindref="member">read</ref>(self):</highlight></codeline> -<codeline lineno="1469"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>self.<ref refid="classcmd2_1_1OutputTrap_1a9117a6d5bfa07f1eeade54f24eeba0ed" kindref="member">contents</ref></highlight></codeline> -<codeline lineno="1470"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1OutputTrap_1a9117a6d5bfa07f1eeade54f24eeba0ed" kindref="member">contents</ref><sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1471"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result</highlight></codeline> -<codeline lineno="1472" refid="classcmd2_1_1OutputTrap_1a06961b49c3e19e9984f077a08b3a75f2" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1OutputTrap_1a06961b49c3e19e9984f077a08b3a75f2" kindref="member">tearDown</ref>(self):</highlight></codeline> -<codeline lineno="1473"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sys.stdout<sp/>=<sp/>self.<ref refid="classcmd2_1_1OutputTrap_1ac7a0b848dc18c74b089bc0d4044996de" kindref="member">old_stdout</ref></highlight></codeline> -<codeline lineno="1474"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1OutputTrap_1a9117a6d5bfa07f1eeade54f24eeba0ed" kindref="member">contents</ref><sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1475"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1476" refid="classcmd2_1_1Cmd2TestCase" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd2TestCase" kindref="compound">Cmd2TestCase</ref>(unittest.TestCase):</highlight></codeline> -<codeline lineno="1477"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'''Subclass<sp/>this,<sp/>setting<sp/>CmdApp,<sp/>to<sp/>make<sp/>a<sp/>unittest.TestCase<sp/>class</highlight></codeline> -<codeline lineno="1478"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>that<sp/>will<sp/>execute<sp/>the<sp/>commands<sp/>in<sp/>a<sp/>transcript<sp/>file<sp/>and<sp/>expect<sp/>the<sp/>results<sp/>shown.</highlight></codeline> -<codeline lineno="1479"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>See<sp/>example.py'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1480" refid="classcmd2_1_1Cmd2TestCase_1ae3ce50557636abee00a3941461dd450c" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>CmdApp<sp/>=<sp/></highlight><highlight class="keywordtype">None</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1481" refid="classcmd2_1_1Cmd2TestCase_1ad319aa2e1874f60202610e5b8de33dbb" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd2TestCase_1ad82fc3489ffaf8ae227e7b122df389e0" kindref="member">fetchTranscripts</ref>(self):</highlight></codeline> -<codeline lineno="1482"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1ad319aa2e1874f60202610e5b8de33dbb" kindref="member">transcripts</ref><sp/>=<sp/>{}</highlight></codeline> -<codeline lineno="1483"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>fileset<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1ae3ce50557636abee00a3941461dd450c" kindref="member">CmdApp</ref>.testfiles:</highlight></codeline> -<codeline lineno="1484"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>fname<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>glob.glob(fileset):</highlight></codeline> -<codeline lineno="1485"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tfile<sp/>=<sp/>open(fname)</highlight></codeline> -<codeline lineno="1486"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1ad319aa2e1874f60202610e5b8de33dbb" kindref="member">transcripts</ref>[fname]<sp/>=<sp/>iter(tfile.readlines())</highlight></codeline> -<codeline lineno="1487"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tfile.close()</highlight></codeline> -<codeline lineno="1488"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>len(self.<ref refid="classcmd2_1_1Cmd2TestCase_1ad319aa2e1874f60202610e5b8de33dbb" kindref="member">transcripts</ref>):</highlight></codeline> -<codeline lineno="1489"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>(StandardError,),<sp/></highlight><highlight class="stringliteral">"No<sp/>test<sp/>files<sp/>found<sp/>-<sp/>nothing<sp/>to<sp/>test."</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1490" refid="classcmd2_1_1Cmd2TestCase_1a5892c02ac5ee5a25c47bbfa1c648647b" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd2TestCase_1a5892c02ac5ee5a25c47bbfa1c648647b" kindref="member">setUp</ref>(self):</highlight></codeline> -<codeline lineno="1491"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1ae3ce50557636abee00a3941461dd450c" kindref="member">CmdApp</ref>:</highlight></codeline> -<codeline lineno="1492"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1adeb5a7b735ad3b7f23a3c44d15ad283e" kindref="member">outputTrap</ref><sp/>=<sp/><ref refid="classcmd2_1_1OutputTrap" kindref="compound">OutputTrap</ref>()</highlight></codeline> -<codeline lineno="1493"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1acc7fc3df4fb04682fd1e4b2c4cc4cd3c" kindref="member">cmdapp</ref><sp/>=<sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1ae3ce50557636abee00a3941461dd450c" kindref="member">CmdApp</ref>()</highlight></codeline> -<codeline lineno="1494"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1ad82fc3489ffaf8ae227e7b122df389e0" kindref="member">fetchTranscripts</ref>()</highlight></codeline> -<codeline lineno="1495" refid="classcmd2_1_1Cmd2TestCase_1acc8585a2192f48e04a8eafd63348c590" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd2TestCase_1acc8585a2192f48e04a8eafd63348c590" kindref="member">runTest</ref>(self):<sp/></highlight><highlight class="comment">#<sp/>was<sp/>testall</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1496"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1ae3ce50557636abee00a3941461dd450c" kindref="member">CmdApp</ref>:</highlight></codeline> -<codeline lineno="1497"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>its<sp/>=<sp/>sorted(self.transcripts.items())</highlight></codeline> -<codeline lineno="1498"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(fname,<sp/>transcript)<sp/></highlight><highlight class="keywordflow">in</highlight><highlight class="normal"><sp/>its:</highlight></codeline> -<codeline lineno="1499"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1aaad687718f366338a76f83cb6547a258" kindref="member">_test_transcript</ref>(fname,<sp/>transcript)</highlight></codeline> -<codeline lineno="1500" refid="classcmd2_1_1Cmd2TestCase_1aa85409ff40b934d96ca1b3d3ff9e897d" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>regexPattern<sp/>=<sp/>pyparsing.QuotedString(quoteChar=</highlight><highlight class="stringliteral">r'/'</highlight><highlight class="normal">,<sp/>escChar=</highlight><highlight class="stringliteral">'\\'</highlight><highlight class="normal">,<sp/>multiline=</highlight><highlight class="keyword">True</highlight><highlight class="normal">,<sp/>unquoteResults=</highlight><highlight class="keyword">True</highlight><highlight class="normal">)</highlight></codeline> -<codeline lineno="1501"><highlight class="normal"><sp/><sp/><sp/><sp/>regexPattern.ignore(pyparsing.cStyleComment)</highlight></codeline> -<codeline lineno="1502" refid="classcmd2_1_1Cmd2TestCase_1a29b62f02c603b82014102babccd0c40e" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>notRegexPattern<sp/>=<sp/>pyparsing.Word(pyparsing.printables)</highlight></codeline> -<codeline lineno="1503"><highlight class="normal"><sp/><sp/><sp/><sp/>notRegexPattern.setParseAction(</highlight><highlight class="keyword">lambda</highlight><highlight class="normal"><sp/>t:<sp/>re.escape(t[0]))</highlight></codeline> -<codeline lineno="1504" refid="classcmd2_1_1Cmd2TestCase_1af9574fde56ba05bc1532a6a028fb566d" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>expectationParser<sp/>=<sp/>regexPattern<sp/>|<sp/>notRegexPattern</highlight></codeline> -<codeline lineno="1505" refid="classcmd2_1_1Cmd2TestCase_1a946827bef7050042cee99d3749c976d0" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>anyWhitespace<sp/>=<sp/>re.compile(</highlight><highlight class="stringliteral">r'\s'</highlight><highlight class="normal">,<sp/>re.DOTALL<sp/>|<sp/>re.MULTILINE)</highlight></codeline> -<codeline lineno="1506" refid="classcmd2_1_1Cmd2TestCase_1aaad687718f366338a76f83cb6547a258" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd2TestCase_1aaad687718f366338a76f83cb6547a258" kindref="member">_test_transcript</ref>(self,<sp/>fname,<sp/>transcript):</highlight></codeline> -<codeline lineno="1507"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>lineNum<sp/>=<sp/>0</highlight></codeline> -<codeline lineno="1508"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>finished<sp/>=<sp/></highlight><highlight class="keyword">False</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1509"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>transcript.next()</highlight></codeline> -<codeline lineno="1510"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>lineNum<sp/>+=<sp/>1</highlight></codeline> -<codeline lineno="1511"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tests_run<sp/>=<sp/>0</highlight></codeline> -<codeline lineno="1512"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>finished:</highlight></codeline> -<codeline lineno="1513"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Scroll<sp/>forward<sp/>to<sp/>where<sp/>actual<sp/>commands<sp/>begin</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1514"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>line.startswith(self.<ref refid="classcmd2_1_1Cmd2TestCase_1acc7fc3df4fb04682fd1e4b2c4cc4cd3c" kindref="member">cmdapp</ref>.prompt):</highlight></codeline> -<codeline lineno="1515"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1516"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>transcript.next()</highlight></codeline> -<codeline lineno="1517"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>StopIteration:</highlight></codeline> -<codeline lineno="1518"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>finished<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1519"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1520"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>lineNum<sp/>+=<sp/>1</highlight></codeline> -<codeline lineno="1521"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>command<sp/>=<sp/>[line[len(self.<ref refid="classcmd2_1_1Cmd2TestCase_1acc7fc3df4fb04682fd1e4b2c4cc4cd3c" kindref="member">cmdapp</ref>.prompt):]]</highlight></codeline> -<codeline lineno="1522"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>transcript.next()</highlight></codeline> -<codeline lineno="1523"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Read<sp/>the<sp/>entirety<sp/>of<sp/>a<sp/>multi-line<sp/>command</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1524"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/>line.startswith(self.<ref refid="classcmd2_1_1Cmd2TestCase_1acc7fc3df4fb04682fd1e4b2c4cc4cd3c" kindref="member">cmdapp</ref>.continuation_prompt):</highlight></codeline> -<codeline lineno="1525"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>command.append(line[len(self.<ref refid="classcmd2_1_1Cmd2TestCase_1acc7fc3df4fb04682fd1e4b2c4cc4cd3c" kindref="member">cmdapp</ref>.continuation_prompt):])</highlight></codeline> -<codeline lineno="1526"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1527"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>transcript.next()</highlight></codeline> -<codeline lineno="1528"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>StopIteration:</highlight></codeline> -<codeline lineno="1529"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">raise</highlight><highlight class="normal"><sp/>(StopIteration,<sp/></highlight></codeline> -<codeline lineno="1530"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">'Transcript<sp/>broke<sp/>off<sp/>while<sp/>reading<sp/>command<sp/>beginning<sp/>at<sp/>line<sp/>%d<sp/>with\n%s'</highlight><highlight class="normal"><sp/></highlight></codeline> -<codeline lineno="1531"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>%<sp/>(command[0]))</highlight></codeline> -<codeline lineno="1532"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>lineNum<sp/>+=<sp/>1</highlight></codeline> -<codeline lineno="1533"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>command<sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">.join(command)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1534"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Send<sp/>the<sp/>command<sp/>into<sp/>the<sp/>application<sp/>and<sp/>capture<sp/>the<sp/>resulting<sp/>output</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1535"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>stop<sp/>=<sp/>self.cmdapp.onecmd_plus_hooks(command)</highlight></codeline> -<codeline lineno="1536"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#TODO:<sp/>should<sp/>act<sp/>on<sp/>``stop``</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1537"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>self.outputTrap.read()</highlight></codeline> -<codeline lineno="1538"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Read<sp/>the<sp/>expected<sp/>result<sp/>from<sp/>transcript</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1539"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>line.startswith(self.<ref refid="classcmd2_1_1Cmd2TestCase_1acc7fc3df4fb04682fd1e4b2c4cc4cd3c" kindref="member">cmdapp</ref>.prompt):</highlight></codeline> -<codeline lineno="1540"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>message<sp/>=<sp/></highlight><highlight class="stringliteral">'\nFile<sp/>%s,<sp/>line<sp/>%d\nCommand<sp/>was:\n%s\nExpected:<sp/>(nothing)\nGot:\n%s\n'</highlight><highlight class="normal">%\</highlight></codeline> -<codeline lineno="1541"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(fname,<sp/>lineNum,<sp/>command,<sp/>result)<sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1542"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.assert_(not(result.strip()),<sp/>message)</highlight></codeline> -<codeline lineno="1543"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1544"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>expected<sp/>=<sp/>[]</highlight></codeline> -<codeline lineno="1545"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">not</highlight><highlight class="normal"><sp/>line.startswith(self.<ref refid="classcmd2_1_1Cmd2TestCase_1acc7fc3df4fb04682fd1e4b2c4cc4cd3c" kindref="member">cmdapp</ref>.prompt):</highlight></codeline> -<codeline lineno="1546"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>expected.append(line)</highlight></codeline> -<codeline lineno="1547"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">try</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1548"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>line<sp/>=<sp/>transcript.next()</highlight></codeline> -<codeline lineno="1549"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">except</highlight><highlight class="normal"><sp/>StopIteration:</highlight></codeline> -<codeline lineno="1550"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>finished<sp/>=<sp/></highlight><highlight class="keyword">True</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1551"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1552"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>lineNum<sp/>+=<sp/>1</highlight></codeline> -<codeline lineno="1553"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>expected<sp/>=<sp/></highlight><highlight class="stringliteral">''</highlight><highlight class="normal">.join(expected)</highlight></codeline> -<codeline lineno="1554"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>Compare<sp/>actual<sp/>result<sp/>to<sp/>expected</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1555"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>message<sp/>=<sp/></highlight><highlight class="stringliteral">'\nFile<sp/>%s,<sp/>line<sp/>%d\nCommand<sp/>was:\n%s\nExpected:\n%s\nGot:\n%s\n'</highlight><highlight class="normal">%\</highlight></codeline> -<codeline lineno="1556"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(fname,<sp/>lineNum,<sp/>command,<sp/>expected,<sp/>result)<sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1557"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>expected<sp/>=<sp/>self.expectationParser.transformString(expected)</highlight></codeline> -<codeline lineno="1558"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">#<sp/>checking<sp/>whitespace<sp/>is<sp/>a<sp/>pain<sp/>-<sp/>let's<sp/>skip<sp/>it</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1559"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>expected<sp/>=<sp/>self.anyWhitespace.sub(</highlight><highlight class="stringliteral">''</highlight><highlight class="normal">,<sp/>expected)</highlight></codeline> -<codeline lineno="1560"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>self.anyWhitespace.sub(</highlight><highlight class="stringliteral">''</highlight><highlight class="normal">,<sp/>result)</highlight></codeline> -<codeline lineno="1561"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.assert_(re.match(expected,<sp/>result,<sp/>re.MULTILINE<sp/>|<sp/>re.DOTALL),<sp/>message)</highlight></codeline> -<codeline lineno="1562"><highlight class="normal"></highlight></codeline> -<codeline lineno="1563" refid="classcmd2_1_1Cmd2TestCase_1a12a9839011a264bf817e646114523052" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">def<sp/></highlight><highlight class="normal"><ref refid="classcmd2_1_1Cmd2TestCase_1a12a9839011a264bf817e646114523052" kindref="member">tearDown</ref>(self):</highlight></codeline> -<codeline lineno="1564"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>self.<ref refid="classcmd2_1_1Cmd2TestCase_1ae3ce50557636abee00a3941461dd450c" kindref="member">CmdApp</ref>:</highlight></codeline> -<codeline lineno="1565"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>self.outputTrap.tearDown()</highlight></codeline> -<codeline lineno="1566"><highlight class="normal"></highlight></codeline> -<codeline lineno="1567"><highlight class="normal"></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>__name__<sp/>==<sp/></highlight><highlight class="stringliteral">'__main__'</highlight><highlight class="normal">:</highlight></codeline> -<codeline lineno="1568"><highlight class="normal"><sp/><sp/><sp/><sp/>doctest.testmod(optionflags<sp/>=<sp/>doctest.NORMALIZE_WHITESPACE)</highlight></codeline> -<codeline lineno="1569"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> -<codeline lineno="1570"><highlight class="normal"></highlight><highlight class="stringliteral">'''</highlight></codeline> -<codeline lineno="1571"><highlight class="stringliteral">To<sp/>make<sp/>your<sp/>application<sp/>transcript-testable,<sp/>replace<sp/></highlight></codeline> -<codeline lineno="1572"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="1573"><highlight class="stringliteral">::</highlight></codeline> -<codeline lineno="1574"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="1575"><highlight class="stringliteral"><sp/><sp/>app<sp/>=<sp/>MyApp()</highlight></codeline> -<codeline lineno="1576"><highlight class="stringliteral"><sp/><sp/>app.cmdloop()</highlight></codeline> -<codeline lineno="1577"><highlight class="stringliteral"><sp/><sp/></highlight></codeline> -<codeline lineno="1578"><highlight class="stringliteral">with</highlight></codeline> -<codeline lineno="1579"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="1580"><highlight class="stringliteral">::</highlight></codeline> -<codeline lineno="1581"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="1582"><highlight class="stringliteral"><sp/><sp/>app<sp/>=<sp/>MyApp()</highlight></codeline> -<codeline lineno="1583"><highlight class="stringliteral"><sp/><sp/>cmd2.run(app)</highlight></codeline> -<codeline lineno="1584"><highlight class="stringliteral"><sp/><sp/></highlight></codeline> -<codeline lineno="1585"><highlight class="stringliteral">Then<sp/>run<sp/>a<sp/>session<sp/>of<sp/>your<sp/>application<sp/>and<sp/>paste<sp/>the<sp/>entire<sp/>screen<sp/>contents</highlight></codeline> -<codeline lineno="1586"><highlight class="stringliteral">into<sp/>a<sp/>file,<sp/>``transcript.test``,<sp/>and<sp/>invoke<sp/>the<sp/>test<sp/>like::</highlight></codeline> -<codeline lineno="1587"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="1588"><highlight class="stringliteral"><sp/><sp/>python<sp/>myapp.py<sp/>--test<sp/>transcript.test</highlight></codeline> -<codeline lineno="1589"><highlight class="stringliteral"></highlight></codeline> -<codeline lineno="1590"><highlight class="stringliteral">Wildcards<sp/>can<sp/>be<sp/>used<sp/>to<sp/>test<sp/>against<sp/>multiple<sp/>transcript<sp/>files.</highlight></codeline> -<codeline lineno="1591"><highlight class="stringliteral">'''</highlight><highlight class="normal"></highlight></codeline> -<codeline lineno="1592"><highlight class="normal"></highlight></codeline> -<codeline lineno="1593"><highlight class="normal"></highlight></codeline> - </programlisting> - <location file="/Users/amrogers/Developer/Projects/cmd2/cmd2.py"/> - </compounddef> -</doxygen> |