Created
December 4, 2015 06:12
-
-
Save ihsansfd/8e178f2e0b2652db65ae to your computer and use it in GitHub Desktop.
project arlina design template mag 3 2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Prism: Lightweight, robust, elegant syntax highlighting | |
| * MIT license http://www.opensource.org/licenses/mit-license.php/ | |
| * @author Lea Verou http://lea.verou.me | |
| */ | |
| (function () { | |
| // Private helper vars | |
| var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; | |
| var _ = self.Prism = { | |
| languages: { | |
| insertBefore: function (inside, before, insert, root) { | |
| root = root || _.languages; | |
| var grammar = root[inside]; | |
| var ret = {}; | |
| for (var token in grammar) { | |
| if (grammar.hasOwnProperty(token)) { | |
| if (token == before) { | |
| for (var newToken in insert) { | |
| if (insert.hasOwnProperty(newToken)) { | |
| ret[newToken] = insert[newToken]; | |
| } | |
| } | |
| } | |
| ret[token] = grammar[token]; | |
| } | |
| } | |
| return root[inside] = ret; | |
| }, | |
| DFS: function (o, callback) { | |
| for (var i in o) { | |
| callback.call(o, i, o[i]); | |
| if (Object.prototype.toString.call(o) === '[object Object]') { | |
| _.languages.DFS(o[i], callback); | |
| } | |
| } | |
| } | |
| }, | |
| highlightAll: function (async, callback) { | |
| var elements = document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'); | |
| for (var i = 0, element; element = elements[i++];) { | |
| _.highlightElement(element, async === true, callback); | |
| } | |
| }, | |
| highlightElement: function (element, async, callback) { | |
| // Find language | |
| var language, grammar, parent = element; | |
| while (parent && !lang.test(parent.className)) { | |
| parent = parent.parentNode; | |
| } | |
| if (parent) { | |
| language = (parent.className.match(lang) || [, ''])[1]; | |
| grammar = _.languages[language]; | |
| } | |
| if (!grammar) { | |
| return; | |
| } | |
| // Set language on the element, if not present | |
| element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; | |
| // Set language on the parent, for styling | |
| parent = element.parentNode; | |
| if (/pre/i.test(parent.nodeName)) { | |
| parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; | |
| } | |
| var code = element.textContent.trim(); | |
| if (!code) { | |
| return; | |
| } | |
| code = code.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\u00a0/g, ' '); | |
| //console.time(code.slice(0,50)); | |
| var env = { | |
| element: element, | |
| language: language, | |
| grammar: grammar, | |
| code: code | |
| }; | |
| _.hooks.run('before-highlight', env); | |
| if (async && self.Worker) { | |
| var worker = new Worker(_.filename); | |
| worker.onmessage = function (evt) { | |
| env.highlightedCode = Token.stringify(JSON.parse(evt.data)); | |
| env.element.innerHTML = env.highlightedCode; | |
| callback && callback.call(env.element); | |
| //console.timeEnd(code.slice(0,50)); | |
| _.hooks.run('after-highlight', env); | |
| }; | |
| worker.postMessage(JSON.stringify({ | |
| language: env.language, | |
| code: env.code | |
| })); | |
| } else { | |
| env.highlightedCode = _.highlight(env.code, env.grammar) | |
| env.element.innerHTML = env.highlightedCode; | |
| callback && callback.call(element); | |
| _.hooks.run('after-highlight', env); | |
| //console.timeEnd(code.slice(0,50)); | |
| } | |
| }, | |
| highlight: function (text, grammar) { | |
| return Token.stringify(_.tokenize(text, grammar)); | |
| }, | |
| tokenize: function (text, grammar) { | |
| var Token = _.Token; | |
| var strarr = [text]; | |
| var rest = grammar.rest; | |
| if (rest) { | |
| for (var token in rest) { | |
| grammar[token] = rest[token]; | |
| } | |
| delete grammar.rest; | |
| } | |
| tokenloop: for (var token in grammar) { | |
| if (!grammar.hasOwnProperty(token) || !grammar[token]) { | |
| continue; | |
| } | |
| var pattern = grammar[token], | |
| inside = pattern.inside, | |
| lookbehind = !! pattern.lookbehind || 0; | |
| pattern = pattern.pattern || pattern; | |
| for (var i = 0; i < strarr.length; i++) { // DonÂ’t cache length as it changes during the loop | |
| var str = strarr[i]; | |
| if (strarr.length > text.length) { | |
| // Something went terribly wrong, ABORT, ABORT! | |
| break tokenloop; | |
| } | |
| if (str instanceof Token) { | |
| continue; | |
| } | |
| pattern.lastIndex = 0; | |
| var match = pattern.exec(str); | |
| if (match) { | |
| if (lookbehind) { | |
| lookbehind = match[1].length; | |
| } | |
| var from = match.index - 1 + lookbehind, | |
| match = match[0].slice(lookbehind), | |
| len = match.length, | |
| to = from + len, | |
| before = str.slice(0, from + 1), | |
| after = str.slice(to + 1); | |
| var args = [i, 1]; | |
| if (before) { | |
| args.push(before); | |
| } | |
| var wrapped = new Token(token, inside ? _.tokenize(match, inside) : match); | |
| args.push(wrapped); | |
| if (after) { | |
| args.push(after); | |
| } | |
| Array.prototype.splice.apply(strarr, args); | |
| } | |
| } | |
| } | |
| return strarr; | |
| }, | |
| hooks: { | |
| all: {}, | |
| add: function (name, callback) { | |
| var hooks = _.hooks.all; | |
| hooks[name] = hooks[name] || []; | |
| hooks[name].push(callback); | |
| }, | |
| run: function (name, env) { | |
| var callbacks = _.hooks.all[name]; | |
| if (!callbacks || !callbacks.length) { | |
| return; | |
| } | |
| for (var i = 0, callback; callback = callbacks[i++];) { | |
| callback(env); | |
| } | |
| } | |
| } | |
| }; | |
| var Token = _.Token = function (type, content) { | |
| this.type = type; | |
| this.content = content; | |
| }; | |
| Token.stringify = function (o) { | |
| if (typeof o == 'string') { | |
| return o; | |
| } | |
| if (Object.prototype.toString.call(o) == '[object Array]') { | |
| for (var i = 0; i < o.length; i++) { | |
| o[i] = Token.stringify(o[i]); | |
| } | |
| return o.join(''); | |
| } | |
| var env = { | |
| type: o.type, | |
| content: Token.stringify(o.content), | |
| tag: 'span', | |
| classes: ['token', o.type], | |
| attributes: {} | |
| }; | |
| if (env.type == 'comment') { | |
| env.attributes['spellcheck'] = 'true'; | |
| } | |
| _.hooks.run('wrap', env); | |
| var attributes = ''; | |
| for (var name in env.attributes) { | |
| attributes += name + '="' + (env.attributes[name] || '') + '"'; | |
| } | |
| return '<' + env.tag + ' class="' + env.classes.join(' ') + '" ' + attributes + '>' + env.content + '</' + env.tag + '>'; | |
| }; | |
| if (!self.document) { | |
| // In worker | |
| self.addEventListener('message', function (evt) { | |
| var message = JSON.parse(evt.data), | |
| lang = message.language, | |
| code = message.code; | |
| self.postMessage(JSON.stringify(_.tokenize(code, _.languages[lang]))); | |
| self.close(); | |
| }, false); | |
| return; | |
| } | |
| // Get current script and highlight | |
| var script = document.getElementsByTagName('script'); | |
| script = script[script.length - 1]; | |
| if (script) { | |
| _.filename = script.src; | |
| if (document.addEventListener && !script.hasAttribute('data-manual')) { | |
| document.addEventListener('DOMContentLoaded', _.highlightAll); | |
| } | |
| } | |
| })(); | |
| Prism.languages.markup = { | |
| 'comment': /<!--[\w\W]*?--(>|>)/g, | |
| 'prolog': /<\?.+?\?>/, | |
| 'doctype': /<!DOCTYPE.+?>/, | |
| 'cdata': /<!\[CDATA\[[\w\W]+?]]>/i, | |
| 'tag': { | |
| pattern: /<\/?[\w:-]+\s*[\w\W]*?>/gi, | |
| inside: { | |
| 'tag': { | |
| pattern: /^<\/?[\w:-]+/i, | |
| inside: { | |
| 'punctuation': /^<\/?/, | |
| 'namespace': /^[\w-]+?:/ | |
| } | |
| }, | |
| 'attr-value': { | |
| pattern: /=(('|")[\w\W]*?(\2)|[^\s>]+)/gi, | |
| inside: { | |
| 'punctuation': /=/g | |
| } | |
| }, | |
| 'punctuation': /\/?>/g, | |
| 'attr-name': { | |
| pattern: /[\w:-]+/g, | |
| inside: { | |
| 'namespace': /^[\w-]+?:/ | |
| } | |
| } | |
| } | |
| }, | |
| 'entity': /&#?[\da-z]{1,8};/gi | |
| }; | |
| // Plugin to make entity title show the real entity, idea by Roman Komarov | |
| Prism.hooks.add('wrap', function (env) { | |
| if (env.type === 'entity') { | |
| env.attributes['title'] = env.content.replace(/&/, '&'); | |
| } | |
| }); | |
| Prism.languages.css = { | |
| 'comment': /\/\*[\w\W]*?\*\//g, | |
| 'atrule': /@[\w-]+?(\s+.+)?(?=\s*{|\s*;)/gi, | |
| 'url': /url\((["']?).*?\1\)/gi, | |
| 'selector': /[^\{\}\s][^\{\}]*(?=\s*\{)/g, | |
| 'property': /(\b|\B)[a-z-]+(?=\s*:)/ig, | |
| 'string': /("|')(\\?.)*?\1/g, | |
| 'important': /\B!important\b/gi, | |
| 'ignore': /&(lt|gt|amp);/gi, | |
| 'punctuation': /[\{\};:]/g | |
| }; | |
| if (Prism.languages.markup) { | |
| Prism.languages.insertBefore('markup', 'tag', { | |
| 'style': { | |
| pattern: /(<|<)style[\w\W]*?(>|>)[\w\W]*?(<|<)\/style(>|>)/ig, | |
| inside: { | |
| 'tag': { | |
| pattern: /(<|<)style[\w\W]*?(>|>)|(<|<)\/style(>|>)/ig, | |
| inside: Prism.languages.markup.tag.inside | |
| }, | |
| rest: Prism.languages.css | |
| } | |
| } | |
| }); | |
| } | |
| Prism.languages.javascript = { | |
| 'comment': { | |
| pattern: /(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g, | |
| lookbehind: true | |
| }, | |
| 'string': /("|')(\\?.)*?\1/g, | |
| 'regex': { | |
| pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g, | |
| lookbehind: true | |
| }, | |
| 'keyword': /\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|catch|finally|null|break|continue)\b/g, | |
| 'boolean': /\b(true|false)\b/g, | |
| 'number': /\b-?(0x)?\d*\.?\d+\b/g, | |
| 'operator': /[-+]{1,2}|!|=?<|=?>|={1,2}|(&){1,2}|\|?\||\?|\*|\//g, | |
| 'ignore': /&(lt|gt|amp);/gi, | |
| 'punctuation': /[{}[\];(),.:]/g | |
| }; | |
| if (Prism.languages.markup) { | |
| Prism.languages.insertBefore('markup', 'tag', { | |
| 'script': { | |
| pattern: /(<|<)script[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/ig, | |
| inside: { | |
| 'tag': { | |
| pattern: /(<|<)script[\w\W]*?(>|>)|(<|<)\/script(>|>)/ig, | |
| inside: Prism.languages.markup.tag.inside | |
| }, | |
| rest: Prism.languages.javascript | |
| } | |
| } | |
| }); | |
| } | |
| Prism.languages.java = { | |
| 'comment': { | |
| pattern: /(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g, | |
| lookbehind: true | |
| }, | |
| 'string': /("|')(\\?.)*?\1/g, | |
| 'keyword': /\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/g, | |
| 'boolean': /\b(true|false)\b/g, | |
| 'number': /\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+[e]?[\d]*[df]\b|\W\d*\.?\d+\b/gi, | |
| 'operator': { | |
| pattern: /([^\.]|^)([-+]{1,2}|!|=?<|=?>|={1,2}|(&){1,2}|\|?\||\?|\*|\/|%|\^|(<){2}|($gt;){2,3}|:|~)/g, | |
| lookbehind: true | |
| }, | |
| 'ignore': /&(lt|gt|amp);/gi, | |
| 'punctuation': /[{}[\];(),.:]/g, | |
| }; | |
| //CTRLU | |
| shortcut={all_shortcuts:{},add:function(a,b,c){var d={type:"keydown",propagate:!1,disable_in_input:!1,target:document,keycode:!1};if(c)for(var e in d)"undefined"==typeof c[e]&&(c[e]=d[e]);else c=d;d=c.target,"string"==typeof c.target&&(d=document.getElementById(c.target)),a=a.toLowerCase(),e=function(d){d=d||window.event;if(c.disable_in_input){var e;d.target?e=d.target:d.srcElement&&(e=d.srcElement),3==e.nodeType&&(e=e.parentNode);if("INPUT"==e.tagName||"TEXTAREA"==e.tagName)return}d.keyCode?code=d.keyCode:d.which&&(code=d.which),e=String.fromCharCode(code).toLowerCase(),188==code&&(e=","),190==code&&(e=".");var f=a.split("+"),g=0,h={"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"},i={esc:27,escape:27,tab:9,space:32,"return":13,enter:13,backspace:8,scrolllock:145,scroll_lock:145,scroll:145,capslock:20,caps_lock:20,caps:20,numlock:144,num_lock:144,num:144,pause:19,"break":19,insert:45,home:36,"delete":46,end:35,pageup:33,page_up:33,pu:33,pagedown:34,page_down:34,pd:34,left:37,up:38,right:39,down:40,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},j=!1,l=!1,m=!1,n=!1,o=!1,p=!1,q=!1,r=!1;d.ctrlKey&&(n=!0),d.shiftKey&&(l=!0),d.altKey&&(p=!0),d.metaKey&&(r=!0);for(var s=0;k=f[s],s<f.length;s++)"ctrl"==k||"control"==k?(g++,m=!0):"shift"==k?(g++,j=!0):"alt"==k?(g++,o=!0):"meta"==k?(g++,q=!0):1<k.length?i[k]==code&&g++:c.keycode?c.keycode==code&&g++:e==k?g++:h[e]&&d.shiftKey&&(e=h[e],e==k&&g++);if(g==f.length&&n==m&&l==j&&p==o&&r==q&&(b(d),!c.propagate))return d.cancelBubble=!0,d.returnValue=!1,d.stopPropagation&&(d.stopPropagation(),d.preventDefault()),!1},this.all_shortcuts[a]={callback:e,target:d,event:c.type},d.addEventListener?d.addEventListener(c.type,e,!1):d.attachEvent?d.attachEvent("on"+c.type,e):d["on"+c.type]=e},remove:function(a){var a=a.toLowerCase(),b=this.all_shortcuts[a];delete this.all_shortcuts[a];if(b){var a=b.event,c=b.target,b=b.callback;c.detachEvent?c.detachEvent("on"+a,b):c.removeEventListener?c.removeEventListener(a,b,!1):c["on"+a]=!1}}},shortcut.add("Ctrl+U",function(){top.location.href=" http://arlinadesign.blogspot.com/"}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment