Mercurial Hosting > nabble
view src/nabble/view/naml/url_mapper.naml @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
line wrap: on
line source
<macro name="url mapper" requires="url_mapper"> <n.map_root/> <n.map_app/> <n.map_topic/> <n.map_atom_feeds/> </macro> <macro name="set_parameter_if_found" parameters="name,group" requires="url_mapper,regex"> <n.if.did_find group="[n.group/]"> <then.set_parameter_to_found name="[n.name/]" group="[n.group/]" /> </n.if.did_find> </macro> <macro name="set_parameter_char_if_found" parameters="name,group,char,value" requires="url_mapper,regex"> <n.if.did_find group="[n.group/]"> <then> <n.set_var. name='found'><n.found group="[n.group/]"/></n.set_var.> <n.if.equal value1="[n.char/]" value2="[n.var name='found'/]"> <then.set_parameter. name="[n.name/]"> <n.value/> </then.set_parameter.> </n.if.equal> </then> </n.if.did_find> </macro> <macro name="set_parameter_to_found" parameters="name,group" requires="url_mapper,regex"> <n.set_parameter. name="[n.name/]"> <n.found group="[n.group/]"/> </n.set_parameter.> </macro> individual mappings <macro name="map_root" requires="url_mapper"> <n.regex text="[n.path/]"> <pattern> ^/$ </pattern> <do> <n.if.find> <then> <n.set_parameter. name="node"> <n.root_node.id/> </n.set_parameter.> <n.set_parameter name="macro" value="view_app" /> <n.exit/> </then> </n.if.find> </do> </n.regex> </macro> <macro name="map_app" requires="url_mapper"> <n.regex text="[n.path/]"> <pattern> -f(\d+)(?:p(\d+))?(?:a(\d+))?(?:i(\d+))?(?:d(\d+))?(?:ef\d+)?(?:\.([a-z]+))?\.html$ </pattern> <do> <n.if.find> <then> <n.set_parameter_to_found name="node" group="1" /> <n.set_parameter_if_found name="priority" group="2" /> <n.set_parameter_if_found name="assignee" group="3" /> <n.set_parameter_if_found name="index_record" group="4" /> <n.set_parameter_if_found name="date" group="5" /> <n.if.did_find group="6"> <then> <n.set_parameter. name="macro"> view_<n.found group="6"/> </n.set_parameter.> </then> <else> <n.set_parameter name="macro" value="view_app" /> </else> </n.if.did_find> <n.exit/> </then> </n.if.find> </do> </n.regex> </macro> <macro name="map_topic" requires="url_mapper"> <n.regex text="[n.path/]"> <pattern> -t(d|c|t)(\d+)(?:i(\d+))?(?:ef\d+)?\.html$ </pattern> <do> <n.if.find> <then> <n.set_parameter_char_if_found name="view" group="1" char="d" value="classic" /> <n.set_parameter_char_if_found name="view" group="1" char="c" value="list" /> <n.set_parameter_char_if_found name="view" group="1" char="t" value="threaded" /> <n.set_parameter_to_found name="node" group="2" /> <n.set_parameter_if_found name="index_record" group="3" /> <n.set_parameter name="macro" value="topic" /> <n.exit/> </then> </n.if.find> </do> </n.regex> </macro> <macro name="map_atom_feeds" requires="url_mapper"> <n.regex text="[n.path/]"> <pattern> -f(t)?(\d+)(n(\d+))?.xml$ </pattern> <do> <n.if.find> <then> <n.if.did_find group="1"> <then.set_parameter name="macro" value="atom_topics_by_date" /> <else.set_parameter name="macro" value="atom_posts_by_date" /> </n.if.did_find> <n.set_parameter_to_found name="node" group="2" /> <n.set_parameter_if_found name="length" group="4" /> <n.exit/> </then> </n.if.find> </do> </n.regex> </macro>