JavaScript, jsh, 抜粋
jshの補完部分にある、列挙に出ないプロパティ定義部分。
Fが関数、Nが数値、Bが真偽値、Sが文字列。
ArrayにforEachがあったり、JavaScript 1.6ぐらいの内容。
jsh.Completion.dontEnums=[
{check: function(obj, objType){return objType=='String'}, properties: {
F:'charAt charCodeAt concat indexOf lastIndexOf match replace search slice split substr substring toLowerCase toUpperCase valueOf '+
'anchor big blink bold fixed fontcolor fontsize italics link small strike sub sup',
N:'length'
}},
{check: function(obj, objType){return objType=='Array'}, properties: {
F:'concat join pop push unshift shift sort reverse slice splice toString valueOf '+
'every filter forEach map some',
N:'length'
}},
{check: function(obj, objType){return objType=='Boolean'}, properties: {
F:'toString valueOf'
}},
{check: function(obj, objType){return objType=='Date'}, properties: {
F:'getDate getYear getFullYear getHours getMilliseconds getMinutes getMonth getSeconds getTime getDay '+
'setDate setYear setFullYear setHours setMilliseconds setMinutes setMonth setSeconds setTime '+
'getUTCDate getUTCFullYear getUTCHours getUTCMilliseconds getUTCMinutes getUTCMonth getUTCSeconds getUTCDay '+
'setUTCDate setUTCFullYear setUTCHours setUTCMilliseconds setUTCMinutes setUTCMonth setUTCSeconds '+
'toGMTString toLocaleString toUTCString UTC getTimezoneOffset parse toString valueOf toSource'
}},
{check: function(obj, objType){return objType=='Number'}, properties: {
F:'toExponential toFixed toPrecision toSource toString valueOf'
}},
{check: function(obj, objType){return objType=='RegExp'}, properties: {
F:'exec test toSource toString',
B:'global ignoreCase multiline',
N:'lastIndex',
S:'source'
}},
{check: function(obj, objType){return obj.navigator}, properties: {
F:'Array String Number Date RegExp Boolean '+
'escape unescape decodeURI decodeURIComponent encodeURI encodeURIComponent '+
'eval isFinite isNaN parseFloat parseInt',
O:'Math undefined',
N:'Infinity NaN'
}},
{check: function(obj, objType){return objType=='Math'}, properties: {
F:'abs acos asin atan atan2 ceil cos exp floor log max min pow random round sin sqrt tan',
N:'E LN2 LN10 LOG2E LOG10E PI SQRT1_2 SQRT2'
}},
{check: function(obj, objType){return obj.MAX_VALUE}, properties: {
N:'MAX_VALUE MIN_VALUE NaN NEGATIVE_INFINITY POSITIVE_INFINITY'
}},
{check: function(obj, objType){return obj.fromCharCode}, properties: {
F:'fromCharCode'
}},
{check: function(obj, objType){return objType=='Function'}, properties: {
F:'apply call toSource toString'
}}
]
check関数で、ピタッとタイプ文字列がマッチするものは判定が簡単。
Numberとかwindowは、ウィンドウが違うと==で判定できなかったり、ブラウザにより挙動が違うので、雑にプロパティを見てチェックしてます。
shinichitomitaさんのコードのカンマの位置、
doGet : function(path, headers, callback, errback) {
...
}
,
doPost : function(path, headers, data, callback, errback) {
...
}
,
...
ここだと、切り貼りが楽だし、最後に余計なカンマが付いてIEでエラーになったりしなくっていいなぁ。
DAV、モーレツに自分も使ってみたい。
jshで書いたコードを[Ctrl]+[S]で保存したり、FlashProxyと組んでmp3を再生したり名前を補完したりしたい。