-
Notifications
You must be signed in to change notification settings - Fork 53
/
Copy pathangular-highlightjs.min.js
6 lines (6 loc) · 4.6 KB
/
angular-highlightjs.min.js
1
2
3
4
5
6
/*! angular-highlightjs
version: 0.7.1
build date: 2017-02-28
author: Chih-Hsuan Fan
https://github.com/pc035860/angular-highlightjs.git */
!function(a,b){"object"==typeof exports||"object"==typeof module&&module.exports?module.exports=b(require("angular"),require("highlight.js")):"function"==typeof define&&define.amd?define(["angular","hljs"],b):a.returnExports=b(a.angular,a.hljs)}(this,function(a,b){function c(b){return function(c){switch(c){case"escape":return a.isDefined(b.hljsEscape)?b.hljsEscape:b.escape;case"no-escape":return a.isDefined(b.hljsNoEscape)?b.hljsNoEscape:b.noEscape;case"onhighlight":return a.isDefined(b.hljsOnhighlight)?b.hljsOnhighlight:b.onhighlight}}}function d(b){var c=!0;return a.forEach(["source","include"],function(a){b[a]&&(c=!1)}),c}var e=a.module("hljs",[]);e.provider("hljsService",function(){var c={};return{setOptions:function(b){a.extend(c,b)},getOptions:function(){return a.copy(c)},$get:function(){return(b.configure||a.noop)(c),b}}}),e.factory("hljsCache",["$cacheFactory",function(a){return a("hljsCache")}]),e.controller("HljsCtrl",["hljsCache","hljsService","$interpolate","$window",function(b,c,d,e){function f(a,b,c){var d;return function(){var f=this,g=arguments,h=function(){d=null,c||a.apply(f,g)},i=c&&!d;e.clearTimeout(d),d=e.setTimeout(h,b),i&&a.apply(f,g)}}function g(a,b){var c=b?"\\\\$&":"\\$&";return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,c)}function h(a){for(var b,c=[],d=new RegExp(q,"g"),e="",f=0;null!==(b=d.exec(a));)e+=a.substring(f,b.index)+r,f=b.index+b[0].length,c.push(b[0]);return e+=a.substr(f),{code:e,tokens:c}}function i(a,b){for(var c,d=new RegExp(r,"g"),e="",f=0;null!==(c=d.exec(a));)e+=a.substring(f,c.index)+b.shift(),f=c.index+c[0].length;return e+=a.substr(f)}var j=this,k=null,l=null,m=null,n=!1,o=null,p=null,q=g(d.startSymbol())+"((.|\\s)+?)"+g(d.endSymbol()),r="∫";j.init=function(a){k=a},j.setInterpolateScope=function(a){n=a,m&&j.highlight(m)},j.setLanguage=function(a){l=a,m&&j.highlight(m)},j.highlightCallback=function(a){p=a},j._highlight=function(e){if(k){var f,g,q;if(m=e,n&&(q=h(e),e=q.code),l?(g=j._cacheKey(l,!!n,e),f=b.get(g),f||(f=c.highlight(l,c.fixMarkup(e),!0),b.put(g,f))):(g=j._cacheKey(!!n,e),f=b.get(g),f||(f=c.highlightAuto(c.fixMarkup(e)),b.put(g,f))),e=f.value,n){(o||a.noop)(),q&&(e=i(e,q.tokens));var r=d(e);o=n.$watch(r,function(a,b){a!==b&&k.html(a)}),n.$apply(),k.html(r(n))}else k.html(e);k.addClass(f.language),null!==p&&a.isFunction(p)&&p()}},j.highlight=f(j._highlight,17),j.clear=function(){k&&(m=null,k.text(""))},j.release=function(){k=null,n=null,(o||a.noop)(),o=null},j._cacheKey=function(){var a=Array.prototype.slice.call(arguments),b="!angular-highlightjs!";return a.join(b)}}]);var f,g,h,i,j;return f=["$parse",function(b){return{restrict:"EA",controller:"HljsCtrl",compile:function(e,f,g){var h=e[0].innerHTML.replace(/^(\r\n|\r|\n)/,""),i=e[0].textContent.replace(/^(\r\n|\r|\n)/,"");return e.html('<pre><code class="hljs"></code></pre>'),function(e,f,g,j){var k,l=c(g);if(a.isDefined(l("escape"))?k=b(l("escape")):a.isDefined(l("no-escape"))&&(k=b("false")),j.init(f.find("code")),l("onhighlight")&&j.highlightCallback(function(){e.$eval(l("onhighlight"))}),(h||i)&&d(g)){var m;m=k&&!k(e)?i:h,j.highlight(m)}e.$on("$destroy",function(){j.release()})}}}}],h=function(b){return function(){return{require:"?hljs",restrict:"A",link:function(c,d,e,f){f&&e.$observe(b,function(b){a.isDefined(b)&&f.setLanguage(b)})}}}},g=function(a){return function(){return{require:"?hljs",restrict:"A",link:function(b,c,d,e){e&&b.$watch(d[a],function(a,c){(a||a!==c)&&e.setInterpolateScope(a?b:null)})}}}},i=function(a){return function(){return{require:"?hljs",restrict:"A",link:function(b,c,d,e){e&&b.$watch(d[a],function(a,b){a?e.highlight(a):e.clear()})}}}},j=function(b){return["$http","$templateCache","$q",function(c,d,e){return{require:"?hljs",restrict:"A",compile:function(f,g,h){var i=g[b];return function(b,f,g,h){var j=0;h&&b.$watch(i,function(b){var f=++j;if(b&&a.isString(b)){var g,i;g=d.get(b),g||(i=e.defer(),c.get(b,{cache:d,transformResponse:function(a,b){return a}}).then(function(a){f===j&&i.resolve(a)}).catch(function(){f===j&&h.clear(),i.resolve()}),g=i.promise),e.when(g).then(function(b){b&&(a.isArray(b)?b=b[1]:a.isObject(b)&&(b=b.data),b=b.replace(/^(\r\n|\r|\n)/,""),h.highlight(b))})}else h.clear()})}}}}]},function(b){b.directive("hljs",f),a.forEach(["interpolate","hljsInterpolate","compile","hljsCompile"],function(a){b.directive(a,g(a))}),a.forEach(["language","hljsLanguage"],function(a){b.directive(a,h(a))}),a.forEach(["source","hljsSource"],function(a){b.directive(a,i(a))}),a.forEach(["include","hljsInclude"],function(a){b.directive(a,j(a))})}(e),"hljs"});