aboutsummaryrefslogtreecommitdiffstats
path: root/sbmcommentsviewer.js
diff options
context:
space:
mode:
Diffstat (limited to 'sbmcommentsviewer.js')
-rw-r--r--sbmcommentsviewer.js53
1 files changed, 48 insertions, 5 deletions
diff --git a/sbmcommentsviewer.js b/sbmcommentsviewer.js
index fd18c53..c7d10f6 100644
--- a/sbmcommentsviewer.js
+++ b/sbmcommentsviewer.js
@@ -3,7 +3,7 @@ var PLUGIN_INFO =
<name>SBM Comments Viewer</name>
<description>List show Social Bookmark Comments</description>
<description lang="ja">ソーシャル・ブックマーク・コメントを表示します</description>
- <version>0.2.1</version>
+ <version>0.2.2</version>
<minVersion>2.0pre</minVersion>
<maxVersion>3.0</maxVersion>
<updateURL>https://github.com/vimpr/vimperator-plugins/raw/master/sbmcommentsviewer.js</updateURL>
@@ -32,6 +32,7 @@ viewSBMComments [url] [options]
- d : Delicious
- l : livedoor clip
- z : Buzzurl
+- t : Topsy
- XXX:今後増やしていきたい
>||
@@ -125,8 +126,21 @@ function SBMEntry(id, timestamp, comment, tags, extra){ //{{{
} //}}}
SBMEntry.prototype = { //{{{
toHTML: function(format){
- function makeLink(str)
- XMLList(str.replace(/(?:https?:\/\/|mailto:)\S+/g, '<a href="$&" highlight="URL">$&</a>'));
+ function makeLink(str, withLink){
+ let s = str;
+ let result = XMLList();
+ while (s.length > 0) {
+ let m = s.match(/(?:https?:\/\/|mailto:)\S+/);
+ if (m) {
+ result += <>{s.slice(0, m.index)}<a href={withLink ? m[0] : '#'} highlight="URL">{m[0]}</a></>;
+ s = s.slice(m.index + m[0].length);
+ } else {
+ result += <>{s}</>;
+ break;
+ }
+ }
+ return result;
+ }
var xml = <tr/>;
var self = this;
@@ -138,7 +152,8 @@ SBMEntry.prototype = { //{{{
</td>;
break;
case 'timestamp':
- xml.* += <td class="liberator-sbmcommentsviewer-timestamp">{self.formatDate()}</td>; break;
+ xml.* += <td class="liberator-sbmcommentsviewer-timestamp">{self.formatDate()}</td>;
+ break;
case 'tags':
xml.* += <td class="liberator-sbmcommentsviewer-tags">{self.tags.join(',')}</td>; break;
case 'comment':
@@ -338,6 +353,33 @@ var SBM = { //{{{
liberator.log('Faild: Buzzurl');
}
}
+ }, //}}}
+ topsy: { //{{{
+ getURL: function(url){
+ var urlPrefix = 'http://otter.topsy.com/trackbacks.json?perpage=50&infonly=0&tracktype=tweet&url=';
+ return urlPrefix + encodeURIComponent(url.replace(/%23/g,'#'));
+ },
+ parser: function(xhr){
+ var json = jsonDecode(xhr.responseText);
+ if (json && json.response){
+ let c = new SBMContainer('t', json.response.trackback_total, {
+ faviconURL: 'http://topsy.com/favicon.ico',
+ pageURL: json.response.topsy_trackback_url
+ });
+ json.response.list.forEach(function(entry){
+ c.add( entry.author.nick, new Date(entry.date*1000),
+ entry.content, null,
+ {
+ userIcon: entry.author.photo_url,
+ link: entry.author.topsy_author_url
+ }
+ );
+ });
+ return c;
+ } else {
+ liberator.echo('Faild: Topsy');
+ }
+ }
} //}}}
}; //}}}
@@ -423,7 +465,8 @@ var manager = {
h: 'hatena',
d: 'delicious',
l: 'livedoorclip',
- z: 'buzzurl'
+ z: 'buzzurl',
+ t: 'topsy'
},
format: {
id: 'ID',