-
Notifications
You must be signed in to change notification settings - Fork 2
/
prism-scss-sassdoc.js
120 lines (105 loc) · 2.95 KB
/
prism-scss-sassdoc.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
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
/* global Prism */
(function () {
var _annotation = '@\\w+'
// Match an annotation
var annotation = {
pattern: RegExp('^' + _annotation, 'gi'),
alias: 'atrule'
}
var _type = '{[^}]+}'
// Match a type (always following an annotation)
var type = {
pattern: RegExp('^(' + _annotation + ')\\s+' + _type, 'gi'),
lookbehind: true,
alias: 'string'
}
var _param = '[\\$%]?[\\w\\._-]+'
// Match a param (always following an annotation and optionally a type)
var param = {
pattern: RegExp('^(' + _annotation + '(\\s+' + _type + ')?)\\s+' + _param, 'gi'),
lookbehind: true,
alias: 'variable'
}
// Match a delimited URL
var url = /<[^>]+>/g
Prism.languages.insertBefore('scss', 'comment', {
'docblock': {
pattern: /(^|[^\\])(\/\*\*[\w\W]*?\*\/|\/\/\/.*?(\r?\n|$))/g,
lookbehind: true,
alias: 'comment',
inside: {
// Annotation with param
'annotation-param': {
pattern: /@(access|example|alias|since)( .*|\n)/g,
inside: {
'param': param,
'annotation': annotation,
'url': url
}
},
// Annotation with type and param
'annotation-type-param-default': {
pattern: /@(param|arg(ument)?|prop|requires|see)( .*|\r?\n|$)/g,
inside: {
'default': {
pattern: RegExp('^(' + _annotation + '(\\s+' + _type + ')?\\s+' + _param + ')\\s+\\[[^\\)]+\\]', 'gi'),
lookbehind: true,
alias: 'string'
},
'param': param,
'type': type,
'annotation': annotation,
'url': url
}
},
// Annotation with only type
'annotation-type': {
pattern: /@(returns?)( .*|\r?\n|$)/g,
inside: {
'type': type,
'annotation': annotation,
'url': url
}
},
// Annation with an URL
'annotation-url': {
pattern: /@(link|source)( .*|\r?\n|$)/g,
inside: {
'annotation': annotation,
'url': /[^ ]+/
}
},
// Type annotation
'annotation-type-custom': {
pattern: /@(type)( .*|\r?\n|$)/g,
inside: {
'annotation': annotation,
'type': {
pattern: /.*/,
alias: 'string'
}
}
},
// Group annotation
'annotation-group-custom': {
pattern: /@(group)( .*|\r?\n|$)/g,
inside: {
'annotation': annotation,
'group': {
pattern: /.*/,
alias: 'variable'
}
}
},
// Other annotations
'annotation-single': {
pattern: /@(content|deprecated|ignore|output|author|todo|throws?|exception)( .*|\r?\n|$)/g,
inside: {
'annotation': annotation,
'url': url
}
}
}
}
})
}())