[TxMt] filtering command with CocoaDialog
Eric Hsu
erichsu at math.sfsu.edu
Sun Jan 9 01:09:27 UTC 2005
hi folks,
Another tip I thought I'd share. I often have situations where I
have to discard all lines in a file that start with a number, or
other cleanup tasks like that. Now, you can use TM's Text>Filter
Through Command... and then use grep or grep -v. But I have a hard
time remembering grep's regexp format. It's already all I can do to
remember TM's and Perl's.
So I wanted to write a command to pop up a GUI input field so I could
enter in a Perl regexp for lines to match with two buttons so I could
either Keep only the matching lines or Discard the matching lines.
So what I did was toss together a quick script in Perl and use
CocoaDialog as a front-end. To use this, you need to download
CocoaDialog from <http://cocoadialog.sourceforge.net/download.html>,
and put it in /Applications. (If you don't like that place, change
the path in the script.)
If you don't have a need for this script, you still might be able to
get some mileage out of CocoaDialog. It is a simple way to get GUI
onto any script that talks to the command-line. It has a number of
different window formats. Pashua is neat, but it requires use-ing a
module, and Platypus is more for creating drag-and-drop things.
good luck, Eric
---
TM Command.
Before: nothing
Command:
my$CD="/Applications/CocoaDialog.app/Contents/MacOS/CocoaDialog";my$rv=`$CD
inputbox --title "Filter with Regexp" --no-newline \\
--informative-text "Filter lines matching this Perl regular
expression:" \\ --text "" \\ --button1 "Keep" --button2
"Discard" \\ --width
500`;my($button_rv,$term)=split/\n/,$rv,2;while(<STDIN>){if($button_rv==2){unless(/$term/){print;}}elsif($button_rv==1){if(/$term/){print;}}}
Stdin: selected
Stdout: replace selected
--
Eric Hsu, Assistant Professor of Mathematics
San Francisco State University
erichsu at math.sfsu.edu
http://math.sfsu.edu/hsu
More information about the textmate
mailing list