Textexpander 5 0 1

broken image


DETAILS Purchase a subscription to TextExpander.com to get access to all the apps: Chrome, Mac, Windows, iPhone and iPad. 30-day free trial available. OVERVIEW A quick shortcode while typing drops in the necessary 'snippets' of language to send to clients and customers. TextExpander keeps your whole team communicating consistently. Check out the TextExpander blog today to learn more about our productivity tool, text expansion tips and tricks or TextExpander news.

  1. Textexpander 5 0 1968
  2. Textexpander 5 0 123

June 5, 2015 at 10:27 AM by Dr. Drang

Yesterday, Gabe Weatherhead showed his current workflow for making iTunes and Amazon affiliate links. I realized that although I've written about my system for iTunes links, I haven't written up my current TextExpander snippet for Amazon links.1 Then I realized that the new version of TextExpander, with its support of JavaScript for Automation, offers a simpler way of making the links. This post is the result.

'Workflow' may not be the right word for what Gabe's doing. Through a clever combination of two menubar apps that automatically watch the clipboard and transform certain URLs, he doesn't actually do any work—he just copies a product URL from his browser and then pastes it. One of the apps cleans the cruft out of URLs on the clipboard and the other adds the affiliate codes. Both work behind the scenes and require no action on his part. I won't reveal the app combination here; you should go read his post and use his affiliate links.

Gabe used to use Keyboard Maestro to do his affiliate linking. He explains his switch this way:

I'm always happy to replace my scripts with a professionally made and supported alternative and here's a good way to do that.

I generally prefer to maintain as much control over my workflows as possible, even if it means a little more work for myself. Gabe's new system relies on a seemingly magical sequencing of the two apps he uses, and I distrust magic. Mashup 2 0 1 – professional quality remixing.

Here's my TextExpander snippet for getting Amazon affiliate links:

It's an AppleScript snippet and is triggered by the abbreviation ;amazon. It doesn't use the clipboard; it assumes that the product page for the item I want to link to is currently in the frontmost Safari tab. Because I've learned that this is pretty much always the situation when I make an Amazon link, I save myself a step of copying the URL by having AppleScript get it.

Here's the AppleScript content of the snippet:

Line 1 puts my Amazon Associates ID into the myTag variable. Line 3 grabs the URL of the frontmost tag and puts it into the theURL variable. If you're a Chrome user, Line 3 should be

