From 8e29f6d1ff8402f7d2e2381d2d33b05dcc28503a Mon Sep 17 00:00:00 2001 From: mathieui Date: Sat, 11 Oct 2014 16:52:41 +0200 Subject: Add a /dump command to the XML tab --- doc/source/commands.rst | 6 ++++++ src/tabs/xmltab.py | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/doc/source/commands.rst b/doc/source/commands.rst index fc3aefa4..449d4095 100644 --- a/doc/source/commands.rst +++ b/doc/source/commands.rst @@ -541,10 +541,16 @@ XML tab commands ~~~~~~~~~~~~~~~~ .. glossary:: + :sorted: /clear [XML tab version] Clear the current buffer. + /dump + **Usage:** ``/dump `` + + Write the content of the XML buffer into a file. + /reset Reset the stanza filter. diff --git a/src/tabs/xmltab.py b/src/tabs/xmltab.py index 57b55103..d33f4d48 100644 --- a/src/tabs/xmltab.py +++ b/src/tabs/xmltab.py @@ -11,12 +11,14 @@ import logging log = logging.getLogger(__name__) import curses +import os from sleekxmpp.xmlstream import matcher from sleekxmpp.xmlstream.handler import Callback from . import Tab import windows +from xhtml import clean_text class XMLTab(Tab): def __init__(self): @@ -45,6 +47,10 @@ class XMLTab(Tab): usage=_(''), desc=_('Show only the stanzas matching the given xml mask.'), shortdesc=_('Filter by xml mask.')) + self.register_command('dump', self.command_dump, + usage=_(''), + desc=_('Writes the content of the XML buffer into a file.'), + shortdesc=_('Write in a file.')) self.input = self.default_help_message self.key_func['^T'] = self.close self.key_func['^I'] = self.completion @@ -111,6 +117,17 @@ class XMLTab(Tab): self.filter = '' self.refresh() + def command_dump(self, arg): + """/dump """ + xml = self.core.xml_buffer.messages[:] + text = '\n'.join(('%s %s' % (msg.str_time, clean_text(msg.txt)) for msg in xml)) + filename = os.path.expandvars(os.path.expanduser(arg)) + try: + with open(filename, 'w') as fd: + fd.write(text) + except Exception as e: + self.core.information('Could not write the XML dump: %s' % e, 'Error') + def on_slash(self): """ '/' is pressed, activate the input -- cgit v1.2.3