mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt some
This commit is contained in:
parent
cfc47ab273
commit
a0f51ba901
78
lib/base.js
78
lib/base.js
@ -8,10 +8,10 @@ Volcanos("base", {
|
|||||||
if (val.length > 0) { return val } for (var k in val) { return val } return def
|
if (val.length > 0) { return val } for (var k in val) { return val } return def
|
||||||
} catch (e) { return val&&val.split&&val.split(ice.FS) || def }
|
} catch (e) { return val&&val.split&&val.split(ice.FS) || def }
|
||||||
},
|
},
|
||||||
Copy: function(to, from, hold) { if (!from) { return to }
|
Copy: function(to, from, merge) { if (!from) { return to }
|
||||||
if (arguments.length == 2 || typeof hold == lang.BOOLEAN) {
|
if (arguments.length == 2 || typeof merge == lang.BOOLEAN) {
|
||||||
for (var k in from) { if (k == undefined) { continue }
|
for (var k in from) { if (k == undefined) { continue }
|
||||||
if (hold && to.hasOwnProperty(k) && to[k] != undefined && to[k] != "") { continue }
|
if (merge && to.hasOwnProperty(k) && to[k] != undefined && to[k] != "") { continue }
|
||||||
if (from[k] === "") { delete(to[k]) } else { to[k] = from[k] }
|
if (from[k] === "") { delete(to[k]) } else { to[k] = from[k] }
|
||||||
} return to
|
} return to
|
||||||
} for (var i = 2; i < arguments.length; i++) { var k = arguments[i]; to[k] = from[k] } return to
|
} for (var i = 2; i < arguments.length; i++) { var k = arguments[i]; to[k] = from[k] } return to
|
||||||
@ -23,8 +23,7 @@ Volcanos("base", {
|
|||||||
return true
|
return true
|
||||||
} return to === from
|
} return to === from
|
||||||
},
|
},
|
||||||
|
Ext: function(path) { return path.split(ice.PS).pop().split(ice.PT).pop().toLowerCase() },
|
||||||
Ext: function(path) { return (path.split(ice.PS).pop().split(ice.PT).pop()).toLowerCase() },
|
|
||||||
Path: function(path) { var res = ""
|
Path: function(path) { var res = ""
|
||||||
for (var i = 0; i < arguments.length; i++) { if (!arguments[i]) { continue }
|
for (var i = 0; i < arguments.length; i++) { if (!arguments[i]) { continue }
|
||||||
res += (arguments[i][0]==ice.PS || res=="" || res[res.length-1]==ice.PS? "": ice.PS) + arguments[i].trim()
|
res += (arguments[i][0]==ice.PS || res=="" || res[res.length-1]==ice.PS? "": ice.PS) + arguments[i].trim()
|
||||||
@ -55,7 +54,6 @@ Volcanos("base", {
|
|||||||
if (size.endsWith("kb") || size.endsWith("k")) { return parseInt(size) * 1024 }
|
if (size.endsWith("kb") || size.endsWith("k")) { return parseInt(size) * 1024 }
|
||||||
return parseInt(size)
|
return parseInt(size)
|
||||||
},
|
},
|
||||||
|
|
||||||
Size: function(size) { size = parseInt(size)
|
Size: function(size) { size = parseInt(size)
|
||||||
if (size > 1000000000) { return parseInt(size/1000000000) + ice.PT + parseInt(size/10000000%100) + "G" }
|
if (size > 1000000000) { return parseInt(size/1000000000) + ice.PT + parseInt(size/10000000%100) + "G" }
|
||||||
if (size > 1000000) { return parseInt(size/1000000) + ice.PT + parseInt(size/10000%100) + "M" }
|
if (size > 1000000) { return parseInt(size/1000000) + ice.PT + parseInt(size/10000%100) + "M" }
|
||||||
@ -69,30 +67,20 @@ Volcanos("base", {
|
|||||||
},
|
},
|
||||||
Format: function(obj) { return JSON.stringify(obj) },
|
Format: function(obj) { return JSON.stringify(obj) },
|
||||||
Simple: function() { var res = []
|
Simple: function() { var res = []
|
||||||
for (var i = 0; i < arguments.length; i++) {
|
for (var i = 0; i < arguments.length; i++) { var val = arguments[i]; switch (typeof val) {
|
||||||
var arg = arguments[i]; switch (typeof arguments[i]) {
|
case lang.OBJECT:
|
||||||
case lang.OBJECT:
|
if (val.length > 0) { res = res.concat(val); break }
|
||||||
if (arg.length > 0) { res = res.concat(arg); break }
|
for (var k in val) { k && val[k] && res.push(k, val[k]) } break
|
||||||
for (var k in arg) { k && arg[k] && res.push(k, arg[k]) }
|
default: res.push(val)
|
||||||
break
|
} } return res
|
||||||
default: res.push(arg)
|
|
||||||
}
|
|
||||||
} return res
|
|
||||||
},
|
},
|
||||||
AddUniq: function(list, value) { list = list||[]; return list.indexOf(value) == -1 && list.push(value), list },
|
AddUniq: function(list, value) { list = list||[]; return list.indexOf(value) == -1 && list.push(value), list },
|
||||||
isIn: function(item) { var args = arguments; for (var i = 1; i < args.length; i++) {
|
isIn: function(item) { var args = arguments; for (var i = 1; i < args.length; i++) {
|
||||||
if (typeof args[i] == lang.OBJECT && args[i].length > 0 && args[i].indexOf(item) > -1) { return true }
|
if (typeof args[i] == lang.OBJECT && args[i].length > 0 && args[i].indexOf(item) > -1) { return true }
|
||||||
if (item == args[i]) { return true }
|
if (item == args[i]) { return true }
|
||||||
} },
|
} },
|
||||||
|
|
||||||
Date: function(time) { var now = new Date()
|
|
||||||
if (typeof time == lang.STRING && time != "") { var ls = time.split(ice.SP)
|
|
||||||
var vs = ls[0].split("-"); now.setFullYear(parseInt(vs[0])), now.setMonth(parseInt(vs[1])-1), now.setDate(parseInt(vs[2]))
|
|
||||||
var vs = ls[1].split(ice.DF); now.setHours(parseInt(vs[0])), now.setMinutes(parseInt(vs[1])), now.setSeconds(parseInt(vs[2]))
|
|
||||||
} else if (time) { now = time } return now
|
|
||||||
},
|
|
||||||
Time: function(time, fmt) { var now = this.Date(time)
|
Time: function(time, fmt) { var now = this.Date(time)
|
||||||
fmt = fmt||"%y-%m-%d %H:%M:%S" // fmt = fmt||"%H:%M:%S"
|
fmt = fmt||"%y-%m-%d %H:%M:%S"
|
||||||
fmt = fmt.replace("%y", now.getFullYear())
|
fmt = fmt.replace("%y", now.getFullYear())
|
||||||
fmt = fmt.replace("%m", this.Number(now.getMonth()+1, 2))
|
fmt = fmt.replace("%m", this.Number(now.getMonth()+1, 2))
|
||||||
fmt = fmt.replace("%d", this.Number(now.getDate(), 2))
|
fmt = fmt.replace("%d", this.Number(now.getDate(), 2))
|
||||||
@ -102,7 +90,13 @@ Volcanos("base", {
|
|||||||
fmt = fmt.replace("%S", this.Number(now.getSeconds(), 2))
|
fmt = fmt.replace("%S", this.Number(now.getSeconds(), 2))
|
||||||
return fmt
|
return fmt
|
||||||
},
|
},
|
||||||
TimeAdd: function(t, d) { return new Date(t - t%(24*3600*1000) - 8*3600*1000 + d*24*3600*1000) },
|
Date: function(time) { var now = new Date()
|
||||||
|
if (typeof time == lang.STRING && time != "") { var ls = time.split(ice.SP)
|
||||||
|
var vs = ls[0].split("-"); now.setFullYear(parseInt(vs[0])), now.setMonth(parseInt(vs[1])-1), now.setDate(parseInt(vs[2]))
|
||||||
|
var vs = ls[1].split(ice.DF); now.setHours(parseInt(vs[0])), now.setMinutes(parseInt(vs[1])), now.setSeconds(parseInt(vs[2]))
|
||||||
|
} else if (time) { now = time } return now
|
||||||
|
},
|
||||||
|
DateAdd: function(stamp, days) { return new Date(stamps - stamps%(24*3600*1000) - 8*3600*1000 + days*24*3600*1000) },
|
||||||
Duration: function(n) { var res = "", h = 0
|
Duration: function(n) { var res = "", h = 0
|
||||||
h = parseInt(n/3600000/24), h > 0 && (res += h+"d"), n = n % (3600000*24)
|
h = parseInt(n/3600000/24), h > 0 && (res += h+"d"), n = n % (3600000*24)
|
||||||
h = parseInt(n/3600000), h > 0 && (res += h+"h"), n = n % 3600000
|
h = parseInt(n/3600000), h > 0 && (res += h+"h"), n = n % 3600000
|
||||||
@ -111,13 +105,11 @@ Volcanos("base", {
|
|||||||
return res + (n > 0? ice.PT+parseInt(n/10): "") + "s"
|
return res + (n > 0? ice.PT+parseInt(n/10): "") + "s"
|
||||||
},
|
},
|
||||||
isNight: function() { var now = new Date(); return now.getHours() < 7 || now.getHours() >= 17 },
|
isNight: function() { var now = new Date(); return now.getHours() < 7 || now.getHours() >= 17 },
|
||||||
|
|
||||||
isNumber: function(val) { return typeof val == lang.NUMBER },
|
isNumber: function(val) { return typeof val == lang.NUMBER },
|
||||||
isString: function(val) { return typeof val == lang.STRING },
|
isString: function(val) { return typeof val == lang.STRING },
|
||||||
isObject: function(val) { return typeof val == lang.OBJECT },
|
isObject: function(val) { return typeof val == lang.OBJECT },
|
||||||
isArray: function(val) { return typeof val == lang.OBJECT && val.length != undefined },
|
isArray: function(val) { return typeof val == lang.OBJECT && val.length != undefined },
|
||||||
isFunc: function(val) { return typeof val == lang.FUNCTION },
|
isFunc: function(val) { return typeof val == lang.FUNCTION },
|
||||||
isFunction: function(val) { return typeof val == lang.FUNCTION },
|
|
||||||
isUndefined: function(val) { return val == undefined },
|
isUndefined: function(val) { return val == undefined },
|
||||||
isNull: function(val) { return val == null },
|
isNull: function(val) { return val == null },
|
||||||
getValid: function() {
|
getValid: function() {
|
||||||
@ -125,32 +117,30 @@ Volcanos("base", {
|
|||||||
if (typeof v == lang.OBJECT) { if (v == null) { continue }
|
if (typeof v == lang.OBJECT) { if (v == null) { continue }
|
||||||
if (v.length > 0) { return v } for (var k in v) { return v }
|
if (v.length > 0) { return v } for (var k in v) { return v }
|
||||||
} else if (typeof v == lang.STRING && v) { return v
|
} else if (typeof v == lang.STRING && v) { return v
|
||||||
} else if (v == undefined) { continue
|
} else if (v == undefined) { continue } else { return v }
|
||||||
} else { return v }
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
beginWith: function(str) { for (var i = 1; i < arguments.length; i++) { if (typeof str == lang.STRING && str.trim().indexOf(arguments[i]) == 0) { return true } } },
|
|
||||||
endWith: function(str, end) { return typeof str == lang.STRING && str.lastIndexOf(end) + end.length == str.length },
|
|
||||||
trim: function(args) { if (this.isString(args)) { return args.trim() }
|
|
||||||
if (this.isArray(args)) { for (var i = args.length-1; i >= 0; i--) { if (!args[i]) { args.pop() } else { break } } }
|
|
||||||
return args
|
|
||||||
},
|
|
||||||
trimPrefix: function(str, pre) { if (typeof str != lang.STRING) { return str } var callee = arguments.callee
|
|
||||||
if (arguments.length > 2) { for (var i = 1; i < arguments.length; i++) { str = callee(str, arguments[i]) } return str }
|
|
||||||
if (str.indexOf(pre) == -1) { return str } return str.slice(pre.length)
|
|
||||||
},
|
|
||||||
trimSuffix: function(str, end) { var index = str.lastIndexOf(end); if (index == -1 || index+end.length != str.length) { return str } return str.slice(0, index) },
|
|
||||||
join: function(list, sp) { return typeof list == lang.STRING? list: (list||[]).join(sp||ice.SP) },
|
|
||||||
joins: function(list, inner, outer) { for (var i = 0; i < list.length; i++) { list[i] = typeof list[i] == lang.STRING? list[i]: list[i].join(inner||ice.FS) } return list.join(outer||ice.SP) },
|
|
||||||
joinKV: function(list, inner, outer) { var res = []; for (var i = 0; i < list.length-1; i += 2) { res.push(list[i]+(inner||": ")+list[i+1]) } return res.join(outer||ice.SP) },
|
|
||||||
count: function(str, s) { var n = 0; for (var i = 0; i < str.length; i++) { if (str[i] == s) { n++ } } return n },
|
|
||||||
replaceAll: function(str) {
|
replaceAll: function(str) {
|
||||||
for (var i = 1; i < arguments.length; i += 2) { if (!arguments[i]) { continue }
|
for (var i = 1; i < arguments.length; i += 2) { if (!arguments[i]) { continue }
|
||||||
if (str.replaceAll) { str = str.replaceAll(arguments[i], arguments[i+1]); continue }
|
if (str.replaceAll) { str = str.replaceAll(arguments[i], arguments[i+1]); continue }
|
||||||
if (arguments[i] && str.replace) { while (str.indexOf(arguments[i]) > -1) { str = str.replace(arguments[i], arguments[i+1]) } }
|
if (arguments[i] && str.replace) { while (str.indexOf(arguments[i]) > -1) { str = str.replace(arguments[i], arguments[i+1]) } }
|
||||||
} return str
|
} return str
|
||||||
},
|
},
|
||||||
|
beginWith: function(str) { for (var i = 1; i < arguments.length; i++) { if (typeof str == lang.STRING && str.trim().indexOf(arguments[i]) == 0) { return true } } },
|
||||||
|
endWith: function(str, end) { return typeof str == lang.STRING && str.lastIndexOf(end) + end.length == str.length },
|
||||||
|
trimPrefix: function(str, pre) { if (typeof str != lang.STRING) { return str } var callee = arguments.callee
|
||||||
|
if (arguments.length > 2) { for (var i = 1; i < arguments.length; i++) { str = callee(str, arguments[i]) } return str }
|
||||||
|
if (str.indexOf(pre) == -1) { return str } return str.slice(pre.length)
|
||||||
|
},
|
||||||
|
trimSuffix: function(str, end) { var index = str.lastIndexOf(end); if (index == -1 || index+end.length != str.length) { return str } return str.slice(0, index) },
|
||||||
|
trim: function(args) { if (this.isString(args)) { return args.trim() }
|
||||||
|
if (this.isArray(args)) { for (var i = args.length-1; i >= 0; i--) { if (!args[i]) { args.pop() } else { break } } }
|
||||||
|
return args
|
||||||
|
},
|
||||||
|
join: function(list, sp) { return typeof list == lang.STRING? list: (list||[]).join(sp||ice.SP) },
|
||||||
|
joins: function(list, inner, outer) { for (var i = 0; i < list.length; i++) { list[i] = typeof list[i] == lang.STRING? list[i]: list[i].join(inner||ice.FS) } return list.join(outer||ice.SP) },
|
||||||
|
joinKV: function(list, inner, outer) { var res = []; for (var i = 0; i < list.length-1; i += 2) { res.push(list[i]+(inner||": ")+list[i+1]) } return res.join(outer||ice.SP) },
|
||||||
|
count: function(str, s) { var n = 0; for (var i = 0; i < str.length; i++) { if (str[i] == s) { n++ } } return n },
|
||||||
random: function(max, min) { return min = min||0, parseInt(Math.random()*(max-min))+min },
|
random: function(max, min) { return min = min||0, parseInt(Math.random()*(max-min))+min },
|
||||||
mod: function(index, total) { return (index+total) % total },
|
mod: function(index, total) { return (index+total) % total },
|
||||||
})
|
})
|
||||||
|
56
lib/core.js
56
lib/core.js
@ -7,25 +7,19 @@ Volcanos("core", {
|
|||||||
default: v && list.push(v+"")
|
default: v && list.push(v+"")
|
||||||
} } return list.join(ice.PT)
|
} } return list.join(ice.PT)
|
||||||
},
|
},
|
||||||
Value: function(data, key, value) {
|
Value: function(data, key, value) { if (data == undefined) { return } if (key == undefined) { return data }
|
||||||
if (data == undefined) { return }
|
if (typeof key == lang.OBJECT && key.length != undefined) { key = key.join(ice.PT) } else if (typeof key == lang.OBJECT) { for (var k in key) { arguments.callee.call(this, data, k, key[k]) } return data }
|
||||||
if (key == undefined) { return data }
|
|
||||||
if (typeof key == lang.OBJECT && key.length > 0) { key = key.join(ice.PT) }
|
|
||||||
if (typeof key == lang.OBJECT) { for (var k in key) { arguments.callee.call(this, data, k, key[k]) } return data }
|
|
||||||
if (value != undefined) { var _node = data, keys = key.split(ice.PT)
|
if (value != undefined) { var _node = data, keys = key.split(ice.PT)
|
||||||
for (var i = 0; i < keys.length; i++) { var _next = _node[keys[i]]||{}; _node[keys[i]] = _next
|
for (var i = 0; i < keys.length; i++) { var _next = _node[keys[i]]||{}; _node[keys[i]] = _next
|
||||||
if (i < keys.length - 1) { _node = _next } else { _node[keys[i]] = value }
|
if (i < keys.length - 1) { _node = _next } else { _node[keys[i]] = value }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (data[key] != undefined) { return data[key] }
|
|
||||||
var node = data, keys = key.split(ice.PT); while (node && keys.length > 0) {
|
var node = data, keys = key.split(ice.PT); while (node && keys.length > 0) {
|
||||||
if (keys[0] == "-1") { keys[0] = node.length-1 } node = node[keys[0]], keys = keys.slice(1)
|
if (keys[0] == "-1") { keys[0] = node.length-1 } node = node[keys[0]], keys = keys.slice(1)
|
||||||
} return node
|
} return node == undefined? data[key]: node
|
||||||
},
|
},
|
||||||
Split: function(str) { if (!str || !str.length) { return [] }
|
Split: function(str) { if (!str || !str.length) { return [] }
|
||||||
var opt = {detail: false}, arg = []; for (var i = 1; i < arguments.length; i++) {
|
var opt = {detail: false}, arg = []; for (var i = 1; i < arguments.length; i++) { var v = arguments[i]; typeof v == lang.OBJECT? opt = v: arg.push(v) }
|
||||||
typeof arguments[i] == lang.OBJECT? opt = arguments[i]: arg.push(arguments[i])
|
|
||||||
}
|
|
||||||
function _list(str) { var res = {}; for (var i = 0; i < str.length; i++) { res[str[i]] = true }; return res }
|
function _list(str) { var res = {}; for (var i = 0; i < str.length; i++) { res[str[i]] = true }; return res }
|
||||||
var space = _list(arg[0]||"\t ,;\n") // 空白符
|
var space = _list(arg[0]||"\t ,;\n") // 空白符
|
||||||
var block = _list(arg[1]||"{[()]}") // 分隔符
|
var block = _list(arg[1]||"{[()]}") // 分隔符
|
||||||
@ -43,17 +37,19 @@ Volcanos("core", {
|
|||||||
} else if (s == str[i]) {
|
} else if (s == str[i]) {
|
||||||
push({type: lang.STRING, text: str.slice(begin, i), left: s, right: str[i]}), s = "", begin = -1
|
push({type: lang.STRING, text: str.slice(begin, i), left: s, right: str[i]}), s = "", begin = -1
|
||||||
}
|
}
|
||||||
} else if (trans[str[i]]) { begin == -1 && (begin = i++)
|
} else if (trans[str[i]]) { begin == -1 && (begin = i), i++
|
||||||
} else { begin == -1 && (begin = i) }
|
} else { begin == -1 && (begin = i) }
|
||||||
} return begin >= 0 && (s? push({type: lang.STRING, text: str.slice(begin), left: s, right: ""}): push(str.slice(begin))), res
|
} return begin > -1 && (s? push({type: lang.STRING, text: str.slice(begin), left: s, right: ""}): push(str.slice(begin))), res
|
||||||
},
|
},
|
||||||
SplitInput: function(item, type) { if (typeof item == lang.OBJECT) { return item } type = type||html.TEXT; switch (item) {
|
SplitInput: function(item, type) { if (typeof item == lang.OBJECT) { return item } type = type||html.TEXT; switch (item) {
|
||||||
case ice.RUN: return {type: type = html.BUTTON, name: item}
|
case ice.RUN: return {type: html.BUTTON, name: item}
|
||||||
case mdb.LIST: return {type: type = html.BUTTON, name: item, action: ice.AUTO}
|
case ice.LIST: return {type: html.BUTTON, name: item, action: ice.AUTO}
|
||||||
case ice.BACK: return {type: type = html.BUTTON, name: item}
|
case ice.BACK: return {type: html.BUTTON, name: item}
|
||||||
case mdb.NAME: return {type: type = html.TEXT, name: item}
|
case mdb.NAME: return {type: html.TEXT, name: item}
|
||||||
case mdb.TEXT: return {type: type = html.TEXTAREA, name: item}
|
case mdb.TEXT: return {type: html.TEXTAREA, name: item}
|
||||||
default: var ls = this.Split(item, " ", ":=@"), res = {type: type, name: ls[0]}; for (var i = 1; i < ls.length; i += 2) { switch (ls[i]) {
|
case ctx.ARGS: return {type: html.TEXTAREA, name: item}
|
||||||
|
default: var ls = this.Split(item, ice.SP, "*:=@"), res = {type: type, name: ls[0]}; for (var i = 1; i < ls.length; i += 2) { switch (ls[i]) {
|
||||||
|
case "*": res["need"] = "must", i--; break
|
||||||
case ice.DF: res[mdb.TYPE] = ls[i+1]; break
|
case ice.DF: res[mdb.TYPE] = ls[i+1]; break
|
||||||
case ice.EQ:
|
case ice.EQ:
|
||||||
if (res[mdb.TYPE] == html.SELECT) { res.values = this.Split(ls[i+1]); for (var j = 1; j < res.values.length; j++) {
|
if (res[mdb.TYPE] == html.SELECT) { res.values = this.Split(ls[i+1]); for (var j = 1; j < res.values.length; j++) {
|
||||||
@ -78,9 +74,9 @@ Volcanos("core", {
|
|||||||
if (interval > 0) {
|
if (interval > 0) {
|
||||||
function loop(i) { i >= list.length? typeof cbs == lang.FUNCTION && cbs(list): cb(list[i], i, list), setTimeout(function() { loop(i+1) }, interval) }
|
function loop(i) { i >= list.length? typeof cbs == lang.FUNCTION && cbs(list): cb(list[i], i, list), setTimeout(function() { loop(i+1) }, interval) }
|
||||||
typeof cb == lang.FUNCTION && list.length > 0 && setTimeout(function() { loop(0) }, interval/4)
|
typeof cb == lang.FUNCTION && list.length > 0 && setTimeout(function() { loop(0) }, interval/4)
|
||||||
} else { var slice = [], res
|
} else { var res = []
|
||||||
for (var i = 0; i < list.length; i++) { typeof cb == lang.FUNCTION? (res = cb(list[i], i, list)) != undefined && slice.push(res): slice.push(list[i]) }
|
for (var i = 0; i < list.length; i++) { var _res = typeof cb == lang.FUNCTION? cb(list[i], i, list): list[i]; _res != undefined && res.push(_res) }
|
||||||
list = slice
|
list = res
|
||||||
} return list
|
} return list
|
||||||
},
|
},
|
||||||
Next: function(list, cb, cbs) {
|
Next: function(list, cb, cbs) {
|
||||||
@ -88,7 +84,7 @@ Volcanos("core", {
|
|||||||
case lang.OBJECT: if (list == null) { list = []; break } if (list.length == undefined) { var ls = []; for (var k in list) { ls.push(k) } list = ls } break
|
case lang.OBJECT: if (list == null) { list = []; break } if (list.length == undefined) { var ls = []; for (var k in list) { ls.push(k) } list = ls } break
|
||||||
default: if (list == undefined) { list = []; break } list = [list]
|
default: if (list == undefined) { list = []; break } list = [list]
|
||||||
}
|
}
|
||||||
function next(i) { i < list.length? typeof cb == lang.FUNCTION && cb(list[i], function() { next(i+1) }, i, list): typeof cbs == lang.FUNCTION && cbs(list) }
|
function next(i) { i < list.length? typeof cb == lang.FUNCTION && cb(list[i], function() { next(i+1) }, i, list): typeof cbs == lang.FUNCTION && cbs(list) }
|
||||||
return next(0), list
|
return next(0), list
|
||||||
},
|
},
|
||||||
Item: function(obj, cb) { var list = []
|
Item: function(obj, cb) { var list = []
|
||||||
@ -100,24 +96,24 @@ Volcanos("core", {
|
|||||||
for (var i in keys) { var k = keys[i]; var res = typeof cb == lang.FUNCTION? cb(k, obj[k]): k; res != undefined && list.push(res) }
|
for (var i in keys) { var k = keys[i]; var res = typeof cb == lang.FUNCTION? cb(k, obj[k]): k; res != undefined && list.push(res) }
|
||||||
return list
|
return list
|
||||||
},
|
},
|
||||||
Items: function(obj, cb) { var list = []
|
ItemOrder: function(obj, key, cb) { var list = [], order = [], keys = {}, vals = {}, i = 0
|
||||||
for (var k in obj) { list = list.concat(this.List(obj[k], function(v, i) { return typeof cb == lang.FUNCTION && cb(v, i, k, obj) })) }
|
|
||||||
return list
|
|
||||||
},
|
|
||||||
ItemSort: function(obj, key, cb) { var list = [], order = [], keys = {}, vals = {}, i = 0
|
|
||||||
for (var k in obj) { o = obj[k][key]||i++, order.push(o), keys[o] = k, vals[o] = obj[k] } order.sort()
|
for (var k in obj) { o = obj[k][key]||i++, order.push(o), keys[o] = k, vals[o] = obj[k] } order.sort()
|
||||||
for (var i in order) { var k = order[i], res = typeof cb == lang.FUNCTION? cb(keys[k], vals[k]): k; res != undefined && list.push(res) }
|
for (var i in order) { var k = order[i], res = typeof cb == lang.FUNCTION? cb(keys[k], vals[k]): k; res != undefined && list.push(res) }
|
||||||
return list
|
return list
|
||||||
},
|
},
|
||||||
|
ItemForm: function(obj, cb) { var list = []
|
||||||
|
for (var k in obj) { list = list.concat(this.List(obj[k], function(v, i) { return typeof cb == lang.FUNCTION && cb(v, i, k, obj) })) }
|
||||||
|
return list
|
||||||
|
},
|
||||||
ItemCB: function(meta, cb, can, item) { var list = []
|
ItemCB: function(meta, cb, can, item) { var list = []
|
||||||
for (var k in meta) { if (k.indexOf("on") == 0 && typeof meta[k] == lang.FUNCTION) { (function(k) { list.push(k)
|
for (var k in meta) { if (k.indexOf("on") == 0 && typeof meta[k] == lang.FUNCTION) { (function(k) { list.push(k)
|
||||||
if (typeof cb == lang.FUNCTION) { cb(k, meta[k]) } else { cb[k] = function(event) { meta[k](event, can, item) } }
|
if (typeof cb == lang.FUNCTION) { cb(k, meta[k]) } else { cb[k] = function(event) { meta[k](event, can, item) } }
|
||||||
})(k) } } return list
|
})(k) } } return list
|
||||||
},
|
},
|
||||||
Timer: shy("定时器, value, [1,2,3,4], {interval, length}", function(interval, cb, cbs) { var timer = {stop: false}
|
Timer: shy("定时器, value, [1,2,3,4], {delay, interval, length}", function(interval, cb, cbs) { var timer = {stop: false}
|
||||||
function loop(i) { timer.stop || i >= interval.length && interval.length >= 0 || cb(timer, interval.interval||interval[i], i, interval)?
|
function loop(i) { timer.stop || i >= interval.length && interval.length >= 0 || cb(timer, interval.interval||interval[i], i, interval)?
|
||||||
typeof cbs == lang.FUNCTION && cbs(timer, interval): setTimeout(function() { loop(i+1) }, interval.interval||interval[i+1])
|
typeof cbs == lang.FUNCTION && cbs(timer, interval): setTimeout(function() { loop(i+1) }, interval.interval||interval[i+1])
|
||||||
} interval = typeof interval == lang.OBJECT? interval: [interval]; if (interval.interval == 0) { return cb(), timer }
|
} interval = typeof interval == lang.OBJECT? interval: [interval]; if (interval.interval == 0) { return cb(), timer }
|
||||||
return typeof cb == lang.FUNCTION && setTimeout(function() { loop(0) }, interval.interval||interval[0]), timer
|
return typeof cb == lang.FUNCTION && setTimeout(function() { loop(0) }, interval.delay||interval.interval/2||interval[0]), timer
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
|
60
lib/misc.js
60
lib/misc.js
@ -27,31 +27,27 @@ Volcanos("misc", {Message: function(event, can) { var msg = {}
|
|||||||
return msg.append = can.base.AddUniq(msg.append, key), msg[key] = can.core.List(arguments).slice(1), val
|
return msg.append = can.base.AddUniq(msg.append, key), msg[key] = can.core.List(arguments).slice(1), val
|
||||||
},
|
},
|
||||||
Result: function() {
|
Result: function() {
|
||||||
if (msg.result && msg.result[0] == ice.ErrWarn) { var res = msg.result[0]
|
if (msg.result && msg.result[0] == ice.ErrWarn) { return msg.result.join(ice.SP) }
|
||||||
for (var i = 1; i < msg.result.length; i+=2) { res += msg.result[i]+(msg.result[i+1]||"")+ice.SP }
|
return msg.result && msg.result.join("") || ""
|
||||||
return res
|
|
||||||
} return msg.result && msg.result.join("") || ""
|
|
||||||
},
|
},
|
||||||
Results: function() { return msg.result && msg.result[0] == ice.ErrWarn? "": msg.Result() },
|
Results: function() { return msg.result && msg.result[0] == ice.ErrWarn? "": msg.Result() },
|
||||||
TableDetail: function() { var item = {hash: can.Option(mdb.HASH)}
|
TableDetail: function() { var item = can.Option()
|
||||||
return msg.Table(function(value) { can.core.Value(item, value.key, value.value) }), item
|
return msg.Table(function(value) { can.core.Value(item, value.key, value.value) }), item
|
||||||
},
|
},
|
||||||
Table: function(cb) {
|
Table: function(cb) {
|
||||||
return can.core.List(msg.Length(), function(value, index, array) { var one = {}, res
|
return can.core.List(msg.Length(), function(index) { var value = {}
|
||||||
can.core.List(msg.append, function(key) { one[key] = (msg[key]&&msg[key][index]||"") })
|
can.core.List(msg.append, function(k) { value[k] = msg[k]&&msg[k][index]||"" })
|
||||||
return can.base.isFunc(cb) && (res = cb(one, index, array)) && res != undefined && res || one
|
return can.base.isFunc(cb)? cb(value, index): value
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
Length: function() {
|
Length: function() {
|
||||||
var max = "", len = 0; can.core.List(msg.append, function(key, index) {
|
var max = 0; can.core.List(msg.append, function(k) { if (msg[k] && msg[k].length > max) { max = msg[k].length } }); return max
|
||||||
if (msg[key] && msg[key].length > len) { max = key, len = msg[key].length }
|
|
||||||
}); return len
|
|
||||||
},
|
},
|
||||||
Clear: function(key) { switch (key||ice.MSG_APPEND) {
|
Clear: function(key) { switch (key||ice.MSG_APPEND) {
|
||||||
case ice.MSG_APPEND:
|
case ice.MSG_APPEND:
|
||||||
case ice.MSG_OPTION:
|
case ice.MSG_OPTION:
|
||||||
can.core.List(msg[key], function(item) { delete(msg[item]) })
|
can.core.List(msg[key], function(key) { delete(msg[key]) })
|
||||||
default: msg[key] = []
|
default: delete(msg[key])
|
||||||
} },
|
} },
|
||||||
Copy: function(res) { if (!res) { return msg }
|
Copy: function(res) { if (!res) { return msg }
|
||||||
res.append && (msg.append = res.append) && res.append.forEach(function(item) {
|
res.append && (msg.append = res.append) && res.append.forEach(function(item) {
|
||||||
@ -67,10 +63,9 @@ Volcanos("misc", {Message: function(event, can) { var msg = {}
|
|||||||
can.core.List(value||can.base.Obj(msg.Option(ice.MSG_FIELDS))||can.core.Item(key), function(item) {
|
can.core.List(value||can.base.Obj(msg.Option(ice.MSG_FIELDS))||can.core.Item(key), function(item) {
|
||||||
detail? msg.Push(mdb.KEY, item).Push(mdb.VALUE, key[item]||""): msg.Push(item, key[item]||"")
|
detail? msg.Push(mdb.KEY, item).Push(mdb.VALUE, key[item]||""): msg.Push(item, key[item]||"")
|
||||||
}); return msg
|
}); return msg
|
||||||
}
|
} msg.append = can.base.AddUniq(msg.append, key), msg[key] = msg[key]||[]
|
||||||
msg.append = can.base.AddUniq(msg.append, key), msg[key] = msg[key]||[]
|
|
||||||
var i = msg.option && msg.option.indexOf(key); if (i > -1) { msg.option[i] = "", msg[key] = [] }
|
var i = msg.option && msg.option.indexOf(key); if (i > -1) { msg.option[i] = "", msg[key] = [] }
|
||||||
msg[key].push(can.base.isString(value)||can.base.isFunction(value)? value: JSON.stringify(value))
|
msg[key].push(can.base.isString(value)||can.base.isFunc(value)? value: JSON.stringify(value))
|
||||||
return msg
|
return msg
|
||||||
},
|
},
|
||||||
Echo: function(res) { msg.result = msg.result||[]
|
Echo: function(res) { msg.result = msg.result||[]
|
||||||
@ -97,40 +92,37 @@ Volcanos("misc", {Message: function(event, can) { var msg = {}
|
|||||||
if (meta[cmds[0]]) { return meta[cmds[0]](cmds.slice(1)), true }
|
if (meta[cmds[0]]) { return meta[cmds[0]](cmds.slice(1)), true }
|
||||||
},
|
},
|
||||||
Run: function(event, can, dataset, cmds, cb) { var msg = can.request(event)
|
Run: function(event, can, dataset, cmds, cb) { var msg = can.request(event)
|
||||||
var form = {}; msg.option && msg.option.forEach(function(item) {
|
var form = {}; msg.option && msg.option.forEach(function(key) {
|
||||||
if ([ice.MSG_HANDLE, ice.MSG_DAEMON].indexOf(item) > -1) { return }
|
if ([ice.MSG_HANDLE, ice.MSG_DAEMON].indexOf(key) > -1) { return }
|
||||||
if (can.base.isObject(msg.Option(item))) { return }
|
if (can.base.isObject(msg.Option(key))) { return }
|
||||||
if (can.base.isFunc(msg.Option(item))) { return }
|
if (can.base.isFunc(msg.Option(key))) { return }
|
||||||
msg[item] && (form[item] = msg[item])
|
msg[key] && (form[key] = msg[key])
|
||||||
}), form.cmds = cmds||form.cmds
|
}), form.cmds = cmds||form.cmds; var _can = msg._can._outputs? msg._can: msg._can.sup||msg._can
|
||||||
can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(),
|
can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(),
|
||||||
"_name", (msg._can.sup||msg._can)._name, "_index", (msg._can.sup||msg._can)._index, ice.MSG_DAEMON, msg.__daemon||dataset.daemon||""
|
"_name", _can._name, "_index", _can._index, ice.MSG_DAEMON, dataset.daemon), form, cb)
|
||||||
), form, cb)
|
|
||||||
},
|
},
|
||||||
POST: function(can, msg, url, form, cb) { var xhr = new XMLHttpRequest(), begin = new Date(); msg._xhr = xhr
|
POST: function(can, msg, url, form, cb) { var xhr = new XMLHttpRequest(), begin = new Date(); msg._xhr = xhr
|
||||||
if (can.user.isMailMaster && !msg._upload) {
|
|
||||||
var data = can.core.Items(form, function(value, index, key) { return key+ice.EQ+encodeURIComponent(value) }).join("&")
|
|
||||||
if (data) { url += (url.indexOf(url, "?") == -1? "?": "&")+data }
|
|
||||||
}
|
|
||||||
xhr.open(msg._method||web.POST, url), xhr.onreadystatechange = function() { if (xhr.readyState != 4) { return }
|
xhr.open(msg._method||web.POST, url), xhr.onreadystatechange = function() { if (xhr.readyState != 4) { return }
|
||||||
try { var res = JSON.parse(xhr.responseText) } catch (e) { var res = {result: [xhr.responseText]} } msg.Option("_cost", new Date() - begin)
|
try { var res = JSON.parse(xhr.responseText) } catch (e) { var res = {result: [xhr.responseText]} } msg.Option("_cost", new Date() - begin)
|
||||||
if (xhr.status == 200) { return can.base.isFunc(cb) && cb(msg.Copy(res)) }
|
if (xhr.status == 200) { return can.base.isFunc(cb) && cb(msg.Copy(res)) }
|
||||||
can.user.toastFailure(can, xhr.response), can.misc.Warn(xhr.status, res, url, form)
|
can.user.toastFailure(can, xhr.response), can.misc.Warn(xhr.status, res, url, form)
|
||||||
}, xhr.setRequestHeader(web.Accept, msg._accept||web.ContentJSON)
|
}, xhr.setRequestHeader(web.Accept, msg._accept||web.ContentJSON)
|
||||||
if (msg._upload) {
|
if (msg._upload) {
|
||||||
var data = new FormData(); can.core.Items(form, function(value, index, key) { data.append(key, value) })
|
var data = new FormData(); can.core.ItemForm(form, function(v, i, k) { data.append(k, v) })
|
||||||
data.append(ice.MSG_UPLOAD, web.UPLOAD), data.append(web.UPLOAD, msg._upload)
|
data.append(ice.MSG_UPLOAD, web.UPLOAD), data.append(web.UPLOAD, msg._upload)
|
||||||
xhr.upload.onprogress = function(event) { can.base.isFunc(msg._progress) && msg._progress(event, parseInt(event.loaded*100/event.total), event.total, event.loaded) }
|
xhr.upload.onprogress = function(event) { can.base.isFunc(msg._progress) && msg._progress(event, parseInt(event.loaded*100/event.total), event.total, event.loaded) }
|
||||||
|
} else if (can.user.isMailMaster) {
|
||||||
|
var data = can.core.ItemForm(form, function(value, index, key) { return key+ice.EQ+encodeURIComponent(value) }).join("&")
|
||||||
|
if (data) { url += (url.indexOf(url, "?") == -1? "?": "&")+data }
|
||||||
} else {
|
} else {
|
||||||
var data = can.core.Items(form, function(value, index, key) { return key+ice.EQ+encodeURIComponent(value) }).join("&")
|
var data = can.core.ItemForm(form, function(v, i, k) { return k+ice.EQ+encodeURIComponent(v) }).join("&")
|
||||||
xhr.setRequestHeader(web.ContentType, web.ContentFORM)
|
xhr.setRequestHeader(web.ContentType, web.ContentFORM)
|
||||||
}
|
} try { xhr.send(data) } catch(e) { can.misc.Warn(e) }
|
||||||
try { xhr.send(data) } catch(e) { can.misc.Warn(e) }
|
|
||||||
},
|
},
|
||||||
GET: function(can, url, cb) { var xhr = new XMLHttpRequest()
|
GET: function(can, url, cb) { var xhr = new XMLHttpRequest()
|
||||||
xhr.open(msg._method||web.GET, url), xhr.onreadystatechange = function() { if (xhr.readyState != 4) { return }
|
xhr.open(msg._method||web.GET, url), xhr.onreadystatechange = function() { if (xhr.readyState != 4) { return }
|
||||||
if (xhr.status == 200) { return can.base.isFunc(cb) && cb(xhr.responseText) } can.misc.Warn(xhr.status, res, url, form)
|
if (xhr.status == 200) { return can.base.isFunc(cb) && cb(xhr.responseText) } can.misc.Warn(xhr.status, res, url, form)
|
||||||
}; try { xhr.send() } catch(e) { can.misc.Warn(e) }
|
} try { xhr.send() } catch(e) { can.misc.Warn(e) }
|
||||||
},
|
},
|
||||||
WSS: function(can, args, cb, onopen, onclose, onerror) { if (can.user.isIE) { return }
|
WSS: function(can, args, cb, onopen, onclose, onerror) { if (can.user.isIE) { return }
|
||||||
var url = location.protocol.replace(ice.HTTP, "ws")+"//"+location.host+"/space/"
|
var url = location.protocol.replace(ice.HTTP, "ws")+"//"+location.host+"/space/"
|
||||||
@ -163,7 +155,6 @@ Volcanos("misc", {Message: function(event, can) { var msg = {}
|
|||||||
} catch (e) { can.misc.Warn(e), msg.Reply() }
|
} catch (e) { can.misc.Warn(e), msg.Reply() }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
MergePath: function(can, file, path) { return file.indexOf(ice.PS) == 0 || file.indexOf(ice.HTTP) == 0? file: can.base.Path(path, file) },
|
MergePath: function(can, file, path) { return file.indexOf(ice.PS) == 0 || file.indexOf(ice.HTTP) == 0? file: can.base.Path(path, file) },
|
||||||
MergeCache: function(can, hash) { return can.misc.MergeURL(can, {_path: can.base.Path(web.SHARE_CACHE, hash)}, true) },
|
MergeCache: function(can, hash) { return can.misc.MergeURL(can, {_path: can.base.Path(web.SHARE_CACHE, hash)}, true) },
|
||||||
MergePodCmd: function(can, objs) {
|
MergePodCmd: function(can, objs) {
|
||||||
@ -215,7 +206,6 @@ Volcanos("misc", {Message: function(event, can) { var msg = {}
|
|||||||
if (value != undefined) { localStorage.setItem(key, value) }
|
if (value != undefined) { localStorage.setItem(key, value) }
|
||||||
return localStorage.getItem(key)
|
return localStorage.getItem(key)
|
||||||
},
|
},
|
||||||
|
|
||||||
Log: function() {
|
Log: function() {
|
||||||
var args = [this._time(), this.FileLine(2, 3), ""]
|
var args = [this._time(), this.FileLine(2, 3), ""]
|
||||||
for (var i in arguments) { arguments[i] != undefined && args.push(arguments[i]) }
|
for (var i in arguments) { arguments[i] != undefined && args.push(arguments[i]) }
|
||||||
|
@ -64,17 +64,17 @@ Volcanos("page", {ClassList: {
|
|||||||
data.innerHTML = list[0]||data.innerHTML||"", type = list[1]||html.SPAN, list[2] && can.page.ClassList.add(can, data, list[2])
|
data.innerHTML = list[0]||data.innerHTML||"", type = list[1]||html.SPAN, list[2] && can.page.ClassList.add(can, data, list[2])
|
||||||
} else if (item.button) { var list = can.core.List(item.button); type = html.BUTTON, name = name||list[0]
|
} else if (item.button) { var list = can.core.List(item.button); type = html.BUTTON, name = name||list[0]
|
||||||
data.innerText = can.user.trans(can, list[0]), data.onclick = function(event) {
|
data.innerText = can.user.trans(can, list[0]), data.onclick = function(event) {
|
||||||
can.base.isFunction(list[1]) && list[1](event, name), can.onkeymap.prevent(event); return true
|
can.base.isFunc(list[1]) && list[1](event, name), can.onkeymap.prevent(event); return true
|
||||||
}
|
}
|
||||||
} else if (item.select) { var list = item.select; type = html.SELECT
|
} else if (item.select) { var list = item.select; type = html.SELECT
|
||||||
data.name = name = name||list[0][0], data.title = can.user.trans(can, data.title||name), data.className = data.className||list[0][0]||""
|
data.name = name = name||list[0][0], data.title = can.user.trans(can, data.title||name), data.className = data.className||list[0][0]||""
|
||||||
item.list = list[0].slice(1).map(function(value) { return {type: html.OPTION, value: value, inner: can.user.trans(can, value)} })
|
item.list = list[0].slice(1).map(function(value) { return {type: html.OPTION, value: value, inner: can.user.trans(can, value)} })
|
||||||
data.onchange = function(event) { can.base.isFunction(list[1]) && list[1](event, event.target.value, name) }
|
data.onchange = function(event) { can.base.isFunc(list[1]) && list[1](event, event.target.value, name) }
|
||||||
} else if (item.input) { var list = can.core.List(item.input); type = html.INPUT, name = name||list[0]||""
|
} else if (item.input) { var list = can.core.List(item.input); type = html.INPUT, name = name||list[0]||""
|
||||||
data.type = data.type||"text", data.name = data.name||name, data.autocomplete = "off", data.className = data.className||data.name
|
data.type = data.type||"text", data.name = data.name||name, data.autocomplete = "off", data.className = data.className||data.name
|
||||||
data.onfocus = data.onfocus||function(event) { event.target.setSelectionRange(0, -1) }
|
data.onfocus = data.onfocus||function(event) { event.target.setSelectionRange(0, -1) }
|
||||||
data.onkeydown = function(event) { can.base.isFunction(list[1]) && list[1](event) }
|
data.onkeydown = function(event) { can.base.isFunc(list[1]) && list[1](event) }
|
||||||
data.onkeyup = function(event) { can.base.isFunction(list[2]) && list[2](event) }
|
data.onkeyup = function(event) { can.base.isFunc(list[2]) && list[2](event) }
|
||||||
} else if (item.username) { var list = can.core.List(item.username); type = html.INPUT, name = name||list[0]||html.USERNAME
|
} else if (item.username) { var list = can.core.List(item.username); type = html.INPUT, name = name||list[0]||html.USERNAME
|
||||||
data.name = data.name||name, data.autocomplete = data.autocomplete||html.USERNAME, data.className = list[1]||data.className||data.name
|
data.name = data.name||name, data.autocomplete = data.autocomplete||html.USERNAME, data.className = list[1]||data.className||data.name
|
||||||
} else if (item.password) { var list = can.core.List(item.password); type = html.INPUT, name = name||list[0]||html.PASSWORD
|
} else if (item.password) { var list = can.core.List(item.password); type = html.INPUT, name = name||list[0]||html.PASSWORD
|
||||||
|
@ -89,10 +89,10 @@ Volcanos(chat.ONEXPORT, {width: function(can) { return can._target.offsetWidth }
|
|||||||
}) }) },
|
}) }) },
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONENGINE, {_engine: function(event, can, msg, panel, cmds, cb) { var list = can.river
|
Volcanos(chat.ONENGINE, {_engine: function(event, can, msg, panel, cmds, cb) { var list = can.river
|
||||||
cmds.length == 0 && can.core.ItemSort(list, "order", function(key, value) { can.core.Item(value.storm).length > 0 && msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) })
|
cmds.length == 0 && can.core.ItemOrder(list, "order", function(key, value) { can.core.Item(value.storm).length > 0 && msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) })
|
||||||
if (cmds.length != 1 && cmds[1] != chat.STORM) { return false }
|
if (cmds.length != 1 && cmds[1] != chat.STORM) { return false }
|
||||||
|
|
||||||
var river = list[cmds[0]]; if (!river) { return false }
|
var river = list[cmds[0]]; if (!river) { return false }
|
||||||
can.core.ItemSort(river.storm, "order", function(key, value) { msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) })
|
can.core.ItemOrder(river.storm, "order", function(key, value) { msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) })
|
||||||
can.base.isFunc(cb) && cb(msg); return true
|
can.base.isFunc(cb) && cb(msg); return true
|
||||||
}})
|
}})
|
||||||
|
@ -341,13 +341,14 @@ Volcanos(chat.ONSYNTAX, {
|
|||||||
},
|
},
|
||||||
js: {
|
js: {
|
||||||
split: {
|
split: {
|
||||||
operator: "{[(.,:;!?|<*>- )]}",
|
operator: "{[(.,:;!?|&<*>=+/- )]}",
|
||||||
},
|
},
|
||||||
prefix: {
|
prefix: {
|
||||||
"// ": code.COMMENT,
|
"// ": code.COMMENT,
|
||||||
},
|
},
|
||||||
regexp: {
|
regexp: {
|
||||||
// "can.*": code.FUNCTION,
|
// "can.*": code.FUNCTION,
|
||||||
|
"[A-Z_0-9]+": code.CONSTANT,
|
||||||
},
|
},
|
||||||
keyword: {
|
keyword: {
|
||||||
"const": code.KEYWORD,
|
"const": code.KEYWORD,
|
||||||
@ -388,7 +389,9 @@ Volcanos(chat.ONSYNTAX, {
|
|||||||
"this": code.DATATYPE,
|
"this": code.DATATYPE,
|
||||||
"JSON": code.DATATYPE,
|
"JSON": code.DATATYPE,
|
||||||
"Date": code.DATATYPE,
|
"Date": code.DATATYPE,
|
||||||
"Error": code.DATATYPE,
|
"Array": code.DATATYPE,
|
||||||
|
"Date": code.DATATYPE,
|
||||||
|
"Math": code.DATATYPE,
|
||||||
"XMLHttpRequest": code.DATATYPE,
|
"XMLHttpRequest": code.DATATYPE,
|
||||||
|
|
||||||
"encodeURIComponent": code.FUNCTION,
|
"encodeURIComponent": code.FUNCTION,
|
||||||
@ -399,7 +402,27 @@ Volcanos(chat.ONSYNTAX, {
|
|||||||
"delete": code.FUNCTION,
|
"delete": code.FUNCTION,
|
||||||
"confirm": code.FUNCTION,
|
"confirm": code.FUNCTION,
|
||||||
"alert": code.FUNCTION,
|
"alert": code.FUNCTION,
|
||||||
|
"hasOwnProperty": code.FUNCTION,
|
||||||
|
"callee": code.FUNCTION,
|
||||||
|
"apply": code.FUNCTION,
|
||||||
|
"call": code.FUNCTION,
|
||||||
|
"parse": code.FUNCTION,
|
||||||
|
"pop": code.FUNCTION,
|
||||||
|
"push": code.FUNCTION,
|
||||||
|
"sort": code.FUNCTION,
|
||||||
|
"join": code.FUNCTION,
|
||||||
|
"slice": code.FUNCTION,
|
||||||
|
"concat": code.FUNCTION,
|
||||||
|
"indexOf": code.FUNCTION,
|
||||||
|
"lastIndexOf": code.FUNCTION,
|
||||||
|
"reverse": code.FUNCTION,
|
||||||
|
"stringify": code.FUNCTION,
|
||||||
|
"forEach": code.FUNCTION,
|
||||||
|
"toLowerCase": code.FUNCTION,
|
||||||
|
"length": code.FUNCTION,
|
||||||
|
"split": code.FUNCTION,
|
||||||
|
"trim": code.FUNCTION,
|
||||||
|
|
||||||
"kit": code.DATATYPE,
|
"kit": code.DATATYPE,
|
||||||
"ice": code.DATATYPE,
|
"ice": code.DATATYPE,
|
||||||
"can": code.DATATYPE,
|
"can": code.DATATYPE,
|
||||||
|
@ -72,23 +72,23 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
|||||||
var list = [0]; for (var i = 7; i < 24; i++) { list.push(can.base.Number(i, 2)) }
|
var list = [0]; for (var i = 7; i < 24; i++) { list.push(can.base.Number(i, 2)) }
|
||||||
function key(time) { return time.getDay()+" "+can.base.Number(time.getHours(), 2) }
|
function key(time) { return time.getDay()+" "+can.base.Number(time.getHours(), 2) }
|
||||||
function get(begin_time, col, row, hash) { return hash[col-1+" "+list[row]] }
|
function get(begin_time, col, row, hash) { return hash[col-1+" "+list[row]] }
|
||||||
function set(begin_time, col, row) { return can.base.Time(can.base.TimeAdd(begin_time, -begin_time.getDay()+col-1), "%y-%m-%d ")+list[row] }
|
function set(begin_time, col, row) { return can.base.Time(can.base.DateAdd(begin_time, -begin_time.getDay()+col-1), "%y-%m-%d ")+list[row] }
|
||||||
can.onimport._content(can, msg, head, list, key, get, set)
|
can.onimport._content(can, msg, head, list, key, get, set)
|
||||||
},
|
},
|
||||||
month: function(can, msg) { var head = can.onexport.head(can, "order")
|
month: function(can, msg) { var head = can.onexport.head(can, "order")
|
||||||
var list = [0]; for (var i = 1; i < 6; i++) { list.push(i) }
|
var list = [0]; for (var i = 1; i < 6; i++) { list.push(i) }
|
||||||
function key(time) { return can.base.Time(time, "%y-%m-%d") }
|
function key(time) { return can.base.Time(time, "%y-%m-%d") }
|
||||||
function get(begin_time, col, row, hash) {
|
function get(begin_time, col, row, hash) {
|
||||||
var begin = can.base.TimeAdd(begin_time, -(begin_time.getDate()-1))
|
var begin = can.base.DateAdd(begin_time, -(begin_time.getDate()-1))
|
||||||
var last = can.base.TimeAdd(begin_time, -(begin_time.getDate()-1)-begin.getDay())
|
var last = can.base.DateAdd(begin_time, -(begin_time.getDate()-1)-begin.getDay())
|
||||||
var day = can.base.TimeAdd(last, (row-1)*7+col)
|
var day = can.base.DateAdd(last, (row-1)*7+col)
|
||||||
var l = can.date.solar2lunar(day)
|
var l = can.date.solar2lunar(day)
|
||||||
return [can.page.Format(html.SPAN, day.getDate(), "day")+" "+can.page.Format(html.SPAN, l.autoDay, l.autoClass)].concat(hash[key(day)]||[])
|
return [can.page.Format(html.SPAN, day.getDate(), "day")+" "+can.page.Format(html.SPAN, l.autoDay, l.autoClass)].concat(hash[key(day)]||[])
|
||||||
}
|
}
|
||||||
function set(begin_time, col, row) {
|
function set(begin_time, col, row) {
|
||||||
var begin = can.base.TimeAdd(begin_time, -(begin_time.getDate()-1))
|
var begin = can.base.DateAdd(begin_time, -(begin_time.getDate()-1))
|
||||||
var last = can.base.TimeAdd(begin_time, -(begin_time.getDate()-1)-begin.getDay())
|
var last = can.base.DateAdd(begin_time, -(begin_time.getDate()-1)-begin.getDay())
|
||||||
var day = can.base.TimeAdd(last, (row-1)*7+col)
|
var day = can.base.DateAdd(last, (row-1)*7+col)
|
||||||
return key(day)
|
return key(day)
|
||||||
}
|
}
|
||||||
can.onimport._content(can, msg, head, list, key, get, set)
|
can.onimport._content(can, msg, head, list, key, get, set)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user