austin seipp wrote:
The two main things people want here are JavaScript and CSS
I'd suppose. The boilerplate can roughly be put down to something like
this (Zachary Tatlock put this trick on the list earlier):
val inlineStuff = "..."
fun retStuff () = retBlob (textBlob inlineStuff) (blessMime "text/css")
...
<link type="text/css" href={url (retStuff ())}/>
I notice there is no 'script' tag in basis. This makes it not possible
to use this trick for JavaScript, hence why I went the route of
modifying the compiler. Although I assume it could be added quite
easily, so kinda moot point.
It sounds very scary to me to allow <script> in Ur/Web programs. I
don't want to allow any automatic interpretation of strings as programs
in any language.
Perhaps there should be another top-level declaration for 'static'
files, which declare values of a new 'static' type or somesuch?
Something like:
static cssCode
static jsCode
...
<script type="text/javascript" href={staticUrl cssCode}/>
<link type="text/css" href={staticUrl jsCode}/>
Adding a new declaration form seems like overkill to me. What I've been
thinking about is closer to just the second stage that you propose:
with accompanying .urp declarations like:
staticFile Module.cssCode=static/style.css text/css
staticFile Module.jsCode=static/extra.js text/javascript
I'd do this with directives instead taking filename to grab data from,
URL to "mount" it at, and MIME type. I would also allow omitting the
MIME type, in which case it is reverse-engineered from the file
extension using /etc/mime.types. I would also automatically whitelist
each URL given in this manner, for injection into the [url] type.
_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur