aboutsummaryrefslogtreecommitdiffstats
path: root/_libly.js
diff options
context:
space:
mode:
authorsuVene2008-12-11 14:27:44 +0000
committersuVene2008-12-11 14:27:44 +0000
commitc7ab122c30ac83db4d18d77314c55ac4ec2301d5 (patch)
tree89a7240762729ec968d6b1126dee4fd7b7663271 /_libly.js
parentd30703bdb4841ff973b75535f944f66b732c802f (diff)
downloadvimperator-plugins-c7ab122c30ac83db4d18d77314c55ac4ec2301d5.tar.bz2
bugfix, etc.
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26416 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to '_libly.js')
-rw-r--r--_libly.js28
1 files changed, 17 insertions, 11 deletions
diff --git a/_libly.js b/_libly.js
index 6cbf1f7..d89a5b1 100644
--- a/_libly.js
+++ b/_libly.js
@@ -5,7 +5,7 @@ var PLUGIN_INFO =
<description>vimperator plugins library?</description>
<description lang="ja">適当なライブラリっぽいものたち。</description>
<author mail="suvene@zeromemory.info" homepage="http://zeromemory.sblo.jp/">suVene</author>
- <version>0.1.5</version>
+ <version>0.1.6</version>
<minVersion>1.2</minVersion>
<maxVersion>2.0pre</maxVersion>
<detail><![CDATA[
@@ -23,7 +23,7 @@ getLogger(prefix):
== Object Utility ==
extend(dst, src):
オブジェクトを拡張します。
-A(hash):
+A(iterable):
オブジェクトを配列にします。
bind(obj, func):
func に obj を bind します。
@@ -106,7 +106,11 @@ libly.$U = {//{{{
if (typeof iterable == 'string') return [iterable];
if (!(typeof iterable == 'function' && iterable == '[object NodeList]') &&
iterable.toArray) return iterable.toArray();
- for (let i = 0, len = iterable.length || 0; i < len; ret.push(iterable++));
+ if (typeof iterable.length != 'undefined') {
+ for (let i = 0, len = iterable.length; i < len; ret.push(iterable[i++]));
+ } else {
+ for each (let item in iterable) ret.push(item);
+ }
return ret;
},
bind: function(obj, func) {
@@ -199,10 +203,11 @@ libly.$U = {//{{{
},
// }}}
// HTML, XML, DOM, E4X {{{
- pathToURL: function(a) {
+ pathToURL: function(a, doc) {
+ if (!a) return '';
var path = (a.href || a.action || a.value || a);
if (/^https?:\/\//.test(path)) return path;
- var link = document.createElement('a');
+ var link = (doc || window.content.documtent).createElement('a');
link.href = path;
return link.href;
},
@@ -214,17 +219,18 @@ libly.$U = {//{{{
var ignoreTags = '(?:' + [].concat(tags).join('|') + ')';
return str.replace(new RegExp('<' + ignoreTags + '(?:[ \\t\\n\\r][^>]*|/)?>([\\S\\s]*?)<\/' + ignoreTags + '[ \\t\\r\\n]*>', 'ig'), '');
},
- createHTMLDocument: function(str) {
- var htmlFragment = document.implementation.createDocument(null, 'html', null);
- var range = document.createRange();
- range.setStartAfter(window.content.document.body);
+ createHTMLDocument: function(str, doc) {
+ doc = doc || window.content.document;
+ var htmlFragment = doc.implementation.createDocument(null, 'html', null);
+ var range = doc.createRange();
+ range.setStartAfter(doc.body);
htmlFragment.documentElement.appendChild(htmlFragment.importNode(range.createContextualFragment(str), true));
return htmlFragment;
},
getNodesFromXPath: function(xpath, doc, callback, obj) {
var ret = [];
if (!xpath || !doc) return ret;
- var node = doc || document;
+ var node = doc || window.content.document;
var nodesSnapshot = (node.ownerDocument || node).evaluate(xpath, node, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (let i = 0, l = nodesSnapshot.snapshotLength; i < l; i++) {
if (typeof callback == 'function') callback.call(obj, nodesSnapshot.snapshotItem(i), i);
@@ -394,7 +400,7 @@ libly.Response.prototype = {
this.htmlStripScriptFragmentstr = libly.$U.stripTags(this.htmlFragmentstr, ignoreTags);
this.doc = libly.$U.createHTMLDocument(this.htmlStripScriptFragmentstr, xmlns);
}
- if (!xpath) return this.doc;
+ if (!xpath) xpath = '//*';
return libly.$U.getNodesFromXPath(xpath, this.doc, callback);
}
};