Difference between revisions of "Text Filters"

From BBEditExtras
Jump to: navigation, search
(User created Text Filters)
Line 1: Line 1:
Text Filters accept the selection range (or entire document, if no selection) as input, and return text that replaces the selection range (or document). They may contain Unix scripts, AppleScript files, text factories, and Automator workflows. The selected text (or front document contents, if there is no selection) is passed as `argv[1]` to Unix executables, as a string to text factories, as a reference to a `RunFromBBEdit` entry point in AppleScripts, as text input to Automator workflows, and as a source to text factories.
+
Text filters operate on the selected text of the frontmost document (or on the whole document if there is no selection).
 +
 
 +
The selection will be replaced with the filtered text (or the whole document if there is no selection).
 +
 
 +
A text filter may be a Unix script, AppleScript file, BBEdit Text Factory, or Automator workflow.
 +
 
 +
Text filter folder path:
 +
 
 +
    ~/Library/Application Support/BBEdit/Text Filters
 +
 
 +
To use a Text Filter, select Menu_Bar > Text > Apply Text Filter > your_filter_name
 +
 
 +
To easily edit a text filter hold down the Option-key when selecting one from the “Apply Text Filter” menu.
 +
 
 +
Holding down the Shift-key when selecting a text filter will reveal it in the Finder.
 +
 
 +
'''NOTES:'''
 +
 
 +
The selected text (or front document contents, if there is no selection) is passed as `argv[1]` to Unix executables, as a string to text factories, as a reference to a `RunFromBBEdit` entry point in AppleScripts, as text input to Automator workflows, and as a source to text factories.
  
 
Starting with BBEdit 10.1, text input is passed to Unix executables via `stdin`, not `argv[0]`.
 
Starting with BBEdit 10.1, text input is passed to Unix executables via `stdin`, not `argv[0]`.
  
Text filters live in ~/Library/Application Support/BBEdit/Text Filters. To use a Text Filter, select Apply Text Filter from the Text menu.
+
'''EXAMPLES:'''
 +
 
 +
Transform tab-delimited text into columns:
 +
 
 +
<pre>
 +
#!/usr/bin/env bash
 +
column -t -s ' ';
 +
</pre>
 +
 
 +
Change “http” to https in URLs:
 +
 
 +
<pre>
 +
#!/usr/bin/env bash
 +
sed -E 's!http://!https://!';
 +
</pre>
 +
 
 +
Find Every Email Address - Sort - Remove Duplicates:
 +
 
 +
<pre>
 +
#! /usr/bin/env perl -0777 -nsw
 +
my @array = m!\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b!ig;
 +
my %hash = map { $_ => 1 } @array;
 +
my @unique = sort(keys %hash);
 +
$, = "\n";
 +
print @unique;
 +
</pre>
  
 
==User created Text Filters==
 
==User created Text Filters==

Revision as of 13:37, 26 February 2016

Text filters operate on the selected text of the frontmost document (or on the whole document if there is no selection).

The selection will be replaced with the filtered text (or the whole document if there is no selection).

A text filter may be a Unix script, AppleScript file, BBEdit Text Factory, or Automator workflow.

Text filter folder path:

    ~/Library/Application Support/BBEdit/Text Filters

To use a Text Filter, select Menu_Bar > Text > Apply Text Filter > your_filter_name

To easily edit a text filter hold down the Option-key when selecting one from the “Apply Text Filter” menu.

Holding down the Shift-key when selecting a text filter will reveal it in the Finder.

NOTES:

The selected text (or front document contents, if there is no selection) is passed as `argv[1]` to Unix executables, as a string to text factories, as a reference to a `RunFromBBEdit` entry point in AppleScripts, as text input to Automator workflows, and as a source to text factories.

Starting with BBEdit 10.1, text input is passed to Unix executables via `stdin`, not `argv[0]`.

EXAMPLES:

Transform tab-delimited text into columns:

#!/usr/bin/env bash
column -t -s '	';

Change “http” to https in URLs:

#!/usr/bin/env bash
sed -E 's!http://!https://!';

Find Every Email Address - Sort - Remove Duplicates:

#! /usr/bin/env perl -0777 -nsw
my @array = m!\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b!ig;
my %hash = map { $_ => 1 } @array;
my @unique = sort(keys %hash);
$, = "\n";
print @unique;

User created Text Filters