On 13 Oct 2020, at 06:54, Mathias af Jochnick <[email protected]> wrote:

> i'm trying to make 2 scripts to convert between IOS and Android i18n formats 
> to work. I've gotten Android -> IOS to work, but the other way around is a 
> challenge.
> 
> Basically, for each row in a file i want to convert
> "login_infoLabel" = "Do you need help? Press here.”;
> to
> <string name="login_infoLabel">Do you need help? Press here.</string
> 
> See my script below. The problem is the first search string to find the first 
> " on each row. I spoke with Patrik at BBEdit and he kindly informed me that 
> it was because AppleScript doesn't support grep

Patrick could not be more right!  AppleScript is not the tool for text; but 
BBEdit provides the Text Factory feature that allows you to use Perl (or 
Python, or sed) to do the work easily.

Here is your script written in Perl:

#! /usr/bin/perl
while (<>) {
        # changes quotes round string name to §, preserving them
        s~"(login_infoLabel)" ?= ?([^;]+);~<string name=§$1§>$2</string>~g;
        # delete the quotes not preserved
        s~"~~g;
        # restore the quotes round string name
        s~§~"~g;
        # remove the final semicolon
        s~;$~~;
        # Execute the substitutions
        print;
}

This script will operate on the front window.

How to do it—
1. Open a new Text Factory (Menu: File::New...), paste in the above script, and 
save it as test.pl in
~/Library/Application Support/BBEdit/Text Filters/
2. Open the (Menu: Window::Palettes::)Text Filters palette
3. Set a shortcut of you like
4. Run the script (filter) with your target window frontmost.

Notes—
I use "~" in the regex rather than "/".  You can use whatever you like.
s~found~replacement~g ;  #~g means replace all
Perl Regular Expressions differ from BBEdit's PRE in using $1, $2 etc rather 
than \1, \2
All the Perl knowledge you need to make the filter is:
        a valid shebang line (should not be necessary and was not in better 
days!);
        the while loop: while (<>) { ......  } ;
        a knowledge of regex in Perl, which is almost the same as BBEdit's 
implementation but more powerful.

JD





-- 
This is the BBEdit Talk public discussion group. If you have a feature request 
or need technical support, please email "[email protected]" rather than 
posting here. Follow @bbedit on Twitter: <https://twitter.com/bbedit>
--- 
You received this message because you are subscribed to the Google Groups 
"BBEdit Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/bbedit/74972111-C82C-41EF-9492-C3698E0B5301%40gmail.com.

Reply via email to