mirror of
https://github.com/flynx/pWiki.git
synced 2025-12-17 08:31:38 +00:00
cleanup and minor refactoring...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
dedff41f61
commit
f03002b4ba
178
pwiki.js
178
pwiki.js
@ -189,7 +189,8 @@ module.pWikiData = {
|
|||||||
search: function(query){
|
search: function(query){
|
||||||
},
|
},
|
||||||
|
|
||||||
// get a list of matching paths...
|
// Get a list of matching paths...
|
||||||
|
//
|
||||||
// XXX sort API???
|
// XXX sort API???
|
||||||
// ...results shoulde be sorted via the saved order if available...
|
// ...results shoulde be sorted via the saved order if available...
|
||||||
// .....or should this be done at a later stage as in gen1???
|
// .....or should this be done at a later stage as in gen1???
|
||||||
@ -216,7 +217,9 @@ module.pWikiData = {
|
|||||||
// XXX
|
// XXX
|
||||||
.filter(function(p){ return pattern.test(p) })
|
.filter(function(p){ return pattern.test(p) })
|
||||||
},
|
},
|
||||||
// get/set data at path...
|
|
||||||
|
// Get/set data at path...
|
||||||
|
//
|
||||||
// XXX should this overwrite or expand???
|
// XXX should this overwrite or expand???
|
||||||
// XXX should from be pattern compatible???
|
// XXX should from be pattern compatible???
|
||||||
data: function(path, value){
|
data: function(path, value){
|
||||||
@ -239,7 +242,9 @@ module.pWikiData = {
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// move data from path to path...
|
|
||||||
|
// Move data from path to path...
|
||||||
|
//
|
||||||
// XXX should from be pattern compatible???
|
// XXX should from be pattern compatible???
|
||||||
move: function(from, to){
|
move: function(from, to){
|
||||||
if(this.__data == null){
|
if(this.__data == null){
|
||||||
@ -250,7 +255,9 @@ module.pWikiData = {
|
|||||||
this.__data[to] = d
|
this.__data[to] = d
|
||||||
return this
|
return this
|
||||||
},
|
},
|
||||||
// clear data at path...
|
|
||||||
|
// Clear data at path...
|
||||||
|
//
|
||||||
clear: function(path){
|
clear: function(path){
|
||||||
if(this.__data == null){
|
if(this.__data == null){
|
||||||
return this
|
return this
|
||||||
@ -320,8 +327,32 @@ module.pWikiBase = actions.Actions({
|
|||||||
return this.wiki.match(this.location().path)
|
return this.wiki.match(this.location().path)
|
||||||
// skip special paths containing '*'...
|
// skip special paths containing '*'...
|
||||||
.filter(function(p){ return p.indexOf('*') < 0 })
|
.filter(function(p){ return p.indexOf('*') < 0 })
|
||||||
.length },
|
.length
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// Location and path API...
|
||||||
|
|
||||||
|
// Resolve path statically...
|
||||||
|
//
|
||||||
|
// This will:
|
||||||
|
// - expand variables
|
||||||
|
// - resolve relative paths ('.', '..', and '>>')
|
||||||
|
//
|
||||||
|
// Supported variables:
|
||||||
|
// $NOW - resolves to current date (same as Date.now())
|
||||||
|
//
|
||||||
|
// $PATH - resolves to page path (same as .path())
|
||||||
|
// $BASE - resolves to page base path (same as .base())
|
||||||
|
// $TITLE - resolves to page title (same as .title())
|
||||||
|
//
|
||||||
|
// $INDEX - resolves to page index (same as .at())
|
||||||
|
//
|
||||||
|
// NOTE: all variables are resolved relative to the page from which
|
||||||
|
// .resolve(..) was called, e.g. the following two are equivalent:
|
||||||
|
// <page>.resolve('$PATH')
|
||||||
|
// <page>.path()
|
||||||
|
// NOTE: this will not resolve path patterns ('*' and '**')
|
||||||
resolve: ['Path/Resolve relative path and expand path variables',
|
resolve: ['Path/Resolve relative path and expand path variables',
|
||||||
function(path){
|
function(path){
|
||||||
path = path || this.path()
|
path = path || this.path()
|
||||||
@ -475,73 +506,11 @@ module.pWikiBase = actions.Actions({
|
|||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
|
|
||||||
attr: ['Page/Get or set attribute',
|
|
||||||
function(name, value){
|
|
||||||
var d = this.data()
|
|
||||||
// get...
|
|
||||||
if(arguments.length == 1){
|
|
||||||
return d[name] === undefined ?
|
|
||||||
// force returning undefined...
|
|
||||||
actions.UNDEFINED
|
|
||||||
: d[name]
|
|
||||||
|
|
||||||
// clear...
|
|
||||||
} else if(value === undefined){
|
|
||||||
delete d[name]
|
|
||||||
|
|
||||||
// set...
|
|
||||||
} else {
|
|
||||||
d[name] = value
|
|
||||||
}
|
|
||||||
|
|
||||||
// write the data...
|
|
||||||
// XXX is it good to write the whole thing???
|
|
||||||
this.data(d)
|
|
||||||
}],
|
|
||||||
|
|
||||||
// content shorthands...
|
|
||||||
raw: ['Page/',
|
|
||||||
function(value){
|
|
||||||
return arguments.length == 0 ?
|
|
||||||
(this.attr('text') || '')
|
|
||||||
: this.attr('text', value) }],
|
|
||||||
checked: ['Page/',
|
|
||||||
function(value){
|
|
||||||
return arguments.length == 0 ?
|
|
||||||
!!this.attr('checked')
|
|
||||||
: this.attr('checked', value || undefined) }],
|
|
||||||
|
|
||||||
exists: ['Page/Check if path explicitly exists.',
|
exists: ['Page/Check if path explicitly exists.',
|
||||||
function(path){
|
function(path){
|
||||||
path = path || this.path()
|
path = path || this.path()
|
||||||
return this.wiki.match(this.get(path).location().path)[this.at()] !== undefined
|
return this.wiki.match(this.get(path).location().path)[this.at()] !== undefined
|
||||||
}],
|
}],
|
||||||
// Format:
|
|
||||||
// {
|
|
||||||
// 'order': [ <title>, .. ] | undefined,
|
|
||||||
// 'order-unsorted-first': <bool>,
|
|
||||||
//
|
|
||||||
// 'text': <string>,
|
|
||||||
//
|
|
||||||
// // XXX not yet used...
|
|
||||||
// 'links': [ .. ],
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// XXX cache the data???
|
|
||||||
data: ['Page/Get or set data',
|
|
||||||
function(value){
|
|
||||||
// get -> acquire page and get it's data...
|
|
||||||
if(arguments.length == 0){
|
|
||||||
var d = this.wiki.data(this.acquire()) || {}
|
|
||||||
return d instanceof Function ? d.call(this) : d
|
|
||||||
|
|
||||||
// set -> get explicit path and set data to it...
|
|
||||||
} else if(value != null) {
|
|
||||||
this.wiki.data(this.path(), value || {})
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
clear: ['Page/Clear page',
|
|
||||||
function(){ this.wiki.clear(this.path()) }],
|
|
||||||
|
|
||||||
// NOTE: a clone references the same data and .config, no copying
|
// NOTE: a clone references the same data and .config, no copying
|
||||||
// is done.
|
// is done.
|
||||||
@ -569,13 +538,15 @@ module.pWikiBase = actions.Actions({
|
|||||||
// NOTE: this is here mainly to maintain the context stack...
|
// NOTE: this is here mainly to maintain the context stack...
|
||||||
.clone()
|
.clone()
|
||||||
.data(this.data()) }],
|
.data(this.data()) }],
|
||||||
|
|
||||||
get: ['Page/Get page by path',
|
get: ['Page/Get page by path',
|
||||||
function(path){
|
function(path){
|
||||||
return this
|
return this
|
||||||
.clone()
|
.clone()
|
||||||
.location(path) }],
|
.location(path) }],
|
||||||
|
|
||||||
|
|
||||||
|
// Order and iteration API...
|
||||||
|
|
||||||
at: ['Page/Get index or page at given index',
|
at: ['Page/Get index or page at given index',
|
||||||
function(n){
|
function(n){
|
||||||
// get current index...
|
// get current index...
|
||||||
@ -930,7 +901,76 @@ module.pWikiBase = actions.Actions({
|
|||||||
}],
|
}],
|
||||||
|
|
||||||
|
|
||||||
//
|
// Data API...
|
||||||
|
|
||||||
|
// Get data...
|
||||||
|
//
|
||||||
|
// Format:
|
||||||
|
// {
|
||||||
|
// 'order': [ <title>, .. ] | undefined,
|
||||||
|
// 'order-unsorted-first': <bool>,
|
||||||
|
//
|
||||||
|
// 'text': <string>,
|
||||||
|
//
|
||||||
|
// // XXX not yet used...
|
||||||
|
// 'links': [ .. ],
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// XXX cache the data???
|
||||||
|
data: ['Page/Get or set data',
|
||||||
|
function(value){
|
||||||
|
// get -> acquire page and get it's data...
|
||||||
|
if(arguments.length == 0){
|
||||||
|
var d = this.wiki.data(this.acquire()) || {}
|
||||||
|
return d instanceof Function ? d.call(this) : d
|
||||||
|
|
||||||
|
// set -> get explicit path and set data to it...
|
||||||
|
} else if(value != null) {
|
||||||
|
this.wiki.data(this.path(), value || {})
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
clear: ['Page/Clear page',
|
||||||
|
function(){ this.wiki.clear(this.path()) }],
|
||||||
|
|
||||||
|
attr: ['Page/Get or set attribute',
|
||||||
|
function(name, value){
|
||||||
|
var d = this.data()
|
||||||
|
// get...
|
||||||
|
if(arguments.length == 1){
|
||||||
|
return d[name] === undefined ?
|
||||||
|
// force returning undefined...
|
||||||
|
actions.UNDEFINED
|
||||||
|
: d[name]
|
||||||
|
|
||||||
|
// clear...
|
||||||
|
} else if(value === undefined){
|
||||||
|
delete d[name]
|
||||||
|
|
||||||
|
// set...
|
||||||
|
} else {
|
||||||
|
d[name] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
// write the data...
|
||||||
|
// XXX is it good to write the whole thing???
|
||||||
|
this.data(d)
|
||||||
|
}],
|
||||||
|
|
||||||
|
// shorthands...
|
||||||
|
raw: ['Page/',
|
||||||
|
function(value){
|
||||||
|
return arguments.length == 0 ?
|
||||||
|
(this.attr('text') || '')
|
||||||
|
: this.attr('text', value) }],
|
||||||
|
checked: ['Page/',
|
||||||
|
function(value){
|
||||||
|
return arguments.length == 0 ?
|
||||||
|
!!this.attr('checked')
|
||||||
|
: this.attr('checked', value || undefined) }],
|
||||||
|
|
||||||
|
|
||||||
|
// Init...
|
||||||
|
//
|
||||||
// Special config attrs:
|
// Special config attrs:
|
||||||
// wiki - wiki object
|
// wiki - wiki object
|
||||||
//
|
//
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user