AppleScript: YUI Compression
I love learning new programming languages, especially if it solves a need that I have and automates my process a bit more. I spent a couple hours learning AppleScript which is a programming language for Mac that let’s you access the API and make basic function calls to cocoa based programs and applications. One such need that I had is compressing my JavaScript and CSS files before uploading to the web server. There are many applications and ways to this online, but they all are three or more steps to get the compressed file. A while back I downloaded the YUI java applet to do the compression on my Mac via Terminal, which sped up my process a bit. However, since I only used it once in a great while, I’d always have to look up the parameters that I needed to pass to the compressor. So today when I went to look up the syntax, I decided I was going to be adventurous and try something new. That adventure led me to an applescript solution that I’m happy with, and you may enjoy as well.
Download the YUI Compression AppleScript
The AppleScript Source:
on run tell application "Finder" set this_item to choose file with prompt "Choose CSS or JS file:" set dir to the selection as alias end tell set mypath to posix_path(this_item) set dirpath to posix_path(dir) runCompression(mypath, dirpath) end run on posix_path(mac_path) set mac_path to (mac_path as text) set root to (offset of ":" in mac_path) set rootdisk to (characters 1 thru (root - 1) of mac_path) tell application "Finder" if (disk (rootdisk as string) is the startup disk) then set unixpath to "/" & (characters (root + 1) thru end of mac_path) else set unixpath to "/Volumes:" & mac_path end if end tell set chars to every character of unixpath repeat with i from 2 to length of chars if item i of chars as text is equal to "/" then set item i of chars to ":" else if item i of chars as text is equal to ":" then set item i of chars to "/" else if item i of chars as text is equal to "'" then set item i of chars to "\\'" else if item i of chars as text is equal to "\"" then set item i of chars to "\\" & "\"" else if item i of chars as text is equal to "*" then set item i of chars to "\\*" else if item i of chars as text is equal to "?" then set item i of chars to "\\?" else if item i of chars as text is equal to " " then set item i of chars to "\\ " else if item i of chars as text is equal to "\\" then set item i of chars to "\\\\" end if end repeat return every item of chars as string end posix_path on runCompression(mypath, dirpath) tell application "Terminal" do shell script "java -jar " & dirpath & "yuicompressor-2.4.2.jar " & mypath & " -o " & mypath & ".min.js" end tell end runCompression
If you like this YUI Compression AppleScript please do share that with me, as praise is my sole motivation for producing scripts for others. I’ve only skimmed the surface of applescript, but with so few scripts out there that meet the needs that I have, I’m sure I could quickly make some other web developer tools for Mac as well.


