From 1e21de272a6f9d261a5d72172c397f990c3c2021 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20=E2=80=9Cpep=E2=80=9D=20Buquet?= Date: Fri, 20 Apr 2018 15:06:56 +0100 Subject: initial version of a lastlog plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maxime “pep” Buquet --- plugins/lastlog.py | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 plugins/lastlog.py (limited to 'plugins') diff --git a/plugins/lastlog.py b/plugins/lastlog.py new file mode 100644 index 00000000..ae946f46 --- /dev/null +++ b/plugins/lastlog.py @@ -0,0 +1,91 @@ +#! /usr/bin/env python3 +# -*- coding: utf-8 -*- +# vim:fenc=utf-8 +# +# Copyright © 2018 Maxime “pep” Buquet +# +# Distributed under terms of the zlib license. See the COPYING file. + +""" + Search provided string in the buffer and return all results on the screen +""" + +import re +from poezio.plugin import BasePlugin +from poezio.tabs import ConversationTab, PrivateTab, MucTab +from poezio.text_buffer import Message, TextBuffer + + +def add_line(text_buffer: TextBuffer, text: str) -> None: + """Adds a textual entry in the TextBuffer""" + text_buffer.add_message( + text, + None, # Time + None, # Nickname + None, # Nick Color + False, # History + None, # User + False, # Highlight + None, # Identifier + None, # str_time + None, # Jid + ) + + +def add_message(text_buffer: TextBuffer, msg: Message) -> None: + """Adds a message to the TextBuffer""" + text_buffer.add_message( + msg.txt, + msg.time, + None, # Nickname + None, # Nick Color + False, # History + None, # User + msg.highlight, + msg.identifier, + msg.str_time, + None, # Jid + ) + + +class Plugin(BasePlugin): + """Lastlog Plugin""" + + def init(self): + self.api.add_tab_command( + ConversationTab, 'lastlog', self.command_lastlog, + usage='', help=( + 'Search in the buffer and returns results' + 'on the screen' + ), + ) + self.api.add_tab_command( + MucTab, 'lastlog', self.command_lastlog, usage='', + help=('Search in the buffer and returns results' + 'on the screen'), + ) + self.api.add_tab_command( + PrivateTab, 'lastlog', self.command_lastlog, usage='', + help=('Search in the buffer and returns results' + 'on the screen'), + ) + + def command_lastlog(self, input_): + """Define lastlog command""" + + text_buffer = self.api.current_tab()._text_buffer + search_re = re.compile(input_) + + res = [] + for message in text_buffer.messages: + if message.nickname is not None: + self.core.information('Foo: %s> %s' % (message.nickname, message.txt), 'Info') + if message.nickname is not None and \ + search_re.search(message.txt) is not None: + res.append(message) + + add_line(text_buffer, "Lastlog for '%s', %d match(es)" % (input_, len(res))) + + for message in res: + message.nickname = None + add_message(text_buffer, message) -- cgit v1.2.3 From 7250eff3353a76101ff60b2127751b58fbcbc1ce Mon Sep 17 00:00:00 2001 From: Madhur Garg Date: Wed, 12 Jun 2019 19:49:00 +0530 Subject: Corrected the search for lastlog messages and refresh of the window. Corrected the search for lastlog messages and refresh of the window. patch from Maxime Buquet Corrected the search for lastlog messages and refresh of the window. --- plugins/lastlog.py | 58 ++++++++++++++---------------------------------------- 1 file changed, 15 insertions(+), 43 deletions(-) (limited to 'plugins') diff --git a/plugins/lastlog.py b/plugins/lastlog.py index ae946f46..5198527e 100644 --- a/plugins/lastlog.py +++ b/plugins/lastlog.py @@ -12,7 +12,7 @@ import re from poezio.plugin import BasePlugin -from poezio.tabs import ConversationTab, PrivateTab, MucTab +from poezio import tabs from poezio.text_buffer import Message, TextBuffer @@ -32,60 +32,32 @@ def add_line(text_buffer: TextBuffer, text: str) -> None: ) -def add_message(text_buffer: TextBuffer, msg: Message) -> None: - """Adds a message to the TextBuffer""" - text_buffer.add_message( - msg.txt, - msg.time, - None, # Nickname - None, # Nick Color - False, # History - None, # User - msg.highlight, - msg.identifier, - msg.str_time, - None, # Jid - ) - - class Plugin(BasePlugin): """Lastlog Plugin""" def init(self): - self.api.add_tab_command( - ConversationTab, 'lastlog', self.command_lastlog, - usage='', help=( - 'Search in the buffer and returns results' - 'on the screen' - ), - ) - self.api.add_tab_command( - MucTab, 'lastlog', self.command_lastlog, usage='', - help=('Search in the buffer and returns results' - 'on the screen'), - ) - self.api.add_tab_command( - PrivateTab, 'lastlog', self.command_lastlog, usage='', - help=('Search in the buffer and returns results' - 'on the screen'), - ) + for tab in tabs.ConversationTab, tabs.PrivateTab, tabs.MucTab: + self.api.add_tab_command( + tab, + 'lastlog', + self.command_lastlog, + usage='', + help='Search in the buffer and returns results' + 'on the screen') def command_lastlog(self, input_): """Define lastlog command""" text_buffer = self.api.current_tab()._text_buffer - search_re = re.compile(input_) + search_re = re.compile(input_, re.I) res = [] + add_line(text_buffer, "Lastlog:") for message in text_buffer.messages: - if message.nickname is not None: - self.core.information('Foo: %s> %s' % (message.nickname, message.txt), 'Info') if message.nickname is not None and \ search_re.search(message.txt) is not None: res.append(message) - - add_line(text_buffer, "Lastlog for '%s', %d match(es)" % (input_, len(res))) - - for message in res: - message.nickname = None - add_message(text_buffer, message) + add_line(text_buffer, "%s" % (message.txt)) + add_line(text_buffer, "End of Lastlog") + self.api.current_tab().text_win.pos = 0 + self.api.current_tab().core.refresh_window() -- cgit v1.2.3 From f9d34fc789e038280b63f5b76ae0130bf05c269e Mon Sep 17 00:00:00 2001 From: Madhur Garg Date: Mon, 17 Jun 2019 18:17:56 +0530 Subject: Updated copyright for lastlog plugin --- plugins/lastlog.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'plugins') diff --git a/plugins/lastlog.py b/plugins/lastlog.py index 5198527e..fd500e08 100644 --- a/plugins/lastlog.py +++ b/plugins/lastlog.py @@ -2,7 +2,8 @@ # -*- coding: utf-8 -*- # vim:fenc=utf-8 # -# Copyright © 2018 Maxime “pep” Buquet +# Copyright © 2018 Maxime “pep” Buquet +# Copyright © 2019 Madhur Garg # # Distributed under terms of the zlib license. See the COPYING file. -- cgit v1.2.3