aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoranekos2011-07-14 05:13:14 +0900
committeranekos2011-07-14 05:13:14 +0900
commita67953c19a8b99cb5dd0753a6874c91b31ea5f6d (patch)
tree9366622281ddb1a078f5a3822d803625ff4bf93d
parente39c4d7eb79a0ea6fdbdd8bf44923b30f266234a (diff)
downloadvimperator-plugins-a67953c19a8b99cb5dd0753a6874c91b31ea5f6d.tar.bz2
エラー処理
-rw-r--r--google-plus-commando.js34
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,