/*! angular-highlightjs version: 0.2.1 build date: 2014-02-05 author: Robin Fan https://github.com/pc035860/angular-highlightjs.git */ angular.module("hljs",[]).factory("$hljsCache",["$cacheFactory",function(a){return a("$hljsCache")}]).controller("HljsCtrl",["$hljsCache",function(a){var b=this,c=null,d=null,e=null,f=null;b.init=function(a){c=a},b.setLanguage=function(a){d=a,e&&b.highlight(e)},b.highlightCallback=function(a){f=a},b.highlight=function(g){if(c){var h,i;e=g,d?(i=b._cacheKey(d,e),h=a.get(i),h||(h=hljs.highlight(d,e,!0),a.put(i,h))):(i=b._cacheKey(e),h=a.get(i),h||(h=hljs.highlightAuto(e),a.put(i,h))),c.html(h.value),null!==f&&angular.isFunction(f)&&f()}},b.clear=function(){c&&(e=null,c.text(""))},b.release=function(){c=null},b._cacheKey=function(){var a=Array.prototype.slice.call(arguments),b="!angular-highlightjs!";return a.join(b)}}]).directive("hljs",[function(){return{restrict:"EA",controller:"HljsCtrl",compile:function(a){var b=a[0].innerHTML.replace(/^\r\n|\r|\n/,"");return a.html('
'),function(a,c,d,e){e.init(c.find("code")),d.onhighlight&&e.highlightCallback(function(){a.$eval(d.onhighlight)}),b&&e.highlight(b),a.$on("$destroy",function(){e.release()})}}}}]).directive("language",[function(){return{require:"hljs",restrict:"A",link:function(a,b,c,d){c.$observe("language",function(a){angular.isDefined(a)&&d.setLanguage(a)})}}}]).directive("source",[function(){return{require:"hljs",restrict:"A",link:function(a,b,c,d){a.$watch(c.source,function(a){a?d.highlight(a):d.clear()})}}}]).directive("include",["$http","$templateCache","$q",function(a,b,c){return{require:"hljs",restrict:"A",compile:function(d,e){var f=e.include;return function(d,e,g,h){var i=0;d.$watch(f,function(d){var e=++i;if(d&&angular.isString(d)){var f,g;f=b.get(d),f||(g=c.defer(),a.get(d,{cache:b}).success(function(a){e===i&&g.resolve(a)}).error(function(){e===i&&h.clear(),g.resolve()}),f=g.promise),c.when(f).then(function(a){a&&(angular.isArray(a)?a=a[1]:angular.isObject(a)&&(a=a.data),a=a.replace(/^\r\n|\r|\n/,""),h.highlight(a))})}else h.clear()})}}}}]);