[prev in list] [next in list] [prev in thread] [next in thread]
List: quanta
Subject: Re: [Quanta] multi-file, multi-line PCRE (regex) editing support
From: Eric Laffoon <sequitur () kde ! org>
Date: 2007-03-13 5:57:18
Message-ID: 200703122157.18953.sequitur () kde ! org
[Download RAW message or body]
On Monday 12 March 2007 7:33 pm, Greg Rundlett wrote:
> Way back in the stone age, I used Allaire Homesite to edit HTML. It
> was a very good code editor for Windows. In the modern era, circa
> 2001 I switched to Linux full-time and became a Quanta user. I've
> been thrilled with Quanta.
>
> One thing I've noted missing however, is the ability to manage large
> sets of files (using a graphical IDE) to do Perl-compatible Regular
> Expression -based editing of file contents. For example, say I have
> 10,000 PHP files, and they all say:
> <title>Hello World</title>
> <?
> // include foo library
> include ('foo.inc');
>
> Suppose I want to replace that with
>
> <?php
> $title='Hello World';
> include ('foo.php');
>
> There are multiple replacements with captured backreferences over
> multiple lines of 'input'. An obvious job for using the strong regex
> abilities of PHP with it's built-in functions like preg_replace().
>
> Question 1: Can I create my own Kommander based applications that kick
> off classes or functions that I have defined in php?
Sure, no problem, but why not just use the KFileReplace plugin? It does it
elegantly with multiline replace, backups, directory control, wildcards,
saved searches and more.
>
> Continuing with my example, I have already defined (in a set of PHP
> files that I named for lack of a better term 'gregsEditor') a 'doEdit'
> function that would take arguments like the following:
>
> doEdit ($fileRegex, $pathString, $skipFiles, $verbose, $needle,
> $replacement, $backup, $test);
>
> Using the above scenario, the function call would be something like this:
>
> doEdit (
> '/.*.html$/',
> '/var/www/dev.example.com/public_html/',
> null,
> TRUE,
> '|<title>(.*)</title>\n?(^// ?include foo library\n)?(<?\w
> include\(\'foo.inc\'))\n|',
> '
> <?php
> $title=\'$1\';
> include ('foo.php');
> ',
> false);
>
> Question 2: Before I go implement this, is anyone aware of similar
> capabilities in code that I should know about rather than dusting off
> my old file editor code?
>
> I know Quanta has KFileReplace plugged in, but it does not handle
> multiple lines of source code as the selected source very well if at
> all, and it does not allow me fine-grained setting of the various
> pattern matching options (imUs) including look-ahead expressions etc.
> and lastly I do not know enough about the programmatic access to
> scripting the interaction for very specific and complex edits.
>
> Thanks,
> Greg
I haven't had to use KFileReplace's more advanced features a lot lately, but
unless recent code cleanings have stripped out features it does handle multi
line code and I thought it had an elegant way of handling strings and pattern
recognition and rewriting. I guess I should go look at it's pattern matching
abilities. I'll have to check to see if features got removed in rewrites.
You're of course welcome to build a Kommander based tool using PHP and even
make it available via KNewStuff.
--
Eric Laffoon - Quanta+ Team Leader
http://quanta.kdewebdev.org
_______________________________________________
Quanta mailing list
Quanta@mail.kde.org
https://mail.kde.org/mailman/listinfo/quanta
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic