mirror of
https://github.com/flynx/pWiki.git
synced 2025-10-29 10:00:08 +00:00
experimenting with path argument syntaxes...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
561de44f54
commit
b96174ed7f
@ -1507,7 +1507,7 @@ module.System = {
|
||||
this.render_root
|
||||
&& (this.render_root.location = to.path)
|
||||
return this.render_root.path },
|
||||
|
||||
//
|
||||
// syntax:
|
||||
// /<path-from>/to:<path-to>/move
|
||||
//
|
||||
@ -1526,6 +1526,10 @@ module.System = {
|
||||
&& (this.render_root.location = to)
|
||||
return '' },
|
||||
|
||||
//
|
||||
test_path: function(){
|
||||
},
|
||||
|
||||
// XXX System/back
|
||||
// XXX System/forward
|
||||
// XXX System/sort
|
||||
|
||||
@ -402,7 +402,7 @@ module.BaseParser = {
|
||||
expand: async function*(page, ast, state={}){
|
||||
ast = ast == null ?
|
||||
//this.group(page)
|
||||
this.group(page, await page.raw)
|
||||
this.group(page, await page.raw ?? '')
|
||||
: typeof(ast) == 'string' ?
|
||||
this.group(page, ast)
|
||||
: ast instanceof types.Generator ?
|
||||
|
||||
@ -221,6 +221,55 @@ module = {
|
||||
if(alt_pages){
|
||||
for(var page of [...this.ALTERNATIVE_PAGES]){
|
||||
yield* this.paths(path.concat(page), seen) }} },
|
||||
|
||||
|
||||
// XXX EXPERIMENTAL...
|
||||
//
|
||||
// .splitSrgs(<path>)
|
||||
// -> <spec>
|
||||
//
|
||||
// Format:
|
||||
// {
|
||||
// path: <path>
|
||||
// args: {
|
||||
// <name>:<value>,
|
||||
// ...
|
||||
// }
|
||||
// action: <action>
|
||||
// }
|
||||
//
|
||||
// Syntax:
|
||||
// <path>/<name>:<value>/<name>:<value>/../action
|
||||
//
|
||||
// XXX the problem here is that we could legitimately create path
|
||||
// items containing ":" -- it either needs to be a reserved char
|
||||
// or this scheme will not work...
|
||||
splitArgs: function(path){
|
||||
path = this.normalize(path, 'array')
|
||||
|
||||
var res = {
|
||||
path: '',
|
||||
args: {},
|
||||
actions: path.pop(),
|
||||
}
|
||||
var state = 'path'
|
||||
var cur, value
|
||||
for(var elem of path){
|
||||
if(elem.includes(':')){
|
||||
state = 'arg' }
|
||||
|
||||
if(state == 'path'){
|
||||
res.path += '/'+ elem
|
||||
|
||||
} else if(state == 'arg'){
|
||||
;[cur, value] = elem.split(':')
|
||||
res[cur] = value
|
||||
state = value
|
||||
|
||||
} else if(state == 'value'){
|
||||
res[cur] += '/'+ value } }
|
||||
|
||||
return res },
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user