Lines 5 and 6 set up and run a short shell command that extracts the ASIN (Amazon's product ID code) from theURL. I do this so I can clean up the URL before adding my affiliate code. Amazon links are often long and nasty, with all sorts of extraneous bits that show how you got to the page. Here's an example:

Most of that is unnecessary. The key is the ASIN: B004G5ZU32.

The guts of the extraction command is this Perl substitution one-liner:

The options to perl tell it to read every line of input, apply the substitution command, and print the output.

The substitution command may look a little odd. Search and replace regexes are usually delimited by slashes, but because slashes are in the search pattern, I took advantage of a cute Perl affordance that allows you to use other characters as the delimiters (I chose hashmarks) and avoid the need to escape the slashes with backslashes.

The search pattern looks for either dp/ or gp/product/ in the URL and gets the string that comes after it—everything up to the next slash or question mark. That string is the ASIN, which is captured because of the parentheses. The replacement pattern is just the captured ASIN. There may be better ways to get the ASIN from the URL, but this has worked well for me on a variety of products over a few years. I don't think it's ever failed.

Line 8 constructs a simplified Amazon URL to the product and appends my affiliate tag. For the example above, the output is

which is short and sweet.

After tweeting a screenshot of this snippet, I started thinking about TextExpander 5's new capabilities and how this script was a good candidate to be rewritten in JavaScript. I've always thought the AppleScript snippet was clumsy because of the need to 'shell out' to Perl to do the ASIN extraction.2 With the combination of TE5's support for JavaScript for Automation (JSA) and JavaScript's built-in regular expressions, the script could be made cleaner and easier to understand.

Here's the JavaScript content that does the trick:

The regular expressions for the search and replace patterns are the same as before, except that I had to escape the slashes in the search pattern. As far as I know, JavaScript doesn't have Perl's ability to use non-slash delimiters for regexes. Apple remote desktop 3 9 32.

Textexpander 5 0 1968

The JSA syntax for accessing applications reminds me of the long-since deprecated Appscript library for Python, but it's going to take me a while before I'm truly comfortable with it. As with AppleScript, the real problem is that each application gets to define its own commands, so you have to spend a lot of time in the Script Editor's dictionary.

The new JavaScript snippet works well but has one problem: it adds a newline to the end of the URL. At first I thought my script had some hidden defect, but Smile support tells me that JSA always adds a newline to the end of the return value, a bug that Smile will have a fix for in version 5.0.1 of TextExpander. JSA scripts run through the Script Editor definitely don't have a trailing newline, but maybe the Script Editor itself is deleting it.

I could probably figure out a way to delete the trailing newline, but I think I'll just keep the JavaScript version of the snippet on ice until TextExpander 5.0.1 comes out. The older AppleScript version still works, even if it isn't as elegant.

Update 6/8/15 3:54 PM
The folks at Smile are true to their word. I updated to TextExpander 5.0.1 today, and it fixes the trailing newline problem. I've switched from my old AppleScript snippet to the cleaner JavaScript version.

  1. There are one or two older posts that describe workflows I stopped using. ↩

  2. Yes, there is the Smile (unrelated to Smile Software) AppleScript library for regular expressions from Satimage, but I've always been leery of using it. Keeweb 1 11 9 esv. Apple has the unfortunate habit of making internal changes AppleScript every so often, and my fear has been that one of the changes would break the library, leaving me high and dry. It's true that changes could break other parts of my scripts, but third-party libraries just seem more vulnerable to me. ↩

We're excited to present TextExpander 5, featuring snippet suggestions.

TextExpander 5 suggests new snippets based on what you type the most, and reminds you when you miss a chance to use a snippet. That's time saved.

Sync with iCloud Drive, any Dropbox folder, or any syncing folder. (Details below.) Get improved search and JavaScript snippets among a host of other new features.

US $19.95 to upgrade from your current version.

Free upgrades are available via the TextExpander 5 application to those who purchased version 4 on or after January 1, 2015.

Upgrade by downloading TextExpander 5. Launch it, and it will tell you if your upgrade is free or paid. If it's paid, click 'Buy an upgrade license.'

TextExpander 5 requires OS X 10.10 (Yosemite) or later.

Textexpander 5 0 1

What's New in Version 5:

  • Suggests snippets from phrases you habitually type
  • Reminds you of missed opportunities to use your abbreviations
  • Customize snippet file location
  • Sync via iCloud Drive or any sync folder
  • Simplified expansion of lengthy fill-ins and scripts
  • Search and expand snippets, abbreviations, and suggestions inline as you type
  • Preview expanded snippet
  • Refreshed statistics display
  • Supports JavaScript snippets that also operate on iOS
  • Updated for Mac OS X 10.10 Yosemite (required)

Upgrading?

Setup New Sync:

Sync with any syncing folder.

  1. Open TextExpander to Preferences > Sync.
  2. Click Save Snippets As…
  3. Choose a location on your hard drive to store your snippets. If you choose a syncing folder, then your snippets will sync.

Update your other devices:

  1. On your second Mac open TextExpander to Preferences > Sync. On an iOS device open TextExpander's Settings to Sync Snippets.
  2. Click on Link To Snippets…
  3. Locate your Settings.textexpandersettings file and select it.

If you have an older version of TextExpander for Mac (4 or earlier) or TextExpander touch (3.2.4 or earlier), then you need to keep using the Older Version Dropbox sync by clicking Sync with TextExpander 4…

Textexpander 5 0 123

Setup Inline Search:

Can't remember snippets? Use search. It's more convenient to use than before.

  1. Open TextExpander to Preferences > Hotkey.
  2. Click the Click to Set Hotkey button next to Inline Search.
  3. Press your preferred hotkey combo. (Note: hotkey combinations must include Command, Option, Control and/or Shift plus any character or number key.)
Textexpander

What's New in Version 5:

  • Suggests snippets from phrases you habitually type
  • Reminds you of missed opportunities to use your abbreviations
  • Customize snippet file location
  • Sync via iCloud Drive or any sync folder
  • Simplified expansion of lengthy fill-ins and scripts
  • Search and expand snippets, abbreviations, and suggestions inline as you type
  • Preview expanded snippet
  • Refreshed statistics display
  • Supports JavaScript snippets that also operate on iOS
  • Updated for Mac OS X 10.10 Yosemite (required)

Upgrading?

Setup New Sync:

Sync with any syncing folder.

  1. Open TextExpander to Preferences > Sync.
  2. Click Save Snippets As…
  3. Choose a location on your hard drive to store your snippets. If you choose a syncing folder, then your snippets will sync.

Update your other devices:

  1. On your second Mac open TextExpander to Preferences > Sync. On an iOS device open TextExpander's Settings to Sync Snippets.
  2. Click on Link To Snippets…
  3. Locate your Settings.textexpandersettings file and select it.

If you have an older version of TextExpander for Mac (4 or earlier) or TextExpander touch (3.2.4 or earlier), then you need to keep using the Older Version Dropbox sync by clicking Sync with TextExpander 4…

Textexpander 5 0 123

Setup Inline Search:

Can't remember snippets? Use search. It's more convenient to use than before.

  1. Open TextExpander to Preferences > Hotkey.
  2. Click the Click to Set Hotkey button next to Inline Search.
  3. Press your preferred hotkey combo. (Note: hotkey combinations must include Command, Option, Control and/or Shift plus any character or number key.)

Use the Inline Search :

  1. Type your hotkey. The TextExpander search window will appear near your cursor.
  2. Type any part of your snippet, abbreviation, content, or label. Scroll through the results and click the one you want, or press Command + # for the option you want.




broken image