packages feed

AppleScript-0.2: examples/Rich.hs

{-# LANGUAGE QuasiQuotes #-}
import Foreign.AppleScript.Rich
import qualified Data.Text.Lazy    as Text
import qualified Data.Text.Lazy.IO as Text

main = Text.putStrLn =<< evalScript mainScript

mainScript = [applescript|
  tell application "System Events"
    -- Haskell value splices, and Unicode support.
    display dialog "The value of π is $value{pi :: Double}$."

    -- AppleScript can call back into Haskell.
    set yourName to text returned of (display dialog "What is your name?" default answer "")
    display dialog ("Your name in reverse is " & $callback{ \t -> return (Text.reverse t) }$[ yourName ]$)

    -- Splice other AppleScript code into here
    $applescript{ othergreeter }$

    -- Return text from AppleScript back to Haskell
    return "Hello from AppleScript!"
  end tell
 |]

othergreeter = [applescript|
  display dialog "Hello from the other greeter!"
 |]