From 627b30dc502aa277e53e93962e91f8f770ac335b Mon Sep 17 00:00:00 2001 From: anekos Date: Mon, 12 Jan 2009 17:44:25 +0000 Subject: はてなスターに対応 表示を簡潔に git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@28346 d0d07461-0603-4401-acd4-de1884942a52 --- PMWriter.js | 207 ++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 140 insertions(+), 67 deletions(-) (limited to 'PMWriter.js') diff --git a/PMWriter.js b/PMWriter.js index 66855a2..132cb8f 100644 --- a/PMWriter.js +++ b/PMWriter.js @@ -4,89 +4,162 @@ * DO NOT USE! * */ -liberator.plugins.pmwriter = {}; -let pluginDirPath = liberator.globalVariables.pmwriter_plugin_dir; -let outputDir = liberator.globalVariables.pmwriter_output_dir; + (function(){ + let pluginDirPath = liberator.globalVariables.pmwriter_plugin_dir; + let outputDir = liberator.globalVariables.pmwriter_output_dir; + if (!(pluginDirPath && outputDir)) return; - let U = liberator.plugins.libly.$U; - - let myname = __context__.NAME; - - let otags = liberator.eval('tags', liberator.plugins.pluginManager.list); - let template = liberator.eval('template', liberator.plugins.pluginManager.list); - - // makeLink を無理矢理修正 - let makeLink = liberator.eval('makeLink', liberator.plugins.pluginManager.list); - liberator.plugins.pmwriter.makeLink = function (str) makeLink(str, true); - liberator.log(makeLink) - liberator.eval('makeLink = liberator.plugins.pmwriter.makeLink ', liberator.plugins.pluginManager.list); - - let linkTo; - let tags = { - __proto__: otags, - name: function () {otags.name.apply(otags, arguments)} + let AUTHORS = { + Trapezoid: 'http://unsigned.g.hatena.ne.jp/Trapezoid/', + anekos: 'http://d.hatena.ne.jp/nokturnalmortum/', + "halt feits": 'http://project-p.jp/halt/', + hogelog: 'http://d.hatena.ne.jp/hogelog/', + janus_wel: 'http://d.hatena.ne.jp/janus_wel/', + mattn: 'http://mattn.kaoriya.net', + pekepeke: 'http://d.hatena.ne.jp/pekepekesamurai/', + pekepekesamurai: 'http://d.hatena.ne.jp/pekepekesamurai/', + suVene: 'http://d.zeromemory.info/', + teramako: 'http://d.hatena.ne.jp/teramako/', }; - let ioService = services.get("io"); - let files = io.readDirectory(pluginDirPath); - let i = 0; - let xml = <>>; - let xml_index = <>>; - files.forEach(function (file) { - if (!/\.js$/.test(file.path)) - return; - let src = io.readFile(file.path); - if (!/PLUGIN_INFO/.test(src)) - return; - //if (i++ > 0) return; + function action () { - let uri = ioService.newFileURI(file); + liberator.plugins.pmwriter = {}; + let U = liberator.plugins.libly.$U; - function Context (file) { - this.NAME = file.leafName.replace(/\..*/, "").replace(/-([a-z])/g, function (m, n1) n1.toUpperCase()); - }; - let context = new Context(file); - let PLUGIN_INFO; - let detailFilename = context.NAME + '.html'; - linkTo = detailFilename; - - if (context.NAME == myname) - return; - - context.watch('PLUGIN_INFO', function (n,N,O) { PLUGIN_INFO = O; throw 'STOP';}); + let myname = __context__.NAME; - try { services.get("subscriptLoader").loadSubScript(uri.spec, context); } catch (e) {} + let otags = liberator.eval('tags', liberator.plugins.pluginManager.list); + let template = liberator.eval('template', liberator.plugins.pluginManager.list); - let info = PLUGIN_INFO; - tags.name = function () {otags.name.apply(otags, arguments)}; + // makeLink を無理矢理修正 + let makeLink = liberator.eval('makeLink', liberator.plugins.pluginManager.list); + liberator.plugins.pmwriter.makeLink = function (str) makeLink(str, true); + liberator.log(makeLink) + liberator.eval('makeLink = liberator.plugins.pmwriter.makeLink ', liberator.plugins.pluginManager.list); - let plugin = [ ]; - plugin['name'] = context.NAME; - plugin['info'] = {}; - plugin['orgInfo'] = {}; + let linkTo; + let tags = { + __proto__: otags, + name: function () {otags.name.apply(otags, arguments)} + }; - for (let tag in tags){ - plugin.orgInfo[tag] = info[tag]; - let value = tags[tag](info); - if (value && value.toString().length > 0){ - plugin.push([tag, value]); - plugin.info[tag] = value; + let ioService = services.get("io"); + let files = io.readDirectory(pluginDirPath); + let i = 0; + let xml = <>>; + let xml_index = <>>; + + files.forEach(function (file) { + if (!/\.js$/.test(file.path)) + return; + let src = io.readFile(file.path); + if (!/PLUGIN_INFO/.test(src)) + return; + //if (i++ > 0) return; + + let uri = ioService.newFileURI(file); + + function Context (file) { + this.NAME = file.leafName.replace(/\..*/, "").replace(/-([a-z])/g, function (m, n1) n1.toUpperCase()); + }; + let context = new Context(file); + let PLUGIN_INFO; + let detailFilename = context.NAME + '.html'; + + if (context.NAME == myname) + return; + + context.watch('PLUGIN_INFO', function (n,N,O) { PLUGIN_INFO = O; throw 'STOP';}); + + try { services.get("subscriptLoader").loadSubScript(uri.spec, context); } catch (e) {} + + let info = PLUGIN_INFO; + tags.name = function () {otags.name.apply(otags, arguments)}; + + let plugin = [ ]; + plugin['name'] = context.NAME; + plugin['info'] = {}; + plugin['orgInfo'] = {}; + + for (let tag in tags){ + plugin.orgInfo[tag] = info[tag]; + let value = tags[tag](info); + if (value && value.toString().length > 0){ + plugin.push([tag, value]); + plugin.info[tag] = value; + } } - } - - xml = template.table(plugin.name, plugin); - io.writeFile(io.getFile(outputDir + detailFilename), xml.toString()); - - let data = plugin.filter(function($_) /name|description|author/.test($_[0])); - xml_index += template.table(plugin.name, data); - }); - io.writeFile(io.getFile(outputDir + 'index.html'), xml_index.toString()); + xml = template.table(plugin.name, plugin); + io.writeFile(io.getFile(outputDir + detailFilename), xml.toString()); + + let link = 'http://vimperator.kurinton.net/' + detailFilename; + let alink = AUTHORS[info.author]; + let data = plugin.filter(function($_) /name|description|author/.test($_[0])); + xml_index +=
Name | +Description | +Author | +