Blame view

bower_components/prism/components/prism-markdown.js 2.76 KB
73bcce88   luigser   COMPONENTS
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  Prism.languages.markdown = Prism.languages.extend('markup', {});
  Prism.languages.insertBefore('markdown', 'prolog', {
  	'blockquote': {
  		// > ...
  		pattern: /(^|\n)>(?:[\t ]*>)*/,
  		lookbehind: true,
  		alias: 'punctuation'
  	},
  	'code': [
  		{
  			// Prefixed by 4 spaces or 1 tab
  			pattern: /(^|\n)(?: {4}|\t).+/,
  			lookbehind: true,
  			alias: 'keyword'
  		},
  		{
  			// `code`
  			// ``code``
  			pattern: /``.+?``|`[^`\n]+`/,
  			alias: 'keyword'
  		}
  	],
  	'title': [
  		{
  			// title 1
  			// =======
  
  			// title 2
  			// -------
  			pattern: /\w+.*\n(?:==+|--+)/,
  			alias: 'important',
  			inside: {
  				punctuation: /==+$|--+$/
  			}
  		},
  		{
  			// # title 1
  			// ###### title 6
  			pattern: /((?:^|\n)\s*)#+.+/,
  			lookbehind: true,
  			alias: 'important',
  			inside: {
  				punctuation: /^#+|#+$/
  			}
  		}
  	],
  	'hr': {
  		// ***
  		// ---
  		// * * *
  		// -----------
  		pattern: /((?:^|\n)\s*)([*-])([\t ]*\2){2,}(?=\s*(?:\n|$))/,
  		lookbehind: true,
  		alias: 'punctuation'
  	},
  	'list': {
  		// * item
  		// + item
  		// - item
  		// 1. item
  		pattern: /((?:^|\n)\s*)(?:[*+-]|\d+\.)(?=[\t ].)/,
  		lookbehind: true,
  		alias: 'punctuation'
  	},
  	'url-reference': {
  		// [id]: http://example.com "Optional title"
  		// [id]: http://example.com 'Optional title'
  		// [id]: http://example.com (Optional title)
  		// [id]: <http://example.com> "Optional title"
  		pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:[^>]|\\>)+>)(?:[\t ]+(?:"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|\\\))*\)))?/,
  		inside: {
  			'variable': {
  				pattern: /^(!?\[)[^\]]+/,
  				lookbehind: true
  			},
  			'string': /(?:"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|\\\))*\))$/,
  			'punctuation': /[[\]\(\)<>:]/
  		},
  		alias: 'url'
  	},
  	'bold': {
  		// **strong**
  		// __strong__
  
  		// Allow only one line break
  		pattern: /(^|[^\\])(\*\*|__)(?:\n(?!\n)|.)+?\2/,
  		lookbehind: true,
  		inside: {
  			'punctuation': /^\*\*|^__|\*\*\s*$|__\s*$/
  		}
  	},
  	'italic': {
  		// *em*
  		// _em_
  
  		// Allow only one line break
  		pattern: /(^|[^\\])(?:\*(?:\n(?!\n)|.)+?\*|_(?:\n(?!\n)|.)+?_)/,
  		lookbehind: true,
  		inside: {
  			'punctuation': /^[*_]|[*_]$/
  		}
  	},
  	'url': {
  		// [example](http://example.com "Optional title")
  		// [example] [id]
  		pattern: /!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:[^"]|\\")*")?\)| ?\[[^\]\n]*\])/,
  		inside: {
  			'variable': {
  				pattern: /(!?\[)[^\]]+(?=\]$)/,
  				lookbehind: true
  			},
  			'string': {
  				pattern: /"(?:[^"]|\\")*"(?=\)$)/
  			}
  		}
  	}
  });
  
  Prism.languages.markdown['bold'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);
  Prism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']);
  Prism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.languages.markdown['italic']);
  Prism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.languages.markdown['bold']);