about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--Makefile3
-rw-r--r--javascript.h2
-rw-r--r--js-merge-helper.pl43
3 files changed, 29 insertions, 19 deletions
diff --git a/Makefile b/Makefile
index 4ff3cc7..873fe04 100644
--- a/Makefile
+++ b/Makefile
@@ -23,7 +23,8 @@ MANDIR= ${PREFIX}/man/cat
 CLEANFILES += javascript.h
 
 javascript.h: hinting.js input-focus.js
-	perl js-merge-helper.pl
+	perl ${.CURDIR}/js-merge-helper.pl ${.CURDIR}/hinting.js \
+	    ${.CURDIR}/input-focus.js >  ${.CURDIR}/javascript.h
 
 
 #tables.h: ${.CURDIR}/../tables ${.CURDIR}/../parsedb.pl
diff --git a/javascript.h b/javascript.h
deleted file mode 100644
index 45cce4d..0000000
--- a/javascript.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#define JS_SETUP_HINTS "/*(c)2009 by Leon Winter(c)2009 by Hannes Schueller see LICENSE file*/ function vimprobable_clearfocus(){if(document.activeElement&&document.activeElement.blur)document.activeElement.blur();}function vimprobable_show_hints(inputText){if(document.getElementsByTagName(\"body\")[0]!==null&&typeof(document.getElementsByTagName(\"body\")[0])==\"object\"){var height=window.innerHeight;var width=window.innerWidth;var scrollX=document.defaultView.scrollX;var scrollY=document.defaultView.scrollY;var hinttags;if(typeof(inputText)==\"undefined\"||inputText==\"\"){hinttags=\"//*[@onclick or @onmouseover or @onmousedown or @onmouseup or @oncommand or @class='lk' or @role='link' or @href]|//input[not(@type='hidden')]|//a|//area|//iframe|//textarea|//button|//select\";}else{hinttags=\"//*[(@onclick or @onmouseover or @onmousedown or @onmouseup or @oncommand or @class='lk' or @role='link' or @href)and contains(.,'\"+inputText+\"')]|//input[not(@type='hidden')and contains(.,'\"+inputText+\"')]|//a[contains(.,'\"+inputText+\"')]|//area[contains(.,'\"+inputText+\"')]|//iframe[contains(@name,'\"+inputText+\"')]|//textarea[contains(.,'\"+inputText+\"')]|//button[contains(@value,'\"+inputText+\"')]|//select[contains(.,'\"+inputText+\"')]\";}var r=document.evaluate(hinttags,document,function(p){return 'http://www.w3.org/1999/xhtml';},XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);div=document.createElement(\"div\");vimprobable_j=0;var i;vimprobable_a=[];vimprobable_colors=[];vimprobable_backgrounds=[];for(i=0;i<r.snapshotLength;i++){var elem=r.snapshotItem(i);rect=elem.getBoundingClientRect();if(!rect||rect.top>height||rect.bottom<0||rect.left>width||rect.right<0||!(elem.getClientRects()[0]))continue;var computedStyle=document.defaultView.getComputedStyle(elem,null);if(computedStyle.getPropertyValue(\"visibility\")!=\"visible\"||computedStyle.getPropertyValue(\"display\")==\"none\")continue;var leftpos=Math.max((rect.left+scrollX),scrollX);var toppos=Math.max((rect.top+scrollY),scrollY);vimprobable_a.push(elem);var hint=document.createElement(\"span\");hint.setAttribute(\"class\",\"hinting_mode_hint\");hint.setAttribute(\"id\",\"vimprobablehint\"+vimprobable_j);hint.style.position=\"absolute\";hint.style.left=leftpos+\"px\";hint.style.top=toppos+\"px\";hint.style.background=\"red\";hint.style.color=\"#fff\";hint.style.font=\"bold 10px monospace\";hint.style.zIndex=\"99\";var text=document.createTextNode(vimprobable_j+1);hint.appendChild(text);div.appendChild(hint);vimprobable_colors[vimprobable_j]=elem.style.color;vimprobable_backgrounds[vimprobable_j]=elem.style.background;elem.style.color=\"#000\";elem.style.background=\"#ff0\";vimprobable_j++;}i=0;while(typeof(vimprobable_a[i])!=\"undefined\"){vimprobable_a[i].className+=\" hinting_mode_hint\";i++;}document.getElementsByTagName(\"body\")[0].appendChild(div);vimprobable_clearfocus();vimprobable_h=null;if(i==1){return vimprobable_fire(1);}return \"found;\"+i;}}function vimprobable_fire(n){if(typeof(vimprobable_a[n-1])!=\"undefined\"){el=vimprobable_a[n-1];tag=el.nodeName.toLowerCase();vimprobable_clear();if(tag==\"iframe\"||tag==\"frame\"||tag==\"textarea\"||tag==\"input\"&&(el.type==\"text\"||el.type==\"password\"||el.type==\"checkbox\"||el.type==\"radio\")||tag==\"select\"){el.focus();if(tag==\"textarea\"||tag==\"input\")console.log('insertmode_on');}else{if(el.onclick){var evObj=document.createEvent('MouseEvents');evObj.initMouseEvent('click',true,true,window,1,1,1,0,0,0,0,0,0,0,null);el.dispatchEvent(evObj);}else if(el.href){if(el.href.match(/^javascript:/)){var evObj=document.createEvent('MouseEvents');evObj.initMouseEvent('click',true,true,window,1,1,1,0,0,0,0,0,0,0,null);el.dispatchEvent(evObj);}else{return \"open;\"+el.href;}}else{var evObj=document.createEvent('MouseEvents');evObj.initMouseEvent('click',true,true,window,1,1,1,0,0,0,0,0,0,0,null);el.dispatchEvent(evObj);}}}}function vimprobable_cleanup(){for(e in vimprobable_a){if(typeof(vimprobable_a[e].className)!=\"undefined\"){vimprobable_a[e].className=vimprobable_a[e].className.replace(/hinting_mode_hint/,'');vimprobable_a[e].style.color=vimprobable_colors[e];vimprobable_a[e].style.background=vimprobable_backgrounds[e];}}div.parentNode.removeChild(div);window.onkeyup=null;}function vimprobable_clear(){vimprobable_cleanup();console.log(\"hintmode_off\")}function vimprobable_update_hints(n){if(vimprobable_h!=null){vimprobable_h.className=vimprobable_h.className.replace(\"_focus\",\"\");vimprobable_h.style.background=\"#ff0\";}if(vimprobable_j-1<n*10&&typeof(vimprobable_a[n-1])!=\"undefined\"){return \"fire;\"+n;}else{if(typeof(vimprobable_a[n-1])!=\"undefined\"){(vimprobable_h=vimprobable_a[n-1]).className=vimprobable_a[n-1].className.replace(\"hinting_mode_hint\",\"hinting_mode_hint_focus\");vimprobable_h.style.background=\"#8f0\";}}}function vimprobable_focus_input(){if(document.getElementsByTagName(\"body\")[0]!==null&&typeof(document.getElementsByTagName(\"body\")[0])==\"object\"){var hinttags=\"//input[@type='text']|//input[@type='password']|//textarea\";var r=document.evaluate(hinttags,document,function(p){return 'http://www.w3.org/1999/xhtml';},XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);var i;var j=0;var first=null;for(i=0;i<r.snapshotLength;i++){var elem=r.snapshotItem(i);if(i==0){first=elem;}if(j==1){elem.focus();var tag=elem.nodeName.toLowerCase();if(tag==\"textarea\"||tag==\"input\")console.log('insertmode_on');break;}else{if(elem==document.activeElement)j=1;}}if(j==0){if(first!==null){first.focus();var tag=elem.nodeName.toLowerCase();if(tag==\"textarea\"||tag==\"input\")console.log('insertmode_on');}}}}"
-#define JS_SETUP_INPUT_FOCUS "/*(c)2009 by Leon Winter(c)2009 by Hannes Schueller see LICENSE file*/ function vimprobable_v(e,y){t=e.nodeName.toLowerCase();if((t=='input'&&/^(text|password|checkbox|radio)$/.test(e.type))||/^(select|textarea)$/.test(t)||e.contentEditable=='true')console.log('insertmode_'+(y=='focus'?'on':'off'));}if(document.activeElement)vimprobable_v(document.activeElement,'focus');vimprobable_m=['focus','blur'];if(document.getElementsByTagName(\"body\")[0]!==null&&typeof(document.getElementsByTagName(\"body\")[0])==\"object\"){for(i in vimprobable_m)document.getElementsByTagName('body')[0].addEventListener(vimprobable_m[i],function(x){vimprobable_v(x.target,x.type);},true);}self.onunload=function(){vimprobable_v(document.activeElement,'');};"
diff --git a/js-merge-helper.pl b/js-merge-helper.pl
index 050d871..35a72ed 100644
--- a/js-merge-helper.pl
+++ b/js-merge-helper.pl
@@ -13,21 +13,32 @@ sub escape_c_string {
 	return $_
 }
 
