### Script Hook Sample 2

Here is an example for an AppleScript you can set for a Save Document script hook. It exports an RSS representation of the document in the same folder as the BibTeX file whenever the document is saved.

    property theTemplateName : "Default RSS template"
    property theFileExtension : ".rss"

    using terms from application "BibDesk"
        on perform BibDesk action with publications thePubs for script hook theScriptHook
            -- get some properties from the script hook
            set theName to the name of theScriptHook
            set theDocument to the document of theScriptHook
            -- check if we get the right script hook event
            if theName is not "Save Document" then return
            -- get the document's file
            set theDocFile to the file of theDocument
            tell application "Finder"
                -- Finder redefines the file type, which is a mess
                set theDocFile to file theDocFile
                -- extract containing folder and file name
                set theFolder to the container of theDocFile
                set theFileName to the name of theDocFile
                -- change extension to "rss"
                set AppleScript's text item delimiters to "."
                if the name extension of theDocFile is not "" then
                    set theFileName to text items 1 thru -2 of theFileName as text
                end if
                set theFileName to theFileName & theFileExtension
                set AppleScript's text item delimiters to ""
                -- create a reference to the file if necessary
                if file theFileName of theFolder exists then
                    set theFile to (file theFileName of theFolder) as alias
                else
                    set theFile to (make new file with properties {name:theFileName} at theFolder) as alias
                end if
            end tell
            -- now export using the template
            tell theDocument
                export using template theTemplateName to theFile
            end tell
        end perform BibDesk action with publications
    end using terms from

The main thing that should be done in the script is to define a ``perform BibDesk action with publications'` subroutine to handle the script hook. An important thing to note is that you should bracket the whole subroutine in ``using terms from application "BibDesk"'`, so that certain AppleScript definitions (such as the subroutine name) are recognized.

For another sample script, look in the Scripts Menu of BibDesk. To view its source, select the "Sample Script Hook" menu item with the Option key held down.