On 01/22/2013 07:31 AM, Claudio Bley wrote:
Add minimized CSS and Javascript files of SHJS
(
http://shjs.sourceforge.net/) required for highlighting C code.
Call sh_highlightDocument() in onload event handler.
Signed-off-by: Claudio Bley <cbley(a)av-test.de>
---
docs/newapi.xsl | 2 +-
docs/page.xsl | 5 ++++-
docs/sh_c.min.js | 1 +
Just one line? Eww. Can we add some whitespace to make it legible?
docs/sh_emacs.min.css | 1 +
Likewise.
docs/sh_main.min.js | 4 ++++
5 files changed, 11 insertions(+), 2 deletions(-)
create mode 100644 docs/sh_c.min.js
create mode 100644 docs/sh_emacs.min.css
create mode 100644 docs/sh_main.min.js
Are these .js files used only during generation of the html pages (that
is, only important for the person creating the rpm), or are they
intended to be installed alongside the html files (all end users end up
downloading them)? At any rate, this patch is missing patches to
docs/Makefile.am, so I can't reproduce the build from a 'make dist' tarball.
+++ b/docs/page.xsl
@@ -136,10 +136,13 @@
<head>
<link rel="stylesheet" type="text/css"
href="{$href_base}main.css"/>
<link rel="SHORTCUT ICON"
href="{$href_base}32favicon.png"/>
+ <script type="text/javascript"
src="{$href_base}sh_main.min.js"/>
+ <script type="text/javascript"
src="{$href_base}sh_c.min.js"/>
+ <link rel="stylesheet" type="text/css"
href="{$href_base}sh_emacs.min.css"/>
<title>libvirt: <xsl:value-of
select="html/body/h1"/></title>
<meta name="description" content="libvirt, virtualization,
virtualization API"/>
</head>
- <body>
+ <body onload="sh_highlightDocument();">
Oh, it looks like you are actually installing the .js files alongside
the .html, and that end users would be required to run javascript to see
the benefits. Have you tested that things still render nicely when
scripts are disabled in the user's browser? Can we avoid user-side
scripting, and instead get the coloration done at 'make dist' time?
<div id="header">
<div id="headerLogo"/>
<div id="headerSearch">
diff --git a/docs/sh_c.min.js b/docs/sh_c.min.js
new file mode 100644
index 0000000..fd91118
--- /dev/null
+++ b/docs/sh_c.min.js
@@ -0,0 +1 @@
+if(!this.sh_languages){this.sh_languages={}}sh_languages.c=[[[/\/\/\//g,"sh_comment",1],[/\/\//g,"sh_comment",7],[/\/\*\*/g,"sh_comment",8],[/\/\*/g,"sh_comment",9],[/(\bstruct)([
\t]+)([A-Za-z0-9_]+)/g,["sh_keyword","sh_normal","sh_classname"],-1],[/^[
\t]*#(?:[ \t]*include)/g,"sh_preproc",10,1],[/^[ \t]*#(?:[
\t]*[A-Za-z0-9_]*)/g,"sh_preproc",-1],[/\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,"sh_number",-1],[/"/g,"sh_string",13],[/'/g,"sh_string",14],[/\b(?:__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import|__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall|__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto|break|case|catch|cdecl|const|continue|default|do|else|enum|extern|for|goto|if|pascal|register|return|sizeof|static|struct|switch|typedef|union|volatile|while)\b/g,"sh_keyword",-1],[/\b(?:bool|char|double|float|int|long|short|signed|unsigned|void|wchar_
t)\b/g,"sh_type",-1],[/~|!|%|\^|\*|\(|\)|-|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\|/g,"sh_symbol",-1],[/\{|\}/g,"sh_cbracket",-1],[/(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[
\t]*\()/g,"sh_function",-1],[/([A-Za-z](?:[^`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\s]|[_])*)((?:<.*>)?)(\s+(?=[*&]*[A-Za-z][^`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\s]*\s*[`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\[\]]+))/g,["sh_usertype","sh_usertype","sh_normal"],-1]],[[/$/g,null,-2],[/(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,"sh_url",-1],[/<\?xml/g,"sh_preproc",2,1],[/<!DOCTYPE/g,"sh_preproc",4,1],[/<!--/g,"sh_comment",5],[/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,"sh_keyword",-1],[/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,"sh_keyword",6,1],[/&(?:[A-Za-z0-9]+);/g,"sh_preproc",-1],[/<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,"sh_keyword",-1],[/<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,"sh_keyword",6,1],[/@[A-Za-z]+/g,"sh_type",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,"sh
_todo",-1]],[[/\?>/g,"sh_preproc",-2],[/([^=" \t>]+)([
\t]*)(=?)/g,["sh_type","sh_normal","sh_symbol"],-1],[/"/g,"sh_string",3]],[[/\\(?:\\|")/g,null,-1],[/"/g,"sh_string",-2]],[[/>/g,"sh_preproc",-2],[/([^="
\t>]+)([
\t]*)(=?)/g,["sh_type","sh_normal","sh_symbol"],-1],[/"/g,"sh_string",3]],[[/-->/g,"sh_comment",-2],[/<!--/g,"sh_comment",5]],[[/(?:\/)?>/g,"sh_keyword",-2],[/([^="
\t>]+)([
\t]*)(=?)/g,["sh_type","sh_normal","sh_symbol"],-1],[/"/g,"sh_string",3]],[[/$/g,null,-2]],[[/\*\//g,"sh_comment",-2],[/(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,"sh_url",-1],[/<\?xml/g,"sh_preproc",2,1],[/<!DOCTYPE/g,"sh_preproc",4,1],[/<!--/g,"sh_comment",5],[/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,"sh_keyword",-1],[/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,"sh_keyword",6,1],[/&(?:[A-Za-z0-9]+);/g,"sh_preproc",-1],[/<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,"sh_keyword",-1],[/<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,"sh_keyword"
,6,1],[/@[A-Za-z]+/g,"sh_type",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,"sh_todo",-1]],[[/\*\//g,"sh_comment",-2],[/(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,"sh_url",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,"sh_todo",-1]],[[/$/g,null,-2],[/</g,"sh_string",11],[/"/g,"sh_string",12],[/\/\/\//g,"sh_comment",1],[/\/\//g,"sh_comment",7],[/\/\*\*/g,"sh_comment",8],[/\/\*/g,"sh_comment",9]],[[/$/g,null,-2],[/>/g,"sh_string",-2]],[[/$/g,null,-2],[/\\(?:\\|")/g,null,-1],[/"/g,"sh_string",-2]],[[/"/g,"sh_string",-2],[/\\./g,"sh_specialchar",-1]],[[/'/g,"sh_string",-2],[/\\./g,"sh_specialchar",-1]]];
\ No newline at end of file
This file needs a newline at the end; and whitespace would help
immensely. Keeping it at 80 columns is a good goal. This patch
probably fails 'make syntax-check'. This file is missing a copyright
and license statement; this is particularly important if it is going to
be shipped alongside .html and used client-side.
diff --git a/docs/sh_emacs.min.css b/docs/sh_emacs.min.css
new file mode 100644
index 0000000..b7aed87
--- /dev/null
+++ b/docs/sh_emacs.min.css
@@ -0,0 +1 @@
+pre.sh_sourceCode{background-color:#fff;color:#000;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_keyword{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode
.sh_type{color:#208920;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_string{color:#bd8d8b;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_regexp{color:#bd8d8b;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_specialchar{color:#bd8d8b;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_comment{color:#ac2020;font-weight:normal;font-style:italic;}pre.sh_sourceCode
.sh_number{color:#000;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_preproc{color:#000;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_function{color:#000;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_url{color:#bd8d8b;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_date{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode .
sh_time{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode
.sh_file{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode
.sh_ip{color:#bd8d8b;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_name{color:#bd8d8b;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_variable{color:#00f;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_oldfile{color:#bd8d8b;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_newfile{color:#bd8d8b;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_difflines{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode
.sh_selector{color:#00f;font-weight:normal;font-style:normal;}pre.sh_sourceCode
.sh_property{color:#9c20ee;font-weight:bold;font-style:normal;}pre.sh_sourceCode
.sh_value{color:#bd8d8b;font-weight:normal;font-style:normal;}
\ No newline at end of file
Again, adding whitespace and a trailing newline would help, and it needs
a copyright and license. Also, since you are copying from somewhere
else, a comment about the original source would be appropriate.
diff --git a/docs/sh_main.min.js b/docs/sh_main.min.js
new file mode 100644
index 0000000..31d1ba0
--- /dev/null
+++ b/docs/sh_main.min.js
@@ -0,0 +1,4 @@
+/* Copyright (C) 2007, 2008 gnombat(a)users.sourceforge.net */
+/* License:
http://shjs.sourceforge.net/doc/gplv3.html */
This has a copyright, but the license is incomplete - the FSF states
that it is insufficient to point to a URL when using the GPLv3 (and a
non-canonical URL at that); while a URL is helpful, any package shipping
a GPLv3 file must also ship the full GPLv3 text as part of the package.
+
+if(!this.sh_languages){this.sh_languages={}}var sh_requests={};function
sh_isEmailAddress(a){if(/^mailto:/.test(a)){return false}return
a.indexOf("@")!==-1}function sh_setHref(b,c,d){var
a=d.substring(b[c-2].pos,b[c-1].pos);if(a.length>=2&&a.charAt(0)==="<"&&a.charAt(a.length-1)===">"){a=a.substr(1,a.length-2)}if(sh_isEmailAddress(a)){a="mailto:"+a}b[c-2].node.href=a}function
sh_konquerorExec(b){var a=[""];a.index=b.length;a.input=b;return a}function
sh_highlightString(B,o){if(/Konqueror/.test(navigator.userAgent)){if(!o.konquered){for(var
F=0;F<o.length;F++){for(var H=0;H<o[F].length;H++){var
G=o[F][H][0];if(G.source==="$"){G.exec=sh_konquerorExec}}}o.konquered=true}}var
N=document.createElement("a");var q=document.createElement("span");var
A=[];var j=0;var n=[];var C=0;var k=null;var x=function(i,a){var
p=i.length;if(p===0){return}if(!a){var Q=n.length;if(Q!==0){var
r=n[Q-1];if(!r[3]){a=r[1]}}}if(k!==a){if(k){A[j++]={pos:C};if(k==="sh_url"){sh_setHref(A,j,B)}}if(a){var
P;i
f(a==="sh_url"){P=N.cloneNode(false)}else{P=q.cloneNode(false)}P.className=a;A[j++]={node:P,pos:C}}}C+=p;k=a};var
t=/\r\n|\r|\n/g;t.lastIndex=0;var d=B.length;while(C<d){var v=C;var l;var w;var
h=t.exec(B);if(h===null){l=d;w=d}else{l=h.index;w=t.lastIndex}var g=B.substring(v,l);var
M=[];for(;;){var I=C-v;var D;var y=n.length;if(y===0){D=0}else{D=n[y-1][2]}var O=o[D];var
z=O.length;var m=M[D];if(!m){m=M[D]=[]}var E=null;var u=-1;for(var K=0;K<z;K++){var
f;if(K<m.length&&(m[K]===null||I<=m[K].index)){f=m[K]}else{var
c=O[K][0];c.lastIndex=I;f=c.exec(g);m[K]=f}if(f!==null&&(E===null||f.index<E.index)){E=f;u=K;if(f.index===I){break}}}if(E===null){x(g.substring(I),null);break}else{if(E.index>I){x(g.substring(I,E.index),null)}var
e=O[u];var J=e[1];var b;if(J instanceof Array){for(var
L=0;L<J.length;L++){b=E[L+1];x(b,J[L])}}else{b=E[0];x(b,J)}switch(e[2]){case
-1:break;case -2:n.pop();break;case
-3:n.length=0;break;default:n.push(e);break}}}if(k){A[j++]={pos:C};if(k==="sh_url"){sh_s
etHref(A,j,B)}k=null}C=w}return A}function sh_getClasses(d){var a=[];var
b=d.className;if(b&&b.length>0){var e=b.split(" ");for(var
c=0;c<e.length;c++){if(e[c].length>0){a.push(e[c])}}}return a}function
sh_addClass(c,a){var d=sh_getClasses(c);for(var
b=0;b<d.length;b++){if(a.toLowerCase()===d[b].toLowerCase()){return}}d.push(a);c.className=d.join("
")}function sh_extractTagsFromNodeList(c,a){var f=c.length;for(var
d=0;d<f;d++){var e=c.item(d);switch(e.nodeType){case
1:if(e.nodeName.toLowerCase()==="br"){var
b;if(/MSIE/.test(navigator.userAgent)){b="\r"}else{b="\n"}a.text.push(b);a.pos++}else{a.tags.push({node:e.cloneNode(false),pos:a.pos});sh_extractTagsFromNodeList(e.childNodes,a);a.tags.push({pos:a.pos})}break;case
3:case 4:a.text.push(e.data);a.pos+=e.length;break}}}function sh_extractTags(c,b){var
a={};a.text=[];a.tags=b;a.pos=0;sh_extractTagsFromNodeList(c.childNodes,a);return
a.text.join("")}function sh_mergeTags(d,f){var a=d.length;if(a===0){return f}var
c=f.length;if
(c===0){return d}var i=[];var e=0;var b=0;while(e<a&&b<c){var h=d[e];var
g=f[b];if(h.pos<=g.pos){i.push(h);e++}else{i.push(g);if(f[b+1].pos<=h.pos){b++;i.push(f[b]);b++}else{i.push({pos:h.pos});f[b]={node:g.node.cloneNode(false),pos:h.pos}}}}while(e<a){i.push(d[e]);e++}while(b<c){i.push(f[b]);b++}return
i}function sh_insertTags(k,h){var g=document;var l=document.createDocumentFragment();var
e=0;var d=k.length;var b=0;var j=h.length;var c=l;while(b<j||e<d){var i;var
a;if(e<d){i=k[e];a=i.pos}else{a=j}if(a<=b){if(i.node){var
f=i.node;c.appendChild(f);c=f}else{c=c.parentNode}e++}else{c.appendChild(g.createTextNode(h.substring(b,a)));b=a}}return
l}function sh_highlightElement(d,g){sh_addClass(d,"sh_sourceCode");var c=[];var
e=sh_extractTags(d,c);var f=sh_highlightString(e,g);var b=sh_mergeTags(c,f);var
a=sh_insertTags(b,e);while(d.hasChildNodes()){d.removeChild(d.firstChild)}d.appendChild(a)}function
sh_getXMLHttpRequest(){if(window.ActiveXObject){return new ActiveXObject("Msxml2
.XMLHTTP")}else{if(window.XMLHttpRequest){return new
XMLHttpRequest()}}throw"No XMLHttpRequest implementation available"}function
sh_load(language,element,prefix,suffix){if(language in
sh_requests){sh_requests[language].push(element);return}sh_requests[language]=[element];var
request=sh_getXMLHttpRequest();var
url=prefix+"sh_"+language+suffix;request.open("GET",url,true);request.onreadystatechange=function(){if(request.readyState===4){try{if(!request.status||request.status===200){eval(request.responseText);var
elements=sh_requests[language];for(var
i=0;i<elements.length;i++){sh_highlightElement(elements[i],sh_languages[language])}}else{throw"HTTP
error: status "+request.status}}finally{request=null}}};request.send(null)}function
sh_highlightDocument(g,k){var b=document.getElementsByTagName("pre");for(var
e=0;e<b.length;e++){var f=b.item(e);var a=sh_getClasses(f);for(var
c=0;c<a.length;c++){var
h=a[c].toLowerCase();if(h==="sh_sourcecode"){continue}if(h.substr(0,3)==="sh_"){va
r d=h.substring(3);if(d in
sh_languages){sh_highlightElement(f,sh_languages[d])}else{if(typeof(g)==="string"&&typeof(k)==="string"){sh_load(d,f,g,k)}else{throw'Found
<pre> element with class="'+h+'", but no such language
exists'}}break}}}};
\ No newline at end of file
What does upstream have against whitespace?
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org