-open(JSFILE, "hinting.js") or die "Failed to open file: $!";
-$_ = do { local $/; <JSFILE> };
-close(JSFILE);
-my $js_hints = escape_c_string($_);
-
-open(JSFILE, "input-focus.js") or die "Failed to open file: $!";
-$_ = do { local $/; <JSFILE> };
-close(JSFILE);
-my $js_input = escape_c_string($_);
-
-open(HFILE, ">javascript.h") or die "Failed to open javascript.h: $!";
-print HFILE "#define JS_SETUP_HINTS ";
-printf  HFILE "\"%s\"\n", $js_hints;
-print HFILE "#define JS_SETUP_INPUT_FOCUS ";
-printf  HFILE "\"%s\"\n", $js_input;
-close(HFILE);
+if (scalar @ARGV < 1) {
+	print "usage: js-merge-helper.pl jsfile ... \n";
+	exit 1;
+}
+
+my ($jsfile, $define, $js);
+
+while (@ARGV) {
+
+	$jsfile = shift @ARGV;
+	my @fn = split /\//, $jsfile;
+	my $fn = pop @fn;
+	$fn =~ /^(.*)\.js$/;
+	
+	$define = "JS_".uc($1);
+	$define =~ s/\-/_/;
+
+	open(JSFILE, $jsfile) or die "Failed to open file: $!";
+	$_ = do { local $/; <JSFILE> };
+	close(JSFILE);
+
+	$js = escape_c_string($_);
+
+	print "#define $define ";
+	printf "\"%s\"\n", $js;
+
+}
 
 exit;