Hello,
my Jekyll workflow creates plain text files containing YAML frontmatter templates for the posts. So far the shell script actions work great, but I'm working on new commands that require AppleScript. I've basically finished one to create link posts, but...
The file written by the script looks like a regular file in the text editor, but the frontmatter is not correctly recognized by Jekyll. Strange thing: if I just copy the content, paste it into a new file in the editor and then save the file, it works flawlessly. Since the content is exactly the same I guess it must have to do something with the way the file is written by the script, but I have no idea how to solve that.
I tried using do shell script "echo " & quoted form of..." too, but it also didn't work.
Any hint would be greatly appreciated!
Here's the script:
-- on alfred_script(q)
set draftsPath to (path to home folder as text) & "path:to:Jekyll:_drafts:"
set postExtension to "md"
set q to "This is a test draft" -- Remove in Alfred
set postTitle to q
set postFilename to findReplace(space, "-", postTitle)
set postFilepath to draftsPath & postFilename & "." & postExtension
set postDate to todayISOformat()
if application "Safari" is running then
tell application "Safari"
set linkTitle to name of front document
set linkUrl to URL of front document
set linkQuote to (do JavaScript "(''+getSelection())" in document 1)
end tell
if (linkQuote is not "") then
set linkQuote to return & ">" & space & linkQuote
end if
set frontMatter to "---" & return & "title: " & postTitle & return & "date: " & postDate & return & "layout: post" & return & "categories: []" & return & "tags: []" & return & "link: " & linkUrl & return & "---" & return & return & linkTitle & return & linkQuote as «class utf8»
set af to open for access file postFilepath with write permission
set eof af to 0
write frontMatter to af as «class utf8»
close access af
tell application "Sublime Text"
activate
open postFilepath
end tell
else
display notification "Please open a page in Safari first." with title "Safari is not running!"
end if
-- end alfred_script
on findReplace(findText, replaceText, sourceText)
set ASTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to findText
set sourceText to text items of sourceText
set AppleScript's text item delimiters to replaceText
set sourceText to "" & sourceText
set AppleScript's text item delimiters to ASTID
return sourceText
end findReplace
on todayISOformat()
set theDate to current date
set y to text -4 thru -1 of ("0000" & (year of theDate))
set m to text -2 thru -1 of ("00" & ((month of theDate) as integer))
set d to text -2 thru -1 of ("00" & (day of theDate))
return y & "-" & m & "-" & d
end todayISOformat