On Apr 24, 2015, at 11:13, Watts Martin <[email protected]> wrote:
> «event ¶erlRFtr» markdown with «class o2sl»
> …
> Now, you may wonder what that line with "event garble markdown with class
> garble" is, and the answer is: I don't know.
______________________________________________________________________
Hey Watts,
Yes. That gook is the raw event syntax and typically means it's unavailable
for compilation - e.g. broken for some reason.
> I saw that the BBEdit 11 release notes include the note "The AppleScript
> commands for running #! filters have been removed," which I suspect is the
> culprit here.
Yes; it is.
I'm not entirely thrilled about this change, but on the other hand one can run
shell scripts directly from AppleScript.
> Okay: so what's the new way to accomplish this?
See p. 35 of the manual (Text Filters).
It's sparse but should be read.
There may be a minor problem with the RunFromBBEdit handler, and I'm checking
into it. Nevertheless this works.
----------------------------------------------------
on RunFromBBEdit(_range)
if _range as text = "" then
set _text to text of front document
set text of front document to "•• " & _text & " ••"
return ""
else
set selectedText to _range as text
set myProcessedText to "•• " & selectedText & " ••"
return myProcessedText
end if
end RunFromBBEdit
----------------------------------------------------
> Ideally, it should do what the old script did, which is apply the Unix script
> to either selected text or the whole document if nothing is selected.
In this case I don't see any point to running an AppleScript as a text-filter.
My inclination would probably be to write the selection/document to a temp-file
and pass that to your executable which would save a lot of grief in dealing
with text fed to it - such as quoting and command-length.
The following script is off-the-cuff and rough, but it works and may give you
some ideas.
-------------------------------------------------------------------------------------------
set tempFile to (POSIX path of (path to temporary items folder as text)) &
"watts.temp.txt"
set _script to POSIX path of ((path to home folder as text) &
"test_directory:Watts-Martin-Test:Markdown.bbpackage:Contents:Text
Filters:html2text")
tell application "BBEdit"
tell front text window
set _text to selection
if class of _text = insertion point then
set _text to its text
set outputType to "document"
else if class of _text = character then
set _text to _text as text
set outputType to "selection"
end if
end tell
end tell
if _text ≠ "" then
writeUTF8(_text, tempFile)
set shCmd to quoted form of _script & space & quoted form of tempFile
set outputText to do shell script shCmd
tell application "BBEdit"
tell front text window
if outputType is "document" then
set its text to outputText
else if outputType is "selection" then
set selection to outputText
end if
end tell
end tell
end if
-------------------------------------------------------------------------------------------
--» writeUTF8()
-------------------------------------------------------------------------------------------
-- Task: Write text to a file as UTF8 and overwrite any content.
-- dMod: 2012/10/26 20:00
-------------------------------------------------------------------------------------------
on writeUTF8(_text, _file)
try
if _file starts with "~/" then
set _file to POSIX path of (path to home folder as text) & text 3 thru -1
of _file
end if
set fRef to open for access _file with write permission
set eof of fRef to 0
write _text to fRef as «class utf8»
close access fRef
on error e number n
try
close access fRef
on error e number n
error "Error in writeUTF8() handler!" & return & return & e
end try
end try
end writeUTF8
-------------------------------------------------------------------------------------------
--
Best Regards,
Chris
--
This is the BBEdit Talk public discussion group. If you have a
feature request or would like to report a problem, please email
"[email protected]" rather than posting to the group.
Follow @bbedit on Twitter: <http://www.twitter.com/bbedit>
---
You received this message because you are subscribed to the Google Groups
"BBEdit Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].