From f5e8cb97deccbbca25f948878f9e5f3985324e5b Mon Sep 17 00:00:00 2001 From: hogelog Date: Mon, 2 Feb 2009 13:02:07 +0000 Subject: add xpath_hint.js * add "get element's XPath" hint mode git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@29440 d0d07461-0603-4401-acd4-de1884942a52 --- xpath_hint.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 xpath_hint.js (limited to 'xpath_hint.js') diff --git a/xpath_hint.js b/xpath_hint.js new file mode 100644 index 0000000..febba50 --- /dev/null +++ b/xpath_hint.js @@ -0,0 +1,63 @@ +/*** BEGIN LICENSE BLOCK {{{ + Copyright (c) 2009 hogelog + + distributable under the terms of an MIT-style license. + http://www.opensource.jp/licenses/mit-license.html +}}} END LICENSE BLOCK ***/ +// PLUGIN_INFO//{{{ +var PLUGIN_INFO = + + {NAME} + UUID generator + hogelog + 0.1.0 + 2.0pre + 2.0pre + http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/xpath_hint.js + MIT + +; +//}}} + +(function(){ +const DEFAULT_MAP = "x"; + +let xpathHintMap = liberator.globalVariables.xpath_hint_map || DEFAULT_MAP; + +let xh = plugins.xpath_hint = { + getElementXPath: function(elem) + { + if (elem.nodeType == 9) { // DOCUMENT_NODE = 9 + return ""; + } + if (elem.hasAttribute("id")) { + return '//*[@id="'+elem.getAttribute("id")+'"]'; + } + let name = elem.tagName.toLowerCase(); + let parent = elem.parentNode; + let path = arguments.callee(parent)+"/"+name; + let children = Array.filter(parent.childNodes, function(e) e.nodeName == elem.nodeName && e.nodeType == elem.nodeType); + + if (children.length != 1 && children[0]!=elem) { + path += "["+(children.indexOf(elem)+1)+"]"; + } + return path; + }, + addMode: function(mode, prompt, action, tags) + { + hints.addMode(mode, prompt, + function(e) action(xh.getElementXPath(e)), tags); + }, +}; +xh.addMode(xpathHintMap, "copy xpath", + function(xpath) util.copyToClipboard(xpath, true), + function() "//*"); + +})(); +// vim: set fdm=marker sw=4 ts=4 et: -- cgit v1.2.3