diff options
author | Mitsugu Oyama | 2011-07-01 00:28:14 -0700 |
---|---|---|
committer | Mitsugu Oyama | 2011-07-01 00:28:14 -0700 |
commit | be04956db7bf3d84a5bdfda9ea5cc6c17652ac5b (patch) | |
tree | a1017ad70bfdcf361679ffdf6d2776c3bea3d28c /pypi.js | |
parent | f8446a1f62e2e608460f386702c77b2fff9c5fc7 (diff) | |
parent | e5dd2ce4074e5a5cb0c3a3b754fd7995891516e4 (diff) | |
download | vimperator-plugins-be04956db7bf3d84a5bdfda9ea5cc6c17652ac5b.tar.bz2 |
Merge pull request #11 from gawel/master
pypi command
Diffstat (limited to 'pypi.js')
-rw-r--r-- | pypi.js | 81 |
1 files changed, 81 insertions, 0 deletions
@@ -0,0 +1,81 @@ +var PLUGIN_INFO = +<VimperatorPlugin> +<name>pypi</name> +<description>Add a pypi command</description> +<author mail="gael@gawel.org" homepage="http://www.gawel.org">gawel</author> +<version>1.1</version> +<license>MPL 1.1/GPL 2.0/LGPL 2.1</license> +<minVersion>2.0pre</minVersion> +<maxVersion>2.0</maxVersion> +<updateURL>https://github.com/gawel/vimperator-plugins/raw/master/pypi.js</updateURL> +<detail lang="en"><![CDATA[ + +== Command == + +:pypi {package or term} + +]]></detail> +</VimperatorPlugin>; + +liberator.plugins.pypi = (function(){ + +var Pypi = { + packages: [], + init_packages: function() { + var req = new XMLHttpRequest(); + req.onreadystatechange = function() { + if (req.readyState == 4) { + Pypi.packages = []; + var lines = req.responseText.split('\n'); + for (var i=0; i<lines.length; i++) { + var line = lines[i]; + if (/^<a/.exec(line)) + Pypi.packages.push(line.split('>')[1].split('<')[0]); + } + liberator.echo('Pypi packages list is up to date'); + } + } + req.open("GET", "http://pypi.python.org/simple/", false); + req.send(null); + setTimeout(Pypi.init_packages, 1000*60*60*24); + } +} + +setTimeout(Pypi.init_packages, 1000); + +commands.addUserCommand(["pypi"], "pypi search", + function(args){ + var doc = window.content.document; + if (!args.length) { + doc.location.href = 'http://pypi.python.org/pypi'; + } + var filter = args[0]; + var packages = plugins.pypi.packages; + for (var i=0; i<packages.length; i++) { + if (filter.toLowerCase() == packages[i].toLowerCase()) { + doc.location.href = 'http://pypi.python.org/pypi/'+packages[i]; + return; + } + } + doc.location.href = 'http://pypi.python.org/pypi?%3Aaction=search&submit=search&term='+filter; + }, { + completer: function(context, args){ + if (context.filter.length < 1) return; + if (!plugins.pypi.packages.length) { + plugins.pypi.init_packages(); + } + var packages = plugins.pypi.packages; + var results = []; + for (var i=0; i<packages.length; i++) { + if (new RegExp('^'+context.filter.replace('.', '\\.').toLowerCase()).exec(packages[i].toLowerCase())) { + results.push([packages[i], '']); + } + } + return {items:results, start:0}; + } + }, true); + +return Pypi; +})(); + +// vim: sw=4 ts=4 et fdm=marker: |