From fbb5828bd218e6f16f8ee11b293f639ab1ce943c Mon Sep 17 00:00:00 2001 From: anekos Date: Thu, 4 Mar 2010 11:26:43 +0000 Subject: オプション等の扱いを一般化 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@36928 d0d07461-0603-4401-acd4-de1884942a52 --- feedSomeKeys_3.js | 88 +++++++++++++++++++++++++++---------------------------- 1 file changed, 43 insertions(+), 45 deletions(-) (limited to 'feedSomeKeys_3.js') diff --git a/feedSomeKeys_3.js b/feedSomeKeys_3.js index b3bd698..1f64a3d 100755 --- a/feedSomeKeys_3.js +++ b/feedSomeKeys_3.js @@ -39,7 +39,7 @@ let PLUGIN_INFO = feedSomeKeys 3 feed some defined key events into the Web content キーイベントをWebコンテンツ側に送る - 1.5.2 + 1.6.0 anekos new BSD License (Please read the source code comments of this plugin) 修正BSDライセンス (ソースコードのコメントを参照してください) @@ -171,6 +171,7 @@ let INFO = const EVENTS = 'keypress keydown keyup'.split(/\s+/); const EVENTS_WITH_V = EVENTS.concat(['v' + n for each (n in EVENTS)]); + const IGNORE_URLS = //; const VKeys = { '0': KeyEvent.DOM_VK_0, @@ -305,40 +306,38 @@ let INFO = function (values) (values && !values.some(function (value) !list.some(function (event) event === value))); - function unmap (filter, patternOrUrl, ignoreUrls) { - let result = 0; - + function findMappings ({all, filter, urls, ignoreUrls, not, result}) { function match (map) { let r = ( map.feedSomeKeys && - (!filter || filter === map.names[0]) && - (ignoreUrls || mappings._matchingUrlsTest(map, patternOrUrl)) + (all || + (!filter || filter === map.names[0]) && + (ignoreUrls || urls === IGNORE_URLS || mappings._matchingUrlsTest(map, urls))) ); - result++; - return r; + if (result && r) { + if (typeof result.matched === 'number') + result.matched++; + else + result.matched = 1; + } + return !!r ^ !!not; } - let mode = modes.NORMAL; - mappings._user[mode] = [ - map - for each (map in mappings._user[mode]) - if (!match(map)) - ]; - return result; - } - - function gets (filter) { if (filter) filter = mappings._expandLeader(filter); - return [ - map - for (map in mappings._mappingsIterator([modes.NORMAL], mappings._user)) - if (map.feedSomeKeys && (!filter || map.names[0] == filter)) - ]; + if (urls) + urls = RegExp(urls); + + return mappings._user[modes.NORMAL].filter(match); } - function list (filter) { - let maps = gets(filter); + function unmap (condition) { + condition.not = true; + mappings._user[modes.NORMAL] = findMappings(condition); + } + + function list (condition) { + let maps = findMappings(condition); let template = modules.template; let list = @@ -346,8 +345,8 @@ let INFO = template.map(maps, function (map) template.map(map.names, function (name) - - + + )) } @@ -367,12 +366,12 @@ let INFO = map.names[0], map.feedSomeKeys.rhs + ' for ' + (map.matchingUrls ? map.matchingUrls : 'Global') ] - for each (map in gets()) + for each (map in findMappings({urls: args['-urls'], ignoreUrls: args['-ignoreurls']})) ]; } function urlCompleter (context, args) { - let maps = gets(); + let maps = findMappings({all: true}); let uniq = {}; return [ (uniq[map.matchingUrls] = 1, [map.matchingUrls.source, map.names]) @@ -418,7 +417,7 @@ let INFO = { matchingUrls: args['-urls'], feedSomeKeys: { - rhs: rhs + rhs: rhs, } }, true @@ -431,7 +430,11 @@ let INFO = } else { let [, lhs, rhs] = args.literalArg.match(/^(\S+)\s+(.*)$/) || args.literalArg; if (!rhs) { - list(args.literalArg.trim()); + list({ + filter: args.literalArg.trim(), + urls: args['-urls'], + ignoreUrls: !args['-urls'] + }); } else { add([lhs, rhs]); } @@ -470,15 +473,12 @@ let INFO = 'Clear fmappings', function (args) { if (args.bang) { - unmap(null, null, true); - liberator.log('All fmappings were removed'); + unmap({ignoreUrls: true}); + liberator.log('All fmappings were removed.'); } else { - let urls = args.literalArg; - liberator.echo( - unmap(null, urls && RegExp(urls), false) ? - 'Some fmappings were removed' : - 'Not found specifed fmappings' - ); + let result = {}; + unmap({urls: args.literalArg, result: result}); + liberator.echo(result.matched ? 'Some fmappings were removed.' : 'Not found specifed fmappings.'); } }, { @@ -501,11 +501,9 @@ let INFO = if (!name) return liberator.echoerr('E471: Argument required'); - liberator.echo( - unmap(name, urls && RegExp(urls), args['-ignoreurls']) ? - 'Some fmappings were removed' : - 'Not found specifed fmappings' - ); + let result = {}; + unmap({filter: name, urls: urls, ignoreUrls: args['-ignoreurls'], result: result}); + liberator.echo(result.matched ? 'Some fmappings were removed.' : 'Not found specifed fmappings.'); }, { literal: 0, @@ -530,7 +528,7 @@ let INFO = ); __context__.API = - 'VKeys feed getFrames fromXPath virtualize unmap gets list'.split(/\s+/).reduce( + 'VKeys feed getFrames fromXPath virtualize unmap findMappings list'.split(/\s+/).reduce( function (result, name) (result[name] = eval(name), result), {} -- cgit v1.2.3
{name}{map.feedSomeKeys.rhs}{name}{map.feedSomeKeys.rhs} {map.matchingUrls ? map.matchingUrls : '[Global]'}