// // tada.js // // LICENSE: {{{ // Copyright (c) 2009 snaka // // Distributable under the terms of an MIT-style license. // http://www.opensource.jp/licenses/mit-license.html // }}} // PLUGIN INFO: {{{ var PLUGIN_INFO = {NAME} Show ToDo items in commandline buffer. Also add item to your Ta-da list. コマンドラインバッファからTa-Da list のToDo一覧を参照したり、からToDo項目を追加したりします。 2.0pre 2.2pre http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/tada.js snaka MIT style license 0.10.0 _libly.js ; // }}} liberator.plugins.tada = (function(){ // COMMAND ////////////////////////////////////////////////////////////{{{ commands.addUserCommand( ["tada"], "Show / Add ToDo items to Ta-Da list. (:tada [LISTNAME] [SUBJECT])", function(args) { liberator.echo("Please wait ..."); let action = parseAction(args, args["-open"]); action(); }, { completer: tadaListCompleter, argCount: "*", options: [ [["-open", "-o"], commands.OPTION_NOARG], ], literal: true }, true // for DEVELOP ); function parseAction(args, isOpen) { let listId; let defaultListIdName = getDefaultListIdName(); let defaultListURI = getURI() + defaultListIdName[0]; switch (args.length) { case 0: // Open default ta
/*
 * ステータスバーにはてブ数を表示
 *
 * Usage:
 *   let g:ego_counter_uri = 'Your site URI'
 *     or
 *   js liberator.globalVariables.ego_counter_hatenaId = 'Your site URI'
 *
 *   ex.
 *   let g:ego_counter_uri = 'http://d.hatena.ne.jp/snaka72'
 *
 */
(function() {

  const MY_SITE = liberator.globalVariables.ego_counter_uri || '';
  let update = function(color) {
    myHatebu.setAttribute(
      'src',
      <>http://b.hatena.ne.jp/bc/{color}/{MY_SITE}/</>.toSource()
    );
  };

  let rotate = (function() {
    var current;
    var colors = "bl de dg gr pr br rd sp pk te lg lb wh li or".split(" ");

    return function(next) {
      if (!next) return current;

      current = colors.shift();
      colors.push(current);
      return current;
    };
  })();

  let myHatebu = document.getElementById('status-bar')
                 .insertBefore(document.createElement('statusbarpanel'),
                               document.getElementById('security-button')
                               .nextSibling);
  myHatebu.setAttribute('id', 'my-hatebu-count-icon');
  myHatebu.setAttribute('class', 'statusbarpanel-iconic');
  update(rotate(true));

  setInterval(function() update(rotate(true)), 1000 * 60 * 10);
  myHatebu.addEventListener("click", function(event){
    update(rotate(true));
  }, false);

})()
s', function(data) { liberator.echo("Send Ta-Da list '" + listName + "' to your email address."); }); req.addEventListener('onFailure', function(data) { liberator.echoerr("EMAIL SENDING ERROR."); liberator.log(data.responseText); }); req.post(); } function doneItem(listId, itemId) { let endpoint = getURI() + listId + "/items/" + itemId; liberator.dump("endpoint: " + endpoint); var req = new libly.Request(endpoint, null, { postBody: toQuery({ "_method" : "put", "item[completed]" : "1", }) } ); req.addEventListener('onSuccess', function(data) { liberator.echo("Done: " + itemId); }); req.addEventListener('onFailure', function(data) { liberator.echoerr("Done item failed."); liberator.log(data.responseText); }); req.post(); } // Utilities function $s(obj) util.objectToString(obj); function $g(str) liberator.globalVariables[str]; function $LXs(a,b) libly.$U.getNodesFromXPath(a, b); function $LX(a,b) libly.$U.getFirstNodeFromXPath(a, b); function toQuery(source) [encodeURIComponent(i) + "=" + encodeURIComponent(source[i]) for (i in source) ].join('&'); // }}} // API ////////////////////////////////////////////////////////////////{{{ return { getLists: getLists, getTodoItems: getTodoItems, }; // }}} })(); // vim: sw=2 ts=2 et si fdm=marker: