08-27-周三_17-09-29
This commit is contained in:
206
node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js
generated
vendored
Normal file
206
node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js
generated
vendored
Normal file
@@ -0,0 +1,206 @@
|
||||
(function () {
|
||||
if (!self.Prism || !self.document || !document.querySelectorAll || ![].filter) return;
|
||||
|
||||
/**
|
||||
* @callback Adapter
|
||||
* @param {any} response
|
||||
* @param {HTMLPreElement} [pre]
|
||||
* @returns {string}
|
||||
*/
|
||||
|
||||
/**
|
||||
* The list of adapter which will be used if `data-adapter` is not specified.
|
||||
*
|
||||
* @type {Array.<{adapter: Adapter, name: string}>}
|
||||
*/
|
||||
var adapters = [];
|
||||
|
||||
/**
|
||||
* Adds a new function to the list of adapters.
|
||||
*
|
||||
* If the given adapter is already registered or not a function or there is an adapter with the given name already,
|
||||
* nothing will happen.
|
||||
*
|
||||
* @param {Adapter} adapter The adapter to be registered.
|
||||
* @param {string} [name] The name of the adapter. Defaults to the function name of `adapter`.
|
||||
*/
|
||||
function registerAdapter(adapter, name) {
|
||||
name = name || adapter.name;
|
||||
if (typeof adapter === "function" && !getAdapter(adapter) && !getAdapter(name)) {
|
||||
adapters.push({ adapter: adapter, name: name });
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Returns the given adapter itself, if registered, or a registered adapter with the given name.
|
||||
*
|
||||
* If no fitting adapter is registered, `null` will be returned.
|
||||
*
|
||||
* @param {string|Function} adapter The adapter itself or the name of an adapter.
|
||||
* @returns {Adapter} A registered adapter or `null`.
|
||||
*/
|
||||
function getAdapter(adapter) {
|
||||
if (typeof adapter === "function") {
|
||||
for (var i = 0, item; item = adapters[i++];) {
|
||||
if (item.adapter.valueOf() === adapter.valueOf()) {
|
||||
return item.adapter;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof adapter === "string") {
|
||||
for (var i = 0, item; item = adapters[i++];) {
|
||||
if (item.name === adapter) {
|
||||
return item.adapter;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* Remove the given adapter or the first registered adapter with the given name from the list of
|
||||
* registered adapters.
|
||||
*
|
||||
* @param {string|Function} adapter The adapter itself or the name of an adapter.
|
||||
*/
|
||||
function removeAdapter(adapter) {
|
||||
if (typeof adapter === "string") {
|
||||
adapter = getAdapter(adapter);
|
||||
}
|
||||
if (typeof adapter === "function") {
|
||||
var index = adapters.map(function (item) { return item.adapter; }).indexOf(adapter);
|
||||
if (index >= 0) {
|
||||
adapters.splice(index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
registerAdapter(function github(rsp, el) {
|
||||
if (rsp && rsp.meta && rsp.data) {
|
||||
if (rsp.meta.status && rsp.meta.status >= 400) {
|
||||
return "Error: " + (rsp.data.message || rsp.meta.status);
|
||||
}
|
||||
else if (typeof (rsp.data.content) === "string") {
|
||||
return typeof (atob) === "function"
|
||||
? atob(rsp.data.content.replace(/\s/g, ""))
|
||||
: "Your browser cannot decode base64";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}, 'github');
|
||||
registerAdapter(function gist(rsp, el) {
|
||||
if (rsp && rsp.meta && rsp.data && rsp.data.files) {
|
||||
if (rsp.meta.status && rsp.meta.status >= 400) {
|
||||
return "Error: " + (rsp.data.message || rsp.meta.status);
|
||||
}
|
||||
|
||||
var files = rsp.data.files;
|
||||
var filename = el.getAttribute("data-filename");
|
||||
if (filename == null) {
|
||||
// Maybe in the future we can somehow render all files
|
||||
// But the standard <script> include for gists does that nicely already,
|
||||
// so that might be getting beyond the scope of this plugin
|
||||
for (var key in files) {
|
||||
if (files.hasOwnProperty(key)) {
|
||||
filename = key;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (files[filename] !== undefined) {
|
||||
return files[filename].content;
|
||||
}
|
||||
return "Error: unknown or missing gist file " + filename;
|
||||
}
|
||||
return null;
|
||||
}, 'gist');
|
||||
registerAdapter(function bitbucket(rsp, el) {
|
||||
if (rsp && rsp.node && typeof (rsp.data) === "string") {
|
||||
return rsp.data;
|
||||
}
|
||||
return null;
|
||||
}, 'bitbucket');
|
||||
|
||||
var jsonpcb = 0,
|
||||
loadMsg = "Loading\u2026";
|
||||
|
||||
/**
|
||||
* Highlights all `pre` elements with an `data-jsonp` by requesting the specified JSON and using the specified adapter
|
||||
* or a registered adapter to extract the code to highlight from the response. The highlighted code will be inserted
|
||||
* into the `pre` element.
|
||||
*/
|
||||
function highlight() {
|
||||
Array.prototype.slice.call(document.querySelectorAll("pre[data-jsonp]")).forEach(function (pre) {
|
||||
pre.textContent = "";
|
||||
|
||||
var code = document.createElement("code");
|
||||
code.textContent = loadMsg;
|
||||
pre.appendChild(code);
|
||||
|
||||
var adapterName = pre.getAttribute("data-adapter");
|
||||
var adapter = null;
|
||||
if (adapterName) {
|
||||
if (typeof window[adapterName] === "function") {
|
||||
adapter = window[adapterName];
|
||||
}
|
||||
else {
|
||||
code.textContent = "JSONP adapter function '" + adapterName + "' doesn't exist";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var cb = "prismjsonp" + jsonpcb++;
|
||||
|
||||
var uri = document.createElement("a");
|
||||
var src = uri.href = pre.getAttribute("data-jsonp");
|
||||
uri.href += (uri.search ? "&" : "?") + (pre.getAttribute("data-callback") || "callback") + "=" + cb;
|
||||
|
||||
var timeout = setTimeout(function () {
|
||||
// we could clean up window[cb], but if the request finally succeeds, keeping it around is a good thing
|
||||
if (code.textContent === loadMsg) {
|
||||
code.textContent = "Timeout loading '" + src + "'";
|
||||
}
|
||||
}, 5000);
|
||||
|
||||
var script = document.createElement("script");
|
||||
script.src = uri.href;
|
||||
|
||||
window[cb] = function (rsp) {
|
||||
document.head.removeChild(script);
|
||||
clearTimeout(timeout);
|
||||
delete window[cb];
|
||||
|
||||
var data = "";
|
||||
|
||||
if (adapter) {
|
||||
data = adapter(rsp, pre);
|
||||
}
|
||||
else {
|
||||
for (var p in adapters) {
|
||||
data = adapters[p].adapter(rsp, pre);
|
||||
if (data !== null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (data === null) {
|
||||
code.textContent = "Cannot parse response (perhaps you need an adapter function?)";
|
||||
}
|
||||
else {
|
||||
code.textContent = data;
|
||||
Prism.highlightElement(code);
|
||||
}
|
||||
};
|
||||
|
||||
document.head.appendChild(script);
|
||||
});
|
||||
}
|
||||
|
||||
Prism.plugins.jsonphighlight = {
|
||||
registerAdapter: registerAdapter,
|
||||
removeAdapter: removeAdapter,
|
||||
highlight: highlight
|
||||
};
|
||||
|
||||
highlight();
|
||||
})();
|
1
node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js
generated
vendored
Normal file
1
node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(){if(self.Prism&&self.document&&document.querySelectorAll&&[].filter){var d=[];t(function(t,e){if(t&&t.meta&&t.data){if(t.meta.status&&400<=t.meta.status)return"Error: "+(t.data.message||t.meta.status);if("string"==typeof t.data.content)return"function"==typeof atob?atob(t.data.content.replace(/\s/g,"")):"Your browser cannot decode base64"}return null},"github"),t(function(t,e){if(t&&t.meta&&t.data&&t.data.files){if(t.meta.status&&400<=t.meta.status)return"Error: "+(t.data.message||t.meta.status);var n=t.data.files,a=e.getAttribute("data-filename");if(null==a)for(var r in n)if(n.hasOwnProperty(r)){a=r;break}return void 0!==n[a]?n[a].content:"Error: unknown or missing gist file "+a}return null},"gist"),t(function(t,e){return t&&t.node&&"string"==typeof t.data?t.data:null},"bitbucket");var s=0,l="Loading…";Prism.plugins.jsonphighlight={registerAdapter:t,removeAdapter:function(t){if("string"==typeof t&&(t=n(t)),"function"==typeof t){var e=d.map(function(t){return t.adapter}).indexOf(t);0<=e&&d.splice(e,1)}},highlight:e},e()}function t(t,e){e=e||t.name,"function"!=typeof t||n(t)||n(e)||d.push({adapter:t,name:e})}function n(t){if("function"==typeof t){for(var e=0;n=d[e++];)if(n.adapter.valueOf()===t.valueOf())return n.adapter}else if("string"==typeof t){var n;for(e=0;n=d[e++];)if(n.name===t)return n.adapter}return null}function e(){Array.prototype.slice.call(document.querySelectorAll("pre[data-jsonp]")).forEach(function(a){a.textContent="";var r=document.createElement("code");r.textContent=l,a.appendChild(r);var t=a.getAttribute("data-adapter"),o=null;if(t){if("function"!=typeof window[t])return void(r.textContent="JSONP adapter function '"+t+"' doesn't exist");o=window[t]}var i="prismjsonp"+s++,e=document.createElement("a"),n=e.href=a.getAttribute("data-jsonp");e.href+=(e.search?"&":"?")+(a.getAttribute("data-callback")||"callback")+"="+i;var u=setTimeout(function(){r.textContent===l&&(r.textContent="Timeout loading '"+n+"'")},5e3),f=document.createElement("script");f.src=e.href,window[i]=function(t){document.head.removeChild(f),clearTimeout(u),delete window[i];var e="";if(o)e=o(t,a);else for(var n in d)if(null!==(e=d[n].adapter(t,a)))break;null===e?r.textContent="Cannot parse response (perhaps you need an adapter function?)":(r.textContent=e,Prism.highlightElement(r))},document.head.appendChild(f)})}}();
|
Reference in New Issue
Block a user