aboutsummaryrefslogtreecommitdiff
path: root/node_modules/prismjs/plugins/file-highlight
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/prismjs/plugins/file-highlight
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/prismjs/plugins/file-highlight')
-rw-r--r--node_modules/prismjs/plugins/file-highlight/prism-file-highlight.js90
-rw-r--r--node_modules/prismjs/plugins/file-highlight/prism-file-highlight.min.js1
2 files changed, 91 insertions, 0 deletions
diff --git a/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.js b/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.js
new file mode 100644
index 00000000..6dee6c4c
--- /dev/null
+++ b/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.js
@@ -0,0 +1,90 @@
+(function () {
+ if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
+ return;
+ }
+
+ self.Prism.fileHighlight = function() {
+
+ var Extensions = {
+ 'js': 'javascript',
+ 'py': 'python',
+ 'rb': 'ruby',
+ 'ps1': 'powershell',
+ 'psm1': 'powershell',
+ 'sh': 'bash',
+ 'bat': 'batch',
+ 'h': 'c',
+ 'tex': 'latex'
+ };
+
+ Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {
+ var src = pre.getAttribute('data-src');
+
+ var language, parent = pre;
+ var lang = /\blang(?:uage)?-([\w-]+)\b/i;
+ while (parent && !lang.test(parent.className)) {
+ parent = parent.parentNode;
+ }
+
+ if (parent) {
+ language = (pre.className.match(lang) || [, ''])[1];
+ }
+
+ if (!language) {
+ var extension = (src.match(/\.(\w+)$/) || [, ''])[1];
+ language = Extensions[extension] || extension;
+ }
+
+ var code = document.createElement('code');
+ code.className = 'language-' + language;
+
+ pre.textContent = '';
+
+ code.textContent = 'Loading…';
+
+ pre.appendChild(code);
+
+ var xhr = new XMLHttpRequest();
+
+ xhr.open('GET', src, true);
+
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState == 4) {
+
+ if (xhr.status < 400 && xhr.responseText) {
+ code.textContent = xhr.responseText;
+
+ Prism.highlightElement(code);
+ }
+ else if (xhr.status >= 400) {
+ code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
+ }
+ else {
+ code.textContent = '✖ Error: File does not exist or is empty';
+ }
+ }
+ };
+
+ xhr.send(null);
+ });
+
+ if (Prism.plugins.toolbar) {
+ Prism.plugins.toolbar.registerButton('download-file', function (env) {
+ var pre = env.element.parentNode;
+ if (!pre || !/pre/i.test(pre.nodeName) || !pre.hasAttribute('data-src') || !pre.hasAttribute('data-download-link')) {
+ return;
+ }
+ var src = pre.getAttribute('data-src');
+ var a = document.createElement('a');
+ a.textContent = pre.getAttribute('data-download-link-label') || 'Download';
+ a.setAttribute('download', '');
+ a.href = src;
+ return a;
+ });
+ }
+
+ };
+
+ document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);
+
+})(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.min.js b/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.min.js
new file mode 100644
index 00000000..301fa878
--- /dev/null
+++ b/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.min.js
@@ -0,0 +1 @@
+!function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(e){for(var a,n=e.getAttribute("data-src"),r=e,o=/\blang(?:uage)?-([\w-]+)\b/i;r&&!o.test(r.className);)r=r.parentNode;if(r&&(a=(e.className.match(o)||[,""])[1]),!a){var s=(n.match(/\.(\w+)$/)||[,""])[1];a=t[s]||s}var l=document.createElement("code");l.className="language-"+a,e.textContent="",l.textContent="Loading…",e.appendChild(l);var i=new XMLHttpRequest;i.open("GET",n,!0),i.onreadystatechange=function(){4==i.readyState&&(i.status<400&&i.responseText?(l.textContent=i.responseText,Prism.highlightElement(l)):l.textContent=i.status>=400?"✖ Error "+i.status+" while fetching file: "+i.statusText:"✖ Error: File does not exist or is empty")},i.send(null)}),Prism.plugins.toolbar&&Prism.plugins.toolbar.registerButton("download-file",function(t){var e=t.element.parentNode;if(e&&/pre/i.test(e.nodeName)&&e.hasAttribute("data-src")&&e.hasAttribute("data-download-link")){var a=e.getAttribute("data-src"),n=document.createElement("a");return n.textContent=e.getAttribute("data-download-link-label")||"Download",n.setAttribute("download",""),n.href=a,n}})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}(); \ No newline at end of file