|
|
|
@ -52,6 +52,15 @@ export var conf:IRichLanguageConfiguration = {
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const htmlTokenTypes = {
|
|
|
|
|
DELIM_START: 'start.delimiter.tag',
|
|
|
|
|
DELIM_END: 'end.delimiter.tag',
|
|
|
|
|
DELIM_COMMENT: 'comment',
|
|
|
|
|
getTag: (name: string) => {
|
|
|
|
|
return 'tag';
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export var language = <ILanguage> {
|
|
|
|
|
defaultToken: '',
|
|
|
|
|
tokenPostfix: '.html',
|
|
|
|
@ -61,11 +70,11 @@ export var language = <ILanguage> {
|
|
|
|
|
root: [
|
|
|
|
|
[/<!DOCTYPE/, 'metatag', '@doctype'],
|
|
|
|
|
[/<!--/, 'comment', '@comment'],
|
|
|
|
|
[/<\w+\/>/, 'tag'],
|
|
|
|
|
[/<script/, 'tag', '@script'],
|
|
|
|
|
[/<style/, 'tag', '@style'],
|
|
|
|
|
[/<\w+/, 'tag', '@otherTag'],
|
|
|
|
|
[/<\/\w+/, 'tag', '@otherTag'],
|
|
|
|
|
[/(<)(\w+)(\/>)/, [htmlTokenTypes.DELIM_START, 'tag', htmlTokenTypes.DELIM_END]],
|
|
|
|
|
[/(<)(script)/, [htmlTokenTypes.DELIM_START, { token: 'tag', next: '@script'} ]],
|
|
|
|
|
[/(<)(style)/, [htmlTokenTypes.DELIM_START, { token: 'tag', next: '@style'} ]],
|
|
|
|
|
[/(<)(\w+)/, [htmlTokenTypes.DELIM_START, { token: 'tag', next: '@otherTag'} ]],
|
|
|
|
|
[/(<\/)(\w+)/, [htmlTokenTypes.DELIM_START, { token: 'tag', next: '@otherTag' }]],
|
|
|
|
|
[/[^<]+/] // text
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
@ -81,7 +90,7 @@ export var language = <ILanguage> {
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
otherTag: [
|
|
|
|
|
[/\/?>/, 'tag', '@pop'],
|
|
|
|
|
[/\/?>/, htmlTokenTypes.DELIM_END, '@pop'],
|
|
|
|
|
[/"([^"]*)"/, 'attribute.value'],
|
|
|
|
|
[/'([^']*)'/, 'attribute.value'],
|
|
|
|
|
[/[\w\-]+/, 'attribute.name'],
|
|
|
|
@ -98,9 +107,9 @@ export var language = <ILanguage> {
|
|
|
|
|
[/'([^']*)'/, 'attribute.value'],
|
|
|
|
|
[/[\w\-]+/, 'attribute.name'],
|
|
|
|
|
[/=/, 'delimiter'],
|
|
|
|
|
[/>/, { token: 'tag', next: '@scriptEmbedded', nextEmbedded: 'text/javascript'} ],
|
|
|
|
|
[/>/, { token: htmlTokenTypes.DELIM_END, next: '@scriptEmbedded', nextEmbedded: 'text/javascript'} ],
|
|
|
|
|
[/[ \t\r\n]+/], // whitespace
|
|
|
|
|
[/<\/script\s*>/, 'tag', '@pop']
|
|
|
|
|
[/(<\/)(script\s*)(>)/, [ htmlTokenTypes.DELIM_START, 'tag', { token: htmlTokenTypes.DELIM_END, next: '@pop' } ]]
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
// After <script ... type
|
|
|
|
@ -120,7 +129,7 @@ export var language = <ILanguage> {
|
|
|
|
|
|
|
|
|
|
// After <script ... type = $S2
|
|
|
|
|
scriptWithCustomType: [
|
|
|
|
|
[/>/, { token: 'tag', next: '@scriptEmbedded', nextEmbedded: '$S2'}],
|
|
|
|
|
[/>/, { token: htmlTokenTypes.DELIM_END, next: '@scriptEmbedded.$S2', nextEmbedded: '$S2'}],
|
|
|
|
|
[/[ \t\r\n]+/], // whitespace
|
|
|
|
|
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
|
|
|
|
|
],
|
|
|
|
@ -141,9 +150,9 @@ export var language = <ILanguage> {
|
|
|
|
|
[/'([^']*)'/, 'attribute.value'],
|
|
|
|
|
[/[\w\-]+/, 'attribute.name'],
|
|
|
|
|
[/=/, 'delimiter'],
|
|
|
|
|
[/>/, { token: 'tag', next: '@styleEmbedded', nextEmbedded: 'text/css'} ],
|
|
|
|
|
[/>/, { token: htmlTokenTypes.DELIM_END, next: '@styleEmbedded', nextEmbedded: 'text/css'} ],
|
|
|
|
|
[/[ \t\r\n]+/], // whitespace
|
|
|
|
|
[/<\/style\s*>/, 'tag', '@pop']
|
|
|
|
|
[/(<\/)(style\s*)(>)/, [htmlTokenTypes.DELIM_START, 'tag', { token: htmlTokenTypes.DELIM_END, next: '@pop' } ]]
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
// After <style ... type
|
|
|
|
@ -163,7 +172,7 @@ export var language = <ILanguage> {
|
|
|
|
|
|
|
|
|
|
// After <style ... type = $S2
|
|
|
|
|
styleWithCustomType: [
|
|
|
|
|
[/>/, { token: 'tag', next: '@styleEmbedded', nextEmbedded: '$S2'}],
|
|
|
|
|
[/>/, { token: htmlTokenTypes.DELIM_END, next: '@styleEmbedded.$S2', nextEmbedded: '$S2'}],
|
|
|
|
|
[/[ \t\r\n]+/], // whitespace
|
|
|
|
|
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
|
|
|
|
|
],
|
|
|
|
|