Add minimized CSS and Javascript files of SHJS
(
http://shjs.sourceforge.net/) required for highlighting C code.
Call sh_highlightDocument() in onload event handler.
Since the new files are generated by a minifier tool, exclude
them from being checked by syntax-check for proper newlines at EOF.
Signed-off-by: Claudio Bley <cbley(a)av-test.de>
---
cfg.mk | 2 +-
docs/newapi.xsl | 2 +-
docs/page.xsl | 5 ++++-
docs/sh_c.min.js | 1 +
docs/sh_emacs.min.css | 1 +
docs/sh_main.min.js | 4 ++++
6 files changed, 12 insertions(+), 3 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
diff --git a/cfg.mk b/cfg.mk
index 2dfde01..a87bba4 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -798,7 +798,7 @@ exclude_file_name_regexp--sc_prohibit_close = \
(\.p[yl]$$|^docs/|^(src/util/virfile\.c|src/libvirt\.c)$$)
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
- (^tests/(qemuhelp|nodeinfo)data/|\.(gif|ico|png|diff)$$)
+ (^tests/(qemuhelp|nodeinfo)data/|^docs/sh_[^/]*\.min\.[^/.]*$$|\.(gif|ico|png|diff)$$)
_src2=src/(util/vircommand|libvirt|lxc/lxc_controller|locking/lock_daemon)
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
diff --git a/docs/newapi.xsl b/docs/newapi.xsl
index 29ed94f..a975ba8 100644
--- a/docs/newapi.xsl
+++ b/docs/newapi.xsl
@@ -115,7 +115,7 @@
</xsl:call-template>
</xsl:when>
<xsl:when test="starts-with($block, ' ')">
- <pre class="code"><xsl:for-each
select="str:tokenize($block, '
')">
+ <pre class="code sh_c"><xsl:for-each
select="str:tokenize($block, '
')">
<xsl:value-of select="substring(., 3)"/>
<xsl:if test="position() != last()">
<xsl:text>
</xsl:text>
diff --git a/docs/page.xsl b/docs/page.xsl
index bc8ea2a..bf7c446 100644
--- a/docs/page.xsl
+++ 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();">
<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
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
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 */
+
+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
--
1.7.9.5