diff --git a/dist/angular-marked.js b/dist/angular-marked.js index 9dd322d..e750a7c 100644 --- a/dist/angular-marked.js +++ b/dist/angular-marked.js @@ -185,6 +185,30 @@ function markedProvider() { this.defaults = opts; }; + /** + * @ngdoc method + * @name markedProvider#setLexer + * @methodOf hc.marked.service:markedProvider + * + * @param {object} lexer The lexer applied to [marked](https://github.com/chjj/marked#access-to-lexer-and-parser). + */ + + self.setLexer = function (lexer) { + this.lexer = lexer; + }; + + /** + * @ngdoc method + * @name markedProvider#setParse + * @methodOf hc.marked.service:markedProvider + * + * @param {function} parse Overwrite the parse method called by marked. + */ + + self.setParse = function (parse) { + this.parse = parse; + }; + self.$get = ['$log', '$window', function ($log, $window) { var m; @@ -232,6 +256,20 @@ function markedProvider() { m.setOptions(self.defaults); + // add marked lexer to defaults + self.defaults.lexer = m.lexer; + + if (self.lexer) { + m.lexer = self.lexer; + }; + + // add marked parse method to defaults + self.defaults.parse = m.parse; + + if (self.parser) { + m.parse = self.parse; + }; + return m; }]; } @@ -333,7 +371,7 @@ function markedDirective(marked, $templateRequest, $compile) { function set(text) { text = unindent(String(text || '')); - element.html(marked(text, scope.opts || null)); + element.html(marked.parse(text, scope.opts || null)); if (scope.$eval(attrs.compile)) { $compile(element.contents())(scope.$parent); } diff --git a/dist/angular-marked.min.js b/dist/angular-marked.min.js index c4ea91c..19e6840 100644 --- a/dist/angular-marked.min.js +++ b/dist/angular-marked.min.js @@ -1 +1 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.angularMarked=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o"+string+""}var renderCode=r.code.bind(r);r.code=function(code,lang,escaped){return wrapNonBindable(renderCode(code,lang,escaped))};var renderCodespan=r.codespan.bind(r);r.codespan=function(code){return wrapNonBindable(renderCodespan(code))};self.defaults=self.defaults||{};self.defaults.renderer=r;m.setOptions(self.defaults);return m}]}markedDirective.$inject=["marked","$templateRequest","$compile"];function markedDirective(marked,$templateRequest,$compile){return{restrict:"AE",replace:true,scope:{opts:"=",marked:"=",compile:"@",src:"="},link:function(scope,element,attrs){if(attrs.marked){set(scope.marked);scope.$watch("marked",set)}else if(attrs.src){scope.$watch("src",function(src){$templateRequest(src,true).then(function(response){set(response)},function(){set("");scope.$emit("$markedIncludeError",attrs.src)})})}else{set(element.text())}function set(text){text=unindent(String(text||""));element.html(marked(text,scope.opts||null));if(scope.$eval(attrs.compile)){$compile(element.contents())(scope.$parent)}}}}}module.exports=angular.module("hc.marked",[]).directive("marked",markedDirective).provider("marked",markedProvider).name},{"./strip-indent":2,marked:"marked"}],2:[function(require,module,exports){module.exports=function unindent(text){if(!text){return text}var lines=text.replace(/\t/g," ").split(/\r?\n/);var min=null;var len=lines.length;var i;for(i=0;i0){for(i=0;i"+string+""}var renderCode=r.code.bind(r);r.code=function(code,lang,escaped){return wrapNonBindable(renderCode(code,lang,escaped))};var renderCodespan=r.codespan.bind(r);r.codespan=function(code){return wrapNonBindable(renderCodespan(code))};self.defaults=self.defaults||{};self.defaults.renderer=r;m.setOptions(self.defaults);self.defaults.lexer=m.lexer;if(self.lexer){m.lexer=self.lexer}self.defaults.parse=m.parse;if(self.parser){m.parse=self.parse}return m}]}markedDirective.$inject=["marked","$templateRequest","$compile"];function markedDirective(marked,$templateRequest,$compile){return{restrict:"AE",replace:true,scope:{opts:"=",marked:"=",compile:"@",src:"="},link:function(scope,element,attrs){if(attrs.marked){set(scope.marked);scope.$watch("marked",set)}else if(attrs.src){scope.$watch("src",function(src){$templateRequest(src,true).then(function(response){set(response)},function(){set("");scope.$emit("$markedIncludeError",attrs.src)})})}else{set(element.text())}function set(text){text=unindent(String(text||""));element.html(marked.parse(text,scope.opts||null));if(scope.$eval(attrs.compile)){$compile(element.contents())(scope.$parent)}}}}}module.exports=angular.module("hc.marked",[]).directive("marked",markedDirective).provider("marked",markedProvider).name},{"./strip-indent":2,marked:"marked"}],2:[function(require,module,exports){module.exports=function unindent(text){if(!text){return text}var lines=text.replace(/\t/g," ").split(/\r?\n/);var min=null;var len=lines.length;var i;for(i=0;i0){for(i=0;i