File paths in web-based stacks

Devin Asay devin_asay at
Fri Nov 3 12:49:57 EST 2006

Greetings earthlings!

I am teaching my students about launching stacks from a web server  
using 'go stack url ...'. I mentioned to them that they can launch  
any stack on any web server as long as they know the URL (and  
assuming permissions are set correctly, etc.) But I ran into a  
conundrum that I'm trying to figure out.

When I write stacks that are intended to run from the web, I avoid  
using relative file paths for accessing external resources, instead I  
store the base URL in a custom property and make everything relative  
to that. But what if, as I told my students, one of them is sitting  
at home and launches an example stack from our classroom discussion  
from my web server, and one of the things in that example stack is a  
handler that sets the defaultFolder to the folder containing the  
current stack? You know the drill...

set the itemDelimiter to "/"
get the [effective] filename of this stack
set the defaultFolder to item 1 to -2 of it

Of course, when you read your stack from a web server, it resides  
completely in memory, so the filename is empty. So the routine above  
does nothing.

So I started thinking, could I write a handler and put it in a  
library or frontscript  that would check to see if the called stack  
sets the defaultFolder, and if it does, would somehow substitute a  
base URL for the defaultFolder? Then every time a relative file path  
was used in the called stack it would look instead at the URL. I can  
see two problems with this:

1. How to thoroughly search the stack for the presence of the command  
'set the defaultFolder' (or 'set the folder' or 'set the directory').  
Is there a 'search all scripts in a stack' command? It's obviously  
possible, because the Search and Replace utility in the IDE can do  
that. (Yes, I know I can loop through the entire stack and check  
every script, but is there something that already does this?)

2. How to intercept references to file paths in handlers and "recast"  
them as URLs. Short of adding decision structures in all of the  
stacks I might want to launch from a server, which would defeat the  
purpose, is there any conceivable way to do this from a calling stack  
or compiled app?

Before I spend hours trying to script this, what do you all think? Is  
such a thing feasible? A pipe dream? So blatantly obvious that you're  
all snickering at me?

Thanks for any ideas.


Devin Asay
Humanities Technology and Research Support Center
Brigham Young University

More information about the Use-livecode mailing list