tomlLanguage top-level constant
Grammar
const tomlLanguage
TOML.
Implementation
const tomlLanguage = Grammar(
name: 'toml',
fileExtensions: ['toml'],
fileNames: ['Cargo.lock', 'Pipfile', 'poetry.lock'],
signatures: [
r'^\[\[[\w.-]+\]\]\s*$',
r'^\[(?:package|dependencies|tool\.[\w-]+|workspace|build-system)\]\s*$',
r'^[\w-]+\s*=\s*(?:"[^"]*"|\d+|true|false|\[)\s*$',
],
rules: [
LineComment('#'),
// Table headers: `[a.b]` and `[[array.of.tables]]`.
TokenRule(
'^[ \\t]*\\[\\[[ \\t]*$_dottedKey[ \\t]*\\]\\]',
scope: Scopes.heading,
),
TokenRule('^[ \\t]*\\[[ \\t]*$_dottedKey[ \\t]*\\]', scope: Scopes.heading),
// Keys at the start of a line, or after `{` or `,` in inline tables.
TokenRule('^[ \\t]*$_dottedKey(?=[ \\t]*=)', scope: Scopes.property),
TokenRule(
'([{,])([ \\t]*)($_dottedKey)(?=[ \\t]*=)',
captures: {1: Scopes.punctuation, 3: Scopes.property},
),
QuotedString('"""', multiline: true),
QuotedString("'''", escape: null, multiline: true),
QuotedString('"'),
QuotedString("'", escape: null),
// Offset date-times, local date-times, dates and times.
TokenRule(
r'(?<![\w.:-])\d{4}-\d{2}-\d{2}(?:[Tt ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?'
r'(?:[Zz]|[+-]\d{2}:\d{2})?)?(?![\w:])',
scope: Scopes.number,
),
TokenRule(
r'(?<![\w.:-])\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?![\w:])',
scope: Scopes.number,
),
TokenRule(r'(?<![\w.])[+-]?(?:inf|nan)(?![\w.])', scope: Scopes.number),
TokenRule(r'[+-](?=[0-9])', scope: Scopes.number),
Numbers(),
TokenRule(r'\b(?:true|false)\b', scope: Scopes.literal),
TokenRule('=', scope: Scopes.operator),
TokenRule(r'[\[\]{},]', scope: Scopes.punctuation),
],
);