forked from ushahidi/angular-markdown-directive
-
Notifications
You must be signed in to change notification settings - Fork 0
/
markdown.js
55 lines (50 loc) · 1.64 KB
/
markdown.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
* angular-markdown-directive v0.3.1
* (c) 2013-2014 Brian Ford http://briantford.com
* License: MIT
*/
'format global'; /* global define */
'deps angular';
'deps angular-sanitize';
'deps showdown';
(function () {
'use strict';
function angularMarkdown(angular, Showdown) {
angular.module('btford.markdown', ['ngSanitize'])
.constant('Showdown', Showdown)
.provider('markdownConverter', ['Showdown', function (Showdown) {
var opts = {};
return {
config: function (newOpts) {
opts = newOpts;
},
$get: function () {
return new Showdown.Converter(opts);
}
};
}])
.directive('btfMarkdown', ['$sanitize', 'markdownConverter', function ($sanitize, markdownConverter) {
return {
restrict: 'AE',
link: function (scope, element, attrs) {
if (attrs.btfMarkdown) {
scope.$watch(attrs.btfMarkdown, function (newVal) {
var html = newVal ? $sanitize(markdownConverter.makeHtml(newVal)) : '';
element.html(html);
});
} else {
var html = $sanitize(markdownConverter.makeHtml(element.text()));
element.html(html);
}
}
};
}]);
}
if (typeof define === 'function' && define.amd) {
define('angular-markdown-directive', ['angular', 'showdown'], angularMarkdown);
} else if (typeof module !== 'undefined' && module && module.exports && typeof require !== 'undefined') {
angularMarkdown(angular, require('showdown'));
} else {
angularMarkdown(angular, window.Showdown);
}
})();