Files
mediabunny/docs/.vitepress/m3u8-grammar.json
T

113 lines
2.3 KiB
JSON

{
"name": "m3u8",
"scopeName": "source.m3u8",
"fileTypes": ["m3u8"],
"patterns": [
{
"match": "^#EXTM3U$",
"name": "keyword.control.m3u8"
},
{
"begin": "^(#)(EXTINF)(:)",
"beginCaptures": {
"1": { "name": "punctuation.definition.comment.m3u8" },
"2": { "name": "keyword.control.extinf.m3u8" },
"3": { "name": "punctuation.separator.key-value.m3u8" }
},
"end": "$",
"patterns": [
{
"match": "\\b\\d+(?:\\.\\d+)?\\b",
"name": "string.unquoted.m3u8"
},
{
"match": ",",
"name": "punctuation.separator.sequence.m3u8"
},
{
"match": "[^,\\n]+",
"name": "string.unquoted.title.m3u8"
}
]
},
{
"begin": "^(#)(EXT-X-[A-Z0-9-]+|EXT-[A-Z0-9-]+)(:)",
"beginCaptures": {
"1": { "name": "punctuation.definition.comment.m3u8" },
"2": { "name": "keyword.control.tag.m3u8" },
"3": { "name": "punctuation.separator.key-value.m3u8" }
},
"end": "$",
"patterns": [
{
"include": "#attribute-list"
},
{
"match": "\\b(?:YES|NO)\\b",
"name": "string.unquoted.m3u8"
},
{
"match": "\\b\\d+(?:\\.\\d+)?\\b",
"name": "string.unquoted.m3u8"
},
{
"match": "[^,\\n]+",
"name": "string.unquoted.m3u8"
}
]
},
{
"match": "^(#)(EXT-X-[A-Z0-9-]+|EXT-[A-Z0-9-]+)$",
"captures": {
"1": { "name": "punctuation.definition.comment.m3u8" },
"2": { "name": "keyword.control.tag.m3u8" }
}
},
{
"match": "^[^#\\s][^\\n]*$",
"name": "source.m3u8.uri"
},
{
"match": "#.*$",
"name": "comment.line.number-sign.m3u8"
}
],
"repository": {
"attribute-list": {
"patterns": [
{
"match": "\\b[A-Z0-9-]+(?==)",
"name": "variable.parameter.m3u8"
},
{
"match": "=",
"name": "keyword.operator.assignment.m3u8"
},
{
"match": ",",
"name": "punctuation.separator.sequence.m3u8"
},
{
"match": "\"[^\"]*\"",
"name": "string.quoted.double.m3u8"
},
{
"match": "\\b\\d+x\\d+\\b",
"name": "string.unquoted.m3u8"
},
{
"match": "\\b\\d+(?:\\.\\d+)?\\b",
"name": "string.unquoted.m3u8"
},
{
"match": "\\b(?:YES|NO)\\b",
"name": "string.unquoted.m3u8"
},
{
"match": "\\b[A-Z0-9_-]+\\b",
"name": "string.unquoted.m3u8"
}
]
}
}
}