From ed54cc424c24dcff1e724cd01da8866c8b715f48 Mon Sep 17 00:00:00 2001 From: hogelog Date: Tue, 30 Dec 2008 08:04:08 +0000 Subject: * enable load local scenario file. * enable regexp pattern. * enable ignore pattern. * require _libly.js * check expression argments exact. * s/g:userScenarioList/g:userScenario/g * s/this/self/ git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27608 d0d07461-0603-4401-acd4-de1884942a52 --- scenario-actor.js | 204 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 145 insertions(+), 59 deletions(-) (limited to 'scenario-actor.js') diff --git a/scenario-actor.js b/scenario-actor.js index df042ed..46ffa6a 100644 --- a/scenario-actor.js +++ b/scenario-actor.js @@ -11,15 +11,19 @@ var PLUGIN_INFO = == Usage == browser act scenario semi-automatic. +== Needs Library == +- _libly.js(ver.0.1.17) + @see http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/_libly.js + == SETTING == -enable user scenario is liberator.globalVariables.userScenarioList. -.vimperatorrc (or _vimperatorrc) can set -liberator.globalVariables.userScenarioList -using inline javascript. +Scenario list is loaded by script under RUNTIME_PATH/plugin/scenario, +and liberator.globalVariables.userScenario. +liberator.globalVariables.userScenario can be set +by .vimperatorrc (or _vimperatorrc) using inline javascript. >|| // hatena sample javascript < @@ -84,10 +86,11 @@ const debugMode = true; const VariablesName = 'ScenarioActorVariables'; const VariablesLabelID = 'ScenarioActorVariablesLabelID'; -let loadedScenarioList = []; +let SCENARIO_DIR = liberator.globalVariables.scenarioDir || 'plugin/scenario'; -if(liberator.globalVariables.userScenarioList) - loadedScenarioList.push(liberator.globalVariables.userScenarioList); +var libly = liberator.plugins.libly; +var $U = libly.$U; +var logger = $U.getLogger('scenario-actor'); function ScenarioActor () { //{{{ let variables = storage.newMap('scenarioactor', true); @@ -96,96 +99,118 @@ function ScenarioActor () { //{{{ let triggeredEvent = event; let doc = event.target.contentDocument || event.target; let win = doc.defaultView; - return { + let self = { glet: function (name, value) { - variables.set(this.eval(name), this.eval(value)); + if((typeof name)!='string') throw [name, value]; + variables.set(name, self.eval(value)); return value; }, gvar: function (name) { + if((typeof name)!='string') throw [name, value]; return variables.get(name); }, begin: function () { let lastValue; for(let i=0,len=arguments.length;i=0) + if(matchfun(scenario)) context.eval({begin: scenario.action}); }); }, true); }, }; + return self; }; //}}} let actor = plugins.scenarioActor = ScenarioActor(); + +let loadedScenarioList = plugins.scenarioActor.loadedScenarioList = []; + let (e = liberator.globalVariables.scenario_actor_enabled) { if (e && e.toString().match(/^(false|0)$/i)) actor.enabled = false; } -let allScenarioList = plugins.scenarioActor.allScenarioList = {}; -io.getRuntimeDirectories('plugin/scenario').forEach(function(dir) { - actor.loadScenario(dir); -}); -loadedScenarioList.forEach(function(list) { - for(event in list) { - if(!allScenarioList[event]) allScenarioList[event] = []; - allScenarioList[event] = allScenarioList[event].concat(list[event]); - } -}); -for(event in allScenarioList) { - actor.addListener(event, allScenarioList[event]); -} +actor.loadLocalScenario(); commands.addUserCommand(['scenarioclear'], 'clear scenario-actor variables', actor.clear, @@ -302,6 +370,24 @@ commands.addUserCommand(['scenariovars'], 'show scenario-actor variables', { argCount: '0', }); +commands.addUserCommand(['scenarioload'], 'load local scenario', + function(args) { + if(args.length) { + args.forEach(actor.loadLocalScenario); + } else { + actor.loadLocalScenario(); + } + }, + { + argCount: '*', + completer: function (context, args) { + let completions = []; + actor.readScenarioDirectory(name, function(file) { + completions.push([file.leafName, '']); + }); + context.completions = completions; + } + }); commands.addUserCommand(['scenario'], 'turn on/off scenario-actor', function(args) { if (args.length) { -- cgit v1.2.3