From c4edca823b8eea457281de06a8a789595566ae60 Mon Sep 17 00:00:00 2001 From: Cat Stevens Date: Fri, 29 Jun 2018 16:46:33 -0400 Subject: [PATCH] move quote-apple-script to cocoa.apple-script and out of elevate.macosx --- .../apple-script/apple-script-docs.factor | 6 +++++- .../apple-script/apple-script-tests.factor | 10 ++++++++++ basis/cocoa/apple-script/apple-script.factor | 19 +++++++++++++++++-- basis/elevate/macosx/macosx.factor | 12 ------------ 4 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 basis/cocoa/apple-script/apple-script-tests.factor diff --git a/basis/cocoa/apple-script/apple-script-docs.factor b/basis/cocoa/apple-script/apple-script-docs.factor index 820f080146..bcecb53248 100644 --- a/basis/cocoa/apple-script/apple-script-docs.factor +++ b/basis/cocoa/apple-script/apple-script-docs.factor @@ -1,7 +1,11 @@ USING: help.markup help.syntax strings ; - IN: cocoa.apple-script +HELP: quote-apple-script +{ $values { "str" string } } +{ $description { "Escape special characters in a string to make it suitable as a literal string in AppleScript code." } +{ $notes "Because this word is a port from Barney Gale's Elevate.py ("{ $vocab-link elevate }"), the only characters escaped are keys in " { $link apple-script-charmap } "; other special characters are unchanged." } ; + HELP: run-apple-script { $values { "str" string } } { $description "Runs the provided uncompiled AppleScript code." } diff --git a/basis/cocoa/apple-script/apple-script-tests.factor b/basis/cocoa/apple-script/apple-script-tests.factor new file mode 100644 index 0000000000..f5d6d4f543 --- /dev/null +++ b/basis/cocoa/apple-script/apple-script-tests.factor @@ -0,0 +1,10 @@ +USING: tools.test ; +IN: cocoa.apple-script + +{ "\\\\" } [ "\\" quote-apple-script ] unit-test +{ "hello\\nthere" } [ "hello +there" quote-apple-script ] unit-test ! no space, just a newline +{ "hello\\rthere" } [ "hello\rthere" quote-apple-script ] unit-test +{ "hello\\tthere" } [ "hello\tthere" quote-apple-script ] unit-test +{ "hello\\tthere" } [ "hello there" quote-apple-script ] unit-test ! actual tab character 0x09 + diff --git a/basis/cocoa/apple-script/apple-script.factor b/basis/cocoa/apple-script/apple-script.factor index 1507ac9801..94cff2da82 100644 --- a/basis/cocoa/apple-script/apple-script.factor +++ b/basis/cocoa/apple-script/apple-script.factor @@ -1,9 +1,24 @@ ! Copyright (C) 2013 John Benediktsson ! See http://factorcode.org/license.txt for BSD license +USING: cocoa cocoa.application cocoa.classes kernel parser +multiline words ; +IN: cocoa.apple-script -USING: cocoa cocoa.application cocoa.classes kernel parser words ; + -IN: cocoa.apple-script +: quote-apple-script ( str -- str' ) + [ + 1string [ apple-script-charmap at ] [ ] bi or + ] { } map-as + "" join "\"" dup surround ; : run-apple-script ( str -- ) [ NSAppleScript -> alloc ] dip diff --git a/basis/elevate/macosx/macosx.factor b/basis/elevate/macosx/macosx.factor index 81e1cf4a70..69a0e04abe 100644 --- a/basis/elevate/macosx/macosx.factor +++ b/basis/elevate/macosx/macosx.factor @@ -2,18 +2,6 @@ USING: cocoa.apple-script elevate elevate.unix ; IN: elevate.macosx