Skip to content

Commit 5509719

Browse files
committed
Add the missing init code.
1 parent 52f59db commit 5509719

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

QuickJSON/quicklookjson.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "quicklookjson.h"
22

3-
#define HTML_HEADER "<!DOCTYPE html><html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'><style>body{font-family:sans-serif;}.prop{font-weight:700;}.null{color:red;}.bool,.num{color:blue;}.string{color:green;white-space:pre-wrap;}#error{-moz-border-radius:8px;border:1px solid #970000;background-color:#F7E8E8;margin:.5em;padding:.5em;}.errormessage{font-family:monospace;}#json{white-space:pre-wrap;font-family:monospace;font-size:1.1em;}h1{font-size:1.2em;}.callback{font-family:monospace;color:#A52A2A;}.folded > .content{display:none;}.folded.array:after{content:'[\\002026 ]';/* [...] */}.folded.obj:after{content:'{\\002026 }';/* {...} */}.folded{cursor:se-resize;}.unfolded{cursor:nw-resize;}</style><script>var JSONFormatter=(function(){var toString=Object.prototype.toString,re=/^[\\s\\u200B\\uFEFF]*([\\w$\\[\\]\\.]+)[\\s\\u200B\\uFEFF]*\\([\\s\\u200B\\uFEFF]*([\\[{][\\s\\S]*[\\]}])[\\s\\u200B\\uFEFF]*\\)([\\s\\u200B\\uFEFF;]*)$/m;function detectJSONP(s){var js=s,cb='',se='',match;if((match=re.exec(s))&&4===match.length){cb=match[1];js=match[2];se=match[3].replace(/[^;]+/g,'')}try{return wrapJSONP(JSON.parse(js),cb,se)}catch(e){return error(e,s)}}function wrapJSONP(val,callback,semicolon){var output='<span id=json>'+value(val,callback?'':null,callback&&'<br\\n/>')+'</span>';if(callback)output='<span class=callback>'+callback+'(</span>'+output+'<span class=callback>)'+semicolon+'</span>';return output}function isArray(obj){return'[object Array]'===toString.call(obj)}function span(value,className){return'<span class=\\''+className+'\\'>'+html(value)+'</span>'}function error(e,data){return'<div id=error>Error parsing JSON: '+e+'</div><h1>Content:</h1>'+'<span id=json>'+html(data)+'</span>'}function html(s,isAttribute){if(s==null)return'';s=(s+'').replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');return isAttribute?s.replace(/'/g,'&apos;'):s}var js=JSON.stringify('\\b\\f\\n\\r\\t').length===12?function saneJSEscaper(s,noQuotes){s=html(JSON.stringify(s).slice(1,-1));return noQuotes?s:'&quot;'+s+'&quot;'}:function insaneEscaper(s,noQuotes){var had={'\\b':'b','\\f':'f','\\r':'r','\\n':'n','\\t':'t'},ws;for(ws in had)if(-1===s.indexOf(ws))delete had[ws];s=JSON.stringify(s).slice(1,-1);for(ws in had)s=s.replace(new RegExp('\\\\\\\\u000'+(ws.charCodeAt().toString(16)),'ig'),'\\\\'+had[ws]);s=html(s);return noQuotes?s:'&quot;'+s+'&quot;'};function value(v,indent,nl){var output;switch(typeof v){case'boolean':output=span(v,'bool');break;case'number':output=span(v,'num');break;case'string':if(/^(\\w+):\\/\\/[^\\s]+$/i.test(v)){output='&quot;<a href=\\''+html(v,!!'attribute')+'\\'>'+js(v,1)+'</a>&quot;'}else{output='<span class=string>'+js(v)+'</span>'}break;case'object':if(null===v){output=span('null','null')}else{indent=indent==null?'':indent+'&nbsp; ';if(isArray(v)){output=array(v,indent,nl)}else{output=object(v,indent,nl)}}break}return output}function object(obj,indent,nl){var output='';for(var key in obj){if(output)output+='<br\\n/>'+indent+', ';output+='<span class=prop>'+js(key)+'</span>: '+value(obj[key],indent,'<br\\n/>')}if(!output)return'{}';return'<span class=\\'unfolded obj\\'><span class=content>'+(nl?nl+indent:'')+'{ '+output+'<br\\n/>'+indent+'}</span></span>'}function array(a,indent,nl){for(var i=0,output='';i<a.length;i++){if(output)output+='<br\\n/>'+indent+', ';output+=value(a[i],indent,'')}if(!output)return'[]';return'<span class=\\'unfolded array\\'><span class=content>'+(nl?nl+indent:'')+'[ '+output+'<br\\n/>'+indent+']</span></span>'}return function JSONFormatter(s,url){return detectJSONP(s,url)}})();function init(){var node=document.getElementById('json'),json=node.textContent;document.body.innerHTML=JSONFormatter(json);document.addEventListener('click',function folding(e){var elem=e.target,is;do{if(/^a$/i.test(elem.nodeName))return;is=elem.className||''}while(!/\\b(un)?folded /.test(is)&&(elem=elem.parentNode));if(elem)elem.className=/unfolded /.test(is)?is.replace('unfolded ','folded '):is.replace('folded ','unfolded ')},false)}</script></head><body onload='init()'><script id='json' type='application/json'>"
4-
#define HTML_FOOTER "</script></body></html>"
3+
#define HTML_HEADER "<!DOCTYPE html SYSTEM>\n<html>\n <head>\n <meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n <script>var JSONFormatter=(function(){var toString=Object.prototype.toString,re=/^[\\s\\u200B\\uFEFF]*([\\w$\\[\\]\\.]+)[\\s\\u200B\\uFEFF]*\\([\\s\\u200B\\uFEFF]*([\\[{][\\s\\S]*[\\]}])[\\s\\u200B\\uFEFF]*\\)([\\s\\u200B\\uFEFF;]*)$/m;function detectJSONP(s){var js=s,cb='',se='',match;if('string'!==typeof s)return wrapJSONP(s,cb,se);if((match=re.exec(s))&&4===match.length){cb=match[1];js=match[2];se=match[3].replace(/[^;]+/g,'');}try{return wrapJSONP(JSON.parse(js),cb,se);}catch(e){return error(e,s);}}function wrapJSONP(val,callback,semicolon){var output=span(value(val,callback?'':null,callback&&'<br\\n/>'),'json');if(callback)output=span(callback+'(','callback')+output+span(')'+semicolon,'callback');return output;}function isArray(obj){return'[object Array]'===toString.call(obj);}function span(html,className){return'<span class=\"\\''+className+'\\\">'+html+'</span>';}function error(e,data){return span('Error parsing JSON: '+e,'error')+'<h1>Content:</h1>'+span(html(data),'json');}function html(s,isAttribute){if(s==null)return'';s=(s+'').replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');return isAttribute?s.replace(/'/g,'&apos;'):s;}var js=JSON.stringify('\\b\\f\\n\\r\\t').length===12?function saneJSEscaper(s,noQuotes){s=html(JSON.stringify(s).slice(1,-1));return noQuotes?s:'&quot;'+s+'&quot;';}:function insaneEscaper(s,noQuotes){var had={'\\b':'b','\\f':'f','\\r':'r','\\n':'n','\\t':'t'},ws;for(ws in had)if(-1===s.indexOf(ws))delete had[ws];s=JSON.stringify(s).slice(1,-1);for(ws in had)s=s.replace(new RegExp('\\\\\\\\u000'+(ws.charCodeAt().toString(16)),'ig'),'\\\\'+had[ws]);s=html(s);return noQuotes?s:'&quot;'+s+'&quot;';};function value(v,indent,nl){var output;switch(typeof v){case'boolean':output=span(html(v),'bool');break;case'number':output=span(html(v),'num');break;case'string':if(/^(\\w+):\\/\\/[^\\s]+$/i.test(v)){output='&quot;<a href=\"\\''+html(v,!!'attribute')+'\\\">'+js(v,1)+'</a>&quot;';}else{output=span(js(v),'string');}break;case'object':if(null===v){output=span('null','null');}else{indent=indent==null?'':indent+'&nbsp; ';if(isArray(v)){output=array(v,indent,nl);}else{output=object(v,indent,nl);}}break;}return output;}function object(obj,indent,nl){var output='';for(var key in obj){if(output)output+='<br\\n/>'+indent+', ';output+=span(js(key),'prop')+': '+value(obj[key],indent,'<br\\n/>');}if(!output)return'{}';return'<span class=\\'unfolded obj\\'><span class=\"content\">'+(nl?nl+indent:'')+'{ '+output+'<br\\n/>'+indent+'}</span>';}function array(a,indent,nl){for(var i=0,output='';i<a.length;i++){if(output)output+='<br\\n/>'+indent+', ';output+=value(a[i],indent,'');}if(!output)return'[]';return'<span class=\\'unfolded array\\'><span class=\"content\">'+(nl?nl+indent:'')+'[ '+output+'<br\\n/>'+indent+']</span>';}function JSONFormatter(s){return detectJSONP(s);}JSONFormatter.init=function init(doc,css){doc=doc||document;var head=doc.getElementsByTagName('head')[0]||doc.documentElement,node=doc.getElementById('json-format')||doc.createElement('style'),sbar=' ';if(node.id)return;else node.id='json-format';node.textContent=css||('.prop{font-weight:700;}.null{color:red;}.bool,.num{color:blue;}.string{color:green;white-space:pre-wrap;}.error{-moz-border-radius:8px;border:1px solid #970000;background-color:#F7E8E8;margin:.5em;padding:.5em;}.json{white-space:pre-wrap;font-family:monospace;font-size:1.1em;}h1{font-size:1.2em;}.callback{font-family:monospace;color:#A52A2A;}.folded *{position:absolute;color:transparent;height:0;width:0;outline:5px solid red;white-space:normal;top:-100000cm;left:-100000cm;}*.folded.array:before{content:\"[\\\\002026 ]'+sbar+'\";/* [...] */}.folded.obj:before{content:\"{\\\\002026 }'+sbar+'\";/* {...} */}.folded{background:#FFF;}.folded:hover{background:rgba(255,192,203,0.5);}.folded{cursor:se-resize;}.unfolded.hovered{background:rgba(255,192,203,0.5);}.unfolded{cursor:nw-resize;}');head.appendChild(node);doc.addEventListener('click',function folding(e){var elem=e.target,is,is_json=elem;while(is_json&&is_json.className!='json')is_json=is_json.parentNode;if(!is_json)return;do{if(/^a$/i.test(elem.nodeName))return;is=elem.className||'';}while(!/\\b(un)?folded /.test(is)&&(elem=elem.parentNode));if(elem){elem.className=/unfolded /.test(is)?is.replace('unfolded ','folded '):is.replace('folded ','unfolded ');}},false);};return JSONFormatter;})();</script>\n <script>\n function init() {\n JSONFormatter.init();\n var json = document.getElementById('json').textContent;\n document.body.innerHTML = JSONFormatter(json);\n }\n </script>\n </head>\n <body onload=\"init()\">\n <script id=\"json\" type=\"application/json\">\n "
4+
#define HTML_FOOTER "\n </script>\n </body>\n</html>\n"
55

66
int main(int argc, char* argv[]) {
77
if (argc < 2) {

json-viewer/quicklook.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
<head>
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
55
<script src="quicklook.js"></script>
6+
<script>
7+
function init() {
8+
JSONFormatter.init();
9+
var json = document.getElementById('json').textContent;
10+
document.body.innerHTML = JSONFormatter(json);
11+
}
12+
</script>
613
</head>
714
<body onload="init()">
815
<script id="json" type="application/json">

0 commit comments

Comments
 (0)