Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.Eudora.getCurrentScript
on getCurrentScript (adrtext) {
<<get script text from message, or selection, and
<<(important!) confirm with user
on confirm (s) {
loop {
case dialog.threeWay (s, "Yes", "No", "Why?") {
3 { <<why?
dialog.notify ("Scripts have a lot of power. Take a look at the source code of the script first and be sure it's safe to run it. Please be careful.")};
2 { <<no
return (false)};
1 { <<yes
return (true)}}}};
local (text = Eudora.getSelectedText ());
if text == "" { <<nothing selected
local (x = Eudora.getCurrentMessageObject ());
text = Eudora.getMessageText (x);
if text == "" {
scriptError ("Can't run a script because no message or text is selected. Sorry!")};
if not confirm ("Run the selected message as a script and put the result on the clipboard?") {
return (false)}}
else { <<there is a text selection
if not confirm ("Run the selected text as a script and put the result on the clipboard?") {
return (false)}};
bundle { <<strip out comments
local (outtext = "", linetext);
while sizeof (text) > 0 {
linetext = string.nthField (text, cr, 1);
text = string.delete (text, 1, sizeof (linetext) + 1);
if linetext contains "<<" {
linetext = string.delete (linetext, string.patternMatch ("<<", linetext), infinity)};
outtext = outtext + linetext + cr};
text = outtext};
adrtext^ = text;
return (true)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.