Roxen.git
/
server
/
modules
/
tags
/
static_resource.pike
version
»
Context lines:
10
20
40
80
file
none
3
Roxen.git/server/modules/tags/static_resource.pike:35:
class TagServeStaticResources { inherit RXML.Tag; constant name = "serve-static-resources"; string mangle_resource_urls(string s, RequestID id) { mapping process_tags = query("process_tags"); Parser.HTML parser = Parser.HTML();
+
parser->xml_tag_syntax(0);
function process_tag = lambda(Parser.HTML p, mapping args) { string tag_name = p->tag_name(); string attr_name = process_tags[tag_name]; string link = args[attr_name]; if(link && link[0] == '/') { array(int)|Stdio.Stat st = id->conf->try_stat_file(link, id); if(st) { if(arrayp(st)) st = Stdio.Stat(st); string varystr = sprintf("mtime=%d", st->mtime); args[attr_name] = Roxen.add_pre_state(link, (< "cache-forever", varystr >));
-
return ({ Roxen.make_tag(tag_name, args,
1
, 1) });
+
return ({ Roxen.make_tag(tag_name, args,
has_suffix (tag_name
,
"/"),
+
1) });
} } return 0; };
-
foreach(process_tags; string tag_name; string attr_name)
+
foreach(process_tags; string tag_name; string attr_name)
{
parser->add_tag(tag_name, process_tag);
-
+
parser->add_tag(tag_name + "/", process_tag);
+
}
string res = parser->finish(s)->read(); parser = 0; process_tag = 0; return res; }; class Frame { inherit RXML.Frame;