Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: lib/src/prism/components/prism-jade.js

Issue 1418513006: update elements and fix some bugs (Closed) Base URL: git@github.com:dart-lang/polymer_elements.git@master
Patch Set: code review updates Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/src/prism/components/prism-j.min.js ('k') | lib/src/prism/components/prism-jade.min.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 (function(Prism) { 1 (function(Prism) {
2 // TODO:
3 // - Add CSS highlighting inside <style> tags
4 // - Add support for multi-line code blocks
5 // - Add support for interpolation #{} and !{}
6 // - Add support for tag interpolation #[]
7 // - Add explicit support for plain text using |
8 // - Add support for markup embedded in plain text
9
2 Prism.languages.jade = { 10 Prism.languages.jade = {
3 11
4 // Multiline stuff should appear before the rest 12 // Multiline stuff should appear before the rest
5 13
6 » » 'multiline-comment': { 14 » » // This handles both single-line and multi-line comments
7 » » » pattern: /((?:^|\n)([\t ]*))\/\/.*(\n\2[\t ]+.+)*/, 15 » » 'comment': {
8 » » » lookbehind: true, 16 » » » pattern: /(^([\t ]*))\/\/.*((?:\r?\n|\r)\2[\t ]+.+)*/m,
9 » » » alias: 'comment' 17 » » » lookbehind: true
10 }, 18 },
11 19
12 // All the tag-related part is in lookbehind 20 // All the tag-related part is in lookbehind
13 // so that it can be highlighted by the "tag" pattern 21 // so that it can be highlighted by the "tag" pattern
14 'multiline-script': { 22 'multiline-script': {
15 » » » pattern: /((?:^|\n)([\t ]*)script\b.*\.[\t ]*)(\n(?:\2[\ t ]+.+|\s*?(?=\n)))+/, 23 » » » pattern: /(^([\t ]*)script\b.*\.[\t ]*)((?:\r?\n|\r(?!\n ))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,
16 lookbehind: true, 24 lookbehind: true,
17 inside: { 25 inside: {
18 rest: Prism.languages.javascript 26 rest: Prism.languages.javascript
19 } 27 }
20 }, 28 },
21 29
22 // See at the end of the file for known filters 30 // See at the end of the file for known filters
23 'filter': { 31 'filter': {
24 » » » pattern: /((?:^|\n)([\t ]*)):.+(\n(?:\2[\t ]+.+|\s*?(?=\ n)))+/, 32 » » » pattern: /(^([\t ]*)):.+((?:\r?\n|\r(?!\n))(?:\2[\t ]+.+ |\s*?(?=\r?\n|\r)))+/m,
25 lookbehind: true, 33 lookbehind: true,
26 inside: { 34 inside: {
27 'filter-name': { 35 'filter-name': {
28 pattern: /^:[\w-]+/, 36 pattern: /^:[\w-]+/,
29 alias: 'variable' 37 alias: 'variable'
30 } 38 }
31 } 39 }
32 }, 40 },
33 41
34 'multiline-plain-text': { 42 'multiline-plain-text': {
35 » » » pattern: /((?:^|\n)([\t ]*)[\w\-#.]+\.[\t ]*)(\n(?:\2[\t ]+.+|\s*?(?=\n)))+/, 43 » » » pattern: /(^([\t ]*)[\w\-#.]+\.[\t ]*)((?:\r?\n|\r(?!\n) )(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,
36 lookbehind: true 44 lookbehind: true
37 }, 45 },
38 'markup': { 46 'markup': {
39 » » » pattern: /((?:^|\n)[\t ]*)<.+/, 47 » » » pattern: /(^[\t ]*)<.+/m,
40 lookbehind: true, 48 lookbehind: true,
41 inside: { 49 inside: {
42 rest: Prism.languages.markup 50 rest: Prism.languages.markup
43 } 51 }
44 }, 52 },
45 'comment': {
46 pattern: /((?:^|\n)[\t ]*)\/\/.+/,
47 lookbehind: true
48 },
49 'doctype': { 53 'doctype': {
50 pattern: /((?:^|\n)[\t ]*)doctype(?: .+)?/, 54 pattern: /((?:^|\n)[\t ]*)doctype(?: .+)?/,
51 lookbehind: true 55 lookbehind: true
52 }, 56 },
53 57
54 // This handle all conditional and loop keywords 58 // This handle all conditional and loop keywords
55 'flow-control': { 59 'flow-control': {
56 » » » pattern: /((?:^|\n)[\t ]*)(?:if|unless|else|case|when|de fault|each|while)(?: .+)?/, 60 » » » pattern: /(^[\t ]*)(?:if|unless|else|case|when|default|e ach|while)\b(?: .+)?/m,
57 lookbehind: true, 61 lookbehind: true,
58 inside: { 62 inside: {
59 'each': { 63 'each': {
60 » » » » » pattern: /((?:^|\n)[\t ]*)each .+? in\b/ , 64 » » » » » pattern: /^each .+? in\b/,
61 » » » » » lookbehind: true,
62 inside: { 65 inside: {
63 'keyword': /\b(?:each|in)\b/, 66 'keyword': /\b(?:each|in)\b/,
64 'punctuation': /,/ 67 'punctuation': /,/
65 } 68 }
66 }, 69 },
67 'branch': { 70 'branch': {
68 » » » » » pattern: /((?:^|\n)[\t ]*)(?:if|unless|e lse|case|when|default|while)/, 71 » » » » » pattern: /^(?:if|unless|else|case|when|d efault|while)\b/,
69 » » » » » lookbehind: true,
70 alias: 'keyword' 72 alias: 'keyword'
71 }, 73 },
72 rest: Prism.languages.javascript 74 rest: Prism.languages.javascript
73 } 75 }
74 }, 76 },
75 'keyword': { 77 'keyword': {
76 » » » pattern: /((?:^|\n)[\t ]*)(?:block|extends|include|appen d|prepend)\b.+/, 78 » » » pattern: /(^[\t ]*)(?:block|extends|include|append|prepe nd)\b.+/m,
77 lookbehind: true 79 lookbehind: true
78 }, 80 },
79 'mixin': [ 81 'mixin': [
80 // Declaration 82 // Declaration
81 { 83 {
82 » » » » pattern: /((?:^|\n)[\t ]*)mixin .+/, 84 » » » » pattern: /(^[\t ]*)mixin .+/m,
83 lookbehind: true, 85 lookbehind: true,
84 inside: { 86 inside: {
85 'keyword': /^mixin/, 87 'keyword': /^mixin/,
86 'function': /\w+(?=\s*\(|\s*$)/, 88 'function': /\w+(?=\s*\(|\s*$)/,
87 'punctuation': /[(),.]/ 89 'punctuation': /[(),.]/
88 } 90 }
89 }, 91 },
90 // Usage 92 // Usage
91 { 93 {
92 » » » » pattern: /((?:^|\n)[\t ]*)\+.+/, 94 » » » » pattern: /(^[\t ]*)\+.+/m,
93 lookbehind: true, 95 lookbehind: true,
94 inside: { 96 inside: {
95 'name': { 97 'name': {
96 pattern: /^\+\w+/, 98 pattern: /^\+\w+/,
97 alias: 'function' 99 alias: 'function'
98 }, 100 },
99 'rest': Prism.languages.javascript 101 'rest': Prism.languages.javascript
100 } 102 }
101 } 103 }
102 ], 104 ],
103 'script': { 105 'script': {
104 » » » pattern: /((?:^|\n)[\t ]*script(?:(?:&[^(]+)?\([^)]+\))* ) .+/, 106 » » » pattern: /(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]+) .+/m,
105 lookbehind: true, 107 lookbehind: true,
106 inside: { 108 inside: {
107 rest: Prism.languages.javascript 109 rest: Prism.languages.javascript
108 } 110 }
109 }, 111 },
110 112
111 'plain-text': { 113 'plain-text': {
112 » » » » pattern: /((?:^|\n)[\t ]*(?!-)[\w\-#.]*[\w\-](?: (?:&[^(]+)?\([^)]+\))*\/?[\t ]+).+/, 114 » » » pattern: /(^[\t ]*(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^ )]+\))*\/?[\t ]+).+/m,
113 » » » » lookbehind: true 115 » » » lookbehind: true
114 }, 116 },
115 'tag': { 117 'tag': {
116 » » » pattern: /((?:^|\n)[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^( ]+)?\([^)]+\))*\/?:?/, 118 » » » pattern: /(^[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([ ^)]+\))*\/?:?/m,
117 lookbehind: true, 119 lookbehind: true,
118 inside: { 120 inside: {
119 'attributes': [ 121 'attributes': [
120 { 122 {
121 pattern: /&[^(]+\([^)]+\)/, 123 pattern: /&[^(]+\([^)]+\)/,
122 inside: { 124 inside: {
123 rest: Prism.languages.ja vascript 125 rest: Prism.languages.ja vascript
124 } 126 }
125 }, 127 },
126 { 128 {
127 pattern: /\([^)]+\)/, 129 pattern: /\([^)]+\)/,
128 inside: { 130 inside: {
129 'attr-value': { 131 'attr-value': {
130 » » » » » » » » pattern: /(=\s*) (?:\{[^}]*\}|[^,)\n]+)/, 132 » » » » » » » » pattern: /(=\s*) (?:\{[^}]*\}|[^,)\r\n]+)/,
131 lookbehind: true , 133 lookbehind: true ,
132 inside: { 134 inside: {
133 rest: Pr ism.languages.javascript 135 rest: Pr ism.languages.javascript
134 } 136 }
135 }, 137 },
136 'attr-name': /[\w-]+(?=\ s*!?=|\s*[,)])/, 138 'attr-name': /[\w-]+(?=\ s*!?=|\s*[,)])/,
137 » » » » » » » 'punctuation': /[!=(),]/ 139 » » » » » » » 'punctuation': /[!=(),]+ /
138 } 140 }
139 } 141 }
140 ], 142 ],
141 » » » » 'punctuation': /[:]/ 143 » » » » 'punctuation': /:/
142 } 144 }
143 }, 145 },
144 'code': [ 146 'code': [
145 { 147 {
146 » » » » pattern: /((?:^|\n)[\t ]*(?:-|!?=)).+/, 148 » » » » pattern: /(^[\t ]*(?:-|!?=)).+/m,
147 lookbehind: true, 149 lookbehind: true,
148 inside: { 150 inside: {
149 rest: Prism.languages.javascript 151 rest: Prism.languages.javascript
150 } 152 }
151 } 153 }
152 ], 154 ],
153 » » 'punctuation': /[.\-!=|]/ 155 » » 'punctuation': /[.\-!=|]+/
154 }; 156 };
155 157
156 » var filter_pattern = '((?:^|\\n)([\\t ]*)):{{filter_name}}(\\n(?:\\2[\\t ]+.+|\\s*?(?=\\n)))+'; 158 » var filter_pattern = '(^([\\t ]*)):{{filter_name}}((?:\\r?\\n|\\r(?!\\n) )(?:\\2[\\t ]+.+|\\s*?(?=\\r?\\n|\\r)))+';
157 159
158 // Non exhaustive list of available filters and associated languages 160 // Non exhaustive list of available filters and associated languages
159 var filters = [ 161 var filters = [
160 {filter:'atpl',language:'twig'}, 162 {filter:'atpl',language:'twig'},
161 {filter:'coffee',language:'coffeescript'}, 163 {filter:'coffee',language:'coffeescript'},
162 'ejs', 164 'ejs',
163 'handlebars', 165 'handlebars',
164 'hogan', 166 'hogan',
165 'less', 167 'less',
166 'livescript', 168 'livescript',
167 'markdown', 169 'markdown',
168 'mustache', 170 'mustache',
169 'plates', 171 'plates',
170 {filter:'sass',language:'scss'}, 172 {filter:'sass',language:'scss'},
171 'stylus', 173 'stylus',
172 'swig' 174 'swig'
173 175
174 ]; 176 ];
175 var all_filters = {}; 177 var all_filters = {};
176 for (var i = 0, l = filters.length; i < l; i++) { 178 for (var i = 0, l = filters.length; i < l; i++) {
177 var filter = filters[i]; 179 var filter = filters[i];
178 filter = typeof filter === 'string' ? {filter: filter, language: filter} : filter; 180 filter = typeof filter === 'string' ? {filter: filter, language: filter} : filter;
179 if (Prism.languages[filter.language]) { 181 if (Prism.languages[filter.language]) {
180 all_filters['filter-' + filter.filter] = { 182 all_filters['filter-' + filter.filter] = {
181 » » » » pattern: RegExp(filter_pattern.replace('{{filter _name}}', filter.filter)), 183 » » » » pattern: RegExp(filter_pattern.replace('{{filter _name}}', filter.filter), 'm'),
182 lookbehind: true, 184 lookbehind: true,
183 inside: { 185 inside: {
184 'filter-name': { 186 'filter-name': {
185 pattern: /^:[\w-]+/, 187 pattern: /^:[\w-]+/,
186 alias: 'variable' 188 alias: 'variable'
187 }, 189 },
188 rest: Prism.languages[filter.language] 190 rest: Prism.languages[filter.language]
189 } 191 }
190 } 192 }
191 } 193 }
192 } 194 }
193 195
194 Prism.languages.insertBefore('jade', 'filter', all_filters); 196 Prism.languages.insertBefore('jade', 'filter', all_filters);
195 197
196 }(Prism)); 198 }(Prism));
OLDNEW
« no previous file with comments | « lib/src/prism/components/prism-j.min.js ('k') | lib/src/prism/components/prism-jade.min.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698