frevo Posted July 11, 2014 Share Posted July 11, 2014 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 Link to comment
frevo Posted July 11, 2014 Author Share Posted July 11, 2014 Solved it. AppleScript writes CRs where Jekyll expects LFs. I added the following line and substituted "return" with "lf" throughout the script: set lf to (ASCII character 10) Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now