diff options
| author | anekos | 2011-07-14 05:13:14 +0900 | 
|---|---|---|
| committer | anekos | 2011-07-14 05:13:14 +0900 | 
| commit | a67953c19a8b99cb5dd0753a6874c91b31ea5f6d (patch) | |
| tree | 9366622281ddb1a078f5a3822d803625ff4bf93d | |
| parent | e39c4d7eb79a0ea6fdbdd8bf44923b30f266234a (diff) | |
| download | vimperator-plugins-a67953c19a8b99cb5dd0753a6874c91b31ea5f6d.tar.bz2 | |
エラー処理
| -rw-r--r-- | google-plus-commando.js | 34 | 
1 files changed, 27 insertions, 7 deletions
diff --git a/google-plus-commando.js b/google-plus-commando.js index 39e8d72..fe6c2a3 100644 --- a/google-plus-commando.js +++ b/google-plus-commando.js @@ -55,8 +55,11 @@ let INFO =    function A (list)      Array.slice(list); -  function click (elem) +  function click (elem) { +    if (!elem) +      throw GPCError('elem is undefined');      buffer.followLink(elem, liberator.CURRENT_TAB); +  }    function withCount (command) {      return function (count) { @@ -67,6 +70,14 @@ let INFO =      };    } +  function GPCError (msg) { +    if (this instanceof GPCError) { +      this.toString = function () String(msg); +    } else { +      return new GPCError(msg); +    } +  } +    const Conf = (function () {      let gv = liberator.globalVariables; @@ -89,7 +100,7 @@ let INFO =    const Elements = {      get doc() content.document, -    get currentEntry () Entry(Elements.doc.querySelector('.a-f-oi-Ai')), +    get currentEntry () MakeElement(Entry, Elements.doc.querySelector('.a-f-oi-Ai')),      get postForm () Elements.doc.querySelector('#contentPane > div > div').nextSibling,      //get postEditor () Elements.postForm.querySelector('.editable').parentNode,      get postEditor () ( @@ -99,12 +110,17 @@ let INFO =      ),      get submitButton () Elements.postForm.querySelector('[role="button"]'),      get notification () Elements.doc.querySelector('#gbi1'), -    get viewer () Viewer(Elements.doc.querySelector('.' + Names.viewer)), -    get dialog () Dialog(Elements.doc.querySelector('.' + Names.dialog)) +    get viewer () MakeElement(Viewer, Elements.doc.querySelector('.' + Names.viewer)), +    get dialog () MakeElement(Dialog, Elements.doc.querySelector('.' + Names.dialog))    }; +  function MakeElement (constructor, root) { +    if (root) +      return constructor(root); +  } +    function Entry (root) { -    let self = root && { +    let self = {        get permlink () [          e          for ([, e] in Iterator(A(root.querySelectorAll('a')))) @@ -127,7 +143,7 @@ let INFO =        if (bs.length === 2)          return bs[n];      } -    let self = root && { +    let self = {        get buttons () A(root.querySelectorAll('[role="button"]')),        get submit () nButton(0),        get cancel () nButton(1) @@ -214,7 +230,11 @@ let INFO =        gv.split(/\s+/),        cmd + ' - Google plus Commando',        function (count) { -        func(count); +        try { +          func(count); +        } catch (e if (e instanceof GPCError)) { +          /* DO NOTHING */ +        }        },        {          count: func.length === 1,  | 
