From 7feaa34b2724f8a82c9346da8e4b054417cb3f6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Sun, 11 Dec 2005 16:25:40 +0000 Subject: [PATCH] Added original grep arguments -A -B -i and -r git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4589 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Extensions/Grep.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/product/ERP5/Extensions/Grep.py b/product/ERP5/Extensions/Grep.py index 48c0aac9cf..af0971ec3e 100755 --- a/product/ERP5/Extensions/Grep.py +++ b/product/ERP5/Extensions/Grep.py @@ -2,10 +2,11 @@ import re import cgi from Acquisition import aq_base -def traverse(ob, r, result): - if hasattr(aq_base(ob), 'objectValues'): +def traverse(ob, r, result, command_line_arguments): + if command_line_arguments['r'] and \ + hasattr(aq_base(ob), 'objectValues'): for sub in ob.objectValues(): - traverse(sub, r, result) + traverse(sub, r, result, command_line_arguments) try: if hasattr(aq_base(ob), 'manage_FTPget'): text = ob.manage_FTPget() @@ -14,21 +15,31 @@ def traverse(ob, r, result): except: text = None if text: - for l in text.split('\n'): + text_lines = text.split('\n') + for i, l in enumerate(text_lines): if r.search(l) is not None: + context = text_lines[i-command_line_arguments['B'] : + i+1+command_line_arguments['A']] path = '/'.join(ob.getPhysicalPath()) - result.append((path, l)) + result.append((path, "\n".join(context))) break -def grep(self, pattern): +def grep(self, pattern, A=0, B=0, r=1, i=0): + command_line_arguments = {} # emulate grep command line args + command_line_arguments['A'] = int(A) + command_line_arguments['B'] = int(B) + command_line_arguments['r'] = int(r) + re_flags = 0 + if int(i) : + re_flags = re.IGNORECASE result = [] - traverse(self, re.compile(pattern), result) + traverse(self, re.compile(pattern, re_flags), result, command_line_arguments) html_element_list = ['<html>', '<body>'] for path, line in result: path = cgi.escape(path) line = cgi.escape(line) html_element_list.append('<a href="%s/manage_workspace">%s</a>: %s<br/>' % ( -path, path, line)) +path, path, line.replace('\n', '<br/>'))) html_element_list.extend(['</body>', '</html>']) self.REQUEST.RESPONSE.setHeader('Content-Type', 'text/html') return '\n'.join(html_element_list) -- 2.30.9