Created
February 24, 2011 03:33
-
-
Save ne-sachirou/841702 to your computer and use it in GitHub Desktop.
AzureaUtil.js #AzureaScript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// @author = http://c4se.sakura.ne.jp/profile/ne.html | |
// @date = 2011-02-24 | |
// @site = | |
// @license = public domain | |
var AzureaUtil = {}; | |
AzureaUtil.event = {}; | |
AzureaUtil.time = {}; | |
(function() { | |
function mixin(hash1, // @param Hash: | |
hash2, // @param Hash: | |
overwrite) { // @param Boolean=true: | |
var key; | |
if (typeof overwrite === 'undefined') { | |
overwrite = true; | |
} | |
for (key in hash2) { | |
if (overwrite || typeof hash1[key] === 'undefined') { | |
hash1[key] = hash2[key]; | |
} | |
} | |
} | |
AzureaUtil.mixin = mixin; | |
var PreProcessTimelineStatuses = [], | |
PreProcessTimelineStatus = [], | |
PreFilterProcessTimelineStatus = [], | |
PostFilterProcessTimelineStatus = [], | |
PostProcessTimelineStatus = [], | |
PostProcessTimelineStatuses = [], | |
PreSendUpdateStatus = [], | |
PostSendUpdateStatus = [], | |
ReceiveFavorite = []; | |
function addEventListener(eventname, // @param String: | |
fun) { // @param Function: | |
var listener = eval(eventname), | |
i = -1; | |
while (listener[++i]) { | |
if (listener[i] === fun) { | |
listener.splice(i, 1); | |
} | |
} | |
listener.push(fun); | |
} | |
function removeEventListener(eventname, // @param String: | |
fun) { // @param Function: | |
var listener = eval(eventname), | |
i = -1; | |
while (listener[++i]) { | |
if (listener[i] === fun) { | |
listener.splice(i, 1); | |
break; | |
} | |
} | |
} | |
mixin(AzureaUtil.event, { | |
'PreProcessTimelineStatuses': PreProcessTimelineStatuses, | |
'PreProcessTimelineStatus': PreProcessTimelineStatus, | |
'PreFilterProcessTimelineStatus': PreFilterProcessTimelineStatus, | |
'PostFilterProcessTimelineStatus': PostFilterProcessTimelineStatus, | |
'PostProcessTimelineStatus': PostProcessTimelineStatus, | |
'PostProcessTimelineStatuses': PostProcessTimelineStatuses, | |
'PreSendUpdateStatus': PreSendUpdateStatus, | |
'PostSendUpdateStatus': PostSendUpdateStatus, | |
'ReceiveFavorite': ReceiveFavorite, | |
'addEventListener': addEventListener, | |
'removeEventListener': removeEventListener | |
}); | |
var timeout_list = {},// {id: [time, fun]} | |
timeinterval_list = {};// {id: [time, fun, interval]} | |
// timeevent_list = (function() { | |
// var timeevent_list, | |
// timeEvent; | |
// | |
// for () { | |
// timeEvent = System.settings.getValue('user.AzureaUtil', 'TimeEvent' + i); | |
// timeevent_list[] | |
// } | |
// return timeevent_list; | |
//})(); | |
function attainSchedule() { | |
var now = new Date().getTime(), | |
id; | |
for (id in timeout_list) { | |
if (timeout_list[id][0] <= now) { | |
timeout_list[id][1](); | |
delete timeout_list[id]; | |
} | |
} | |
for (id in timeinterval_list) { | |
if (timeinterval_list[id][0] <= now) { | |
timeinterval_list[id][0] += timeinterval_list[id][2]; | |
timeinterval_list[id][1](); | |
} | |
} | |
//for (id in timeevent_list) { | |
// if (timeevent_list[id][0] <= now) { | |
// timeevent_list[id][1](); | |
// delete timeevent_list[id]; | |
// System.settings.getValue('user.AzureaUtil', 'TimeEvent' + i); | |
// } | |
// | |
//} | |
} | |
addEventListener('PreProcessTimelineStatus', function(status) { | |
attainSchedule(); | |
}); | |
addEventListener('ReceiveFavorite', function(source, target, target_object) { | |
attainSchedule(); | |
}); | |
function setTimeOut(fun, // @param Function: | |
ms) { // @param Number: | |
// @return Number: | |
var id = Math.floor(Math.random() * new Date().getTime()).toString(36); | |
timeout_list[id] = [new Date().getTime() + ms, fun]; | |
return id; | |
} | |
function clearTimeOut(id) { // @param Number: | |
delete timeout_list[id]; | |
} | |
function setTimeInterval(fun, // @param Function: | |
ms) { // @param Number: | |
// @return Number: | |
var id = Math.floor(Math.random() * new Date().getTime()).toString(36); | |
timeinterval_list[id] = [new Date().getTime() + ms, fun, ms]; | |
return id | |
} | |
function clearTimeInterval(id) { // @param Number: | |
delete timeinterval_list[id]; | |
} | |
//function setTimeEvent(fun, // @param Function: | |
// ms) { // @param Number: | |
// // @return Number: | |
// | |
//} | |
// | |
// | |
//function clearTimeEvent() {} | |
mixin(AzureaUtil.time, { | |
'setTimeOut': setTimeOut, | |
'clearTimeOut': clearTimeOut, | |
'setTimeInterval': setTimeInterval, | |
'clearTimeInterval': clearTimeInterval | |
}); | |
})(); | |
//function PreProcessTimelineStatuses() {} | |
function PreProcessTimelineStatus(status) { | |
var listener = AzureaUtil.event.PreProcessTimelineStatus, | |
i = -1; | |
while (listener[++i]) { | |
listener[i](status); | |
} | |
} | |
function PreFilterProcessTimelineStatus(status) { | |
var listener = AzureaUtil.event.PreFilterProcessTimelineStatus, | |
i = -1, r, flag = false; | |
while (listener[++i]) { | |
r = listener[i](status); | |
flag = flag || r; | |
} | |
return flag; | |
} | |
//function PostFilterProcessTimelineStatus() {} | |
//function PostProcessTimelineStatus() {} | |
//function PostProcessTimelineStatuses() {} | |
function PreSendUpdateStatus(status) { | |
var listener = AzureaUtil.event.PreSendUpdateStatus, | |
i = -1, r, flag = false; | |
while (listener[++i]) { | |
r = listener[i](status); | |
flag = flag || r; | |
} | |
return flag; | |
} | |
function PostSendUpdateStatus() { | |
var listener = AzureaUtil.event.PostSendUpdateStatus, | |
i = -1; | |
while (listener[++i]) { | |
listener[i](); | |
} | |
} | |
function ReceiveFavorite(source, | |
target, | |
target_object) { | |
var listener = AzureaUtil.event.ReceiveFavorites, | |
i = -1; | |
while (listener[++i]) { | |
listener[i](source, target, target_object); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
AzureaUtil作りました #AzureaScript #js - c4se記:さっちゃんですよ☆ http://d.hatena.ne.jp/Kureduki_Maari/20110226/1298651872
解説記事
ne-sachirou/AzureaVim - GitHub https://github.com/ne-sachirou/AzureaVim にprojectを移動しました。