mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-09-11 11:15:24 +03:00
Manual decaf language-toml
This commit is contained in:
parent
12c64d9336
commit
1d00fe2368
@ -1,349 +0,0 @@
|
|||||||
describe "TOML grammar", ->
|
|
||||||
grammar = null
|
|
||||||
|
|
||||||
beforeEach ->
|
|
||||||
waitsForPromise ->
|
|
||||||
atom.packages.activatePackage("language-toml")
|
|
||||||
|
|
||||||
runs ->
|
|
||||||
atom.config.set('core.useTreeSitterParsers', false)
|
|
||||||
grammar = atom.grammars.grammarForScopeName('source.toml')
|
|
||||||
|
|
||||||
it "parses the grammar", ->
|
|
||||||
expect(grammar).toBeTruthy()
|
|
||||||
expect(grammar.scopeName).toBe "source.toml"
|
|
||||||
|
|
||||||
it "tokenizes comments", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("# I am a comment")
|
|
||||||
expect(tokens[0]).toEqual value: "#", scopes: ["source.toml", "comment.line.number-sign.toml", "punctuation.definition.comment.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: " I am a comment", scopes: ["source.toml", "comment.line.number-sign.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("# = I am also a comment!")
|
|
||||||
expect(tokens[0]).toEqual value: "#", scopes: ["source.toml", "comment.line.number-sign.toml", "punctuation.definition.comment.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: " = I am also a comment!", scopes: ["source.toml", "comment.line.number-sign.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("#Nope = still a comment")
|
|
||||||
expect(tokens[0]).toEqual value: "#", scopes: ["source.toml", "comment.line.number-sign.toml", "punctuation.definition.comment.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "Nope = still a comment", scopes: ["source.toml", "comment.line.number-sign.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine(" #Whitespace = tricky")
|
|
||||||
expect(tokens[1]).toEqual value: "#", scopes: ["source.toml", "comment.line.number-sign.toml", "punctuation.definition.comment.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "Whitespace = tricky", scopes: ["source.toml", "comment.line.number-sign.toml"]
|
|
||||||
|
|
||||||
it "tokenizes strings", ->
|
|
||||||
{tokens} = grammar.tokenizeLine('foo = "I am a string"')
|
|
||||||
expect(tokens[4]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: 'I am a string', scopes: ["source.toml", "string.quoted.double.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine('foo = "I\'m \\n escaped"')
|
|
||||||
expect(tokens[4]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: "I'm ", scopes: ["source.toml", "string.quoted.double.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: "\\n", scopes: ["source.toml", "string.quoted.double.toml", "constant.character.escape.toml"]
|
|
||||||
expect(tokens[7]).toEqual value: " escaped", scopes: ["source.toml", "string.quoted.double.toml"]
|
|
||||||
expect(tokens[8]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 'I am not \\n escaped'")
|
|
||||||
expect(tokens[4]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: 'I am not \\n escaped', scopes: ["source.toml", "string.quoted.single.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine('foo = "Equal sign ahead = no problem"')
|
|
||||||
expect(tokens[4]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: 'Equal sign ahead = no problem', scopes: ["source.toml", "string.quoted.double.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
it "does not tokenize equal signs within strings", ->
|
|
||||||
{tokens} = grammar.tokenizeLine('pywinusb = { version = "*", os_name = "==\'nt\'", index="pypi"}')
|
|
||||||
expect(tokens[20]).toEqual value: "=='nt'", scopes: ["source.toml", "string.quoted.double.toml"]
|
|
||||||
|
|
||||||
it "tokenizes multiline strings", ->
|
|
||||||
lines = grammar.tokenizeLines '''foo = """
|
|
||||||
I am a
|
|
||||||
string
|
|
||||||
"""
|
|
||||||
'''
|
|
||||||
expect(lines[0][4]).toEqual value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(lines[1][0]).toEqual value: 'I am a', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[2][0]).toEqual value: 'string', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[3][0]).toEqual value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
lines = grammar.tokenizeLines """foo = '''
|
|
||||||
I am a
|
|
||||||
string
|
|
||||||
'''
|
|
||||||
"""
|
|
||||||
expect(lines[0][4]).toEqual value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(lines[1][0]).toEqual value: 'I am a', scopes: ["source.toml", "string.quoted.single.block.toml"]
|
|
||||||
expect(lines[2][0]).toEqual value: 'string', scopes: ["source.toml", "string.quoted.single.block.toml"]
|
|
||||||
expect(lines[3][0]).toEqual value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
it "tokenizes escape characters in double-quoted multiline strings", ->
|
|
||||||
lines = grammar.tokenizeLines '''foo = """
|
|
||||||
I am\\u0020a
|
|
||||||
\\qstring
|
|
||||||
with\\UaBcDE3F2escape characters\\nyay
|
|
||||||
"""
|
|
||||||
'''
|
|
||||||
expect(lines[0][4]).toEqual value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(lines[1][0]).toEqual value: 'I am', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[1][1]).toEqual value: '\\u0020', scopes: ["source.toml", "string.quoted.double.block.toml", "constant.character.escape.toml"]
|
|
||||||
expect(lines[2][0]).toEqual value: '\\qstring', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[3][0]).toEqual value: 'with', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[3][1]).toEqual value: '\\UaBcDE3F2', scopes: ["source.toml", "string.quoted.double.block.toml", "constant.character.escape.toml"]
|
|
||||||
expect(lines[3][2]).toEqual value: 'escape characters', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[3][3]).toEqual value: '\\n', scopes: ["source.toml", "string.quoted.double.block.toml", "constant.character.escape.toml"]
|
|
||||||
expect(lines[3][4]).toEqual value: 'yay', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[4][0]).toEqual value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
it "tokenizes line continuation characters in double-quoted multiline strings", ->
|
|
||||||
lines = grammar.tokenizeLines '''foo = """
|
|
||||||
I am a
|
|
||||||
string \\
|
|
||||||
with line-continuation\\ \t
|
|
||||||
yay
|
|
||||||
"""
|
|
||||||
'''
|
|
||||||
expect(lines[0][4]).toEqual value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(lines[1][0]).toEqual value: 'I am a', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[2][0]).toEqual value: 'string ', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[2][1]).toEqual value: '\\', scopes: ["source.toml", "string.quoted.double.block.toml", "constant.character.escape.toml"]
|
|
||||||
expect(lines[3][0]).toEqual value: 'with line-continuation', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[3][1]).toEqual value: '\\', scopes: ["source.toml", "string.quoted.double.block.toml", "constant.character.escape.toml"]
|
|
||||||
expect(lines[3][2]).toEqual value: ' \t', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[4][0]).toEqual value: 'yay', scopes: ["source.toml", "string.quoted.double.block.toml"]
|
|
||||||
expect(lines[5][0]).toEqual value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
it "tokenizes escape characters in double-quoted multiline strings", ->
|
|
||||||
lines = grammar.tokenizeLines """foo = '''
|
|
||||||
I am\\u0020a
|
|
||||||
\\qstring
|
|
||||||
with\\UaBcDE3F2no escape characters\\naw
|
|
||||||
'''
|
|
||||||
"""
|
|
||||||
expect(lines[0][4]).toEqual value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(lines[1][0]).toEqual value: 'I am\\u0020a', scopes: ["source.toml", "string.quoted.single.block.toml"]
|
|
||||||
expect(lines[2][0]).toEqual value: '\\qstring', scopes: ["source.toml", "string.quoted.single.block.toml"]
|
|
||||||
expect(lines[3][0]).toEqual value: 'with\\UaBcDE3F2no escape characters\\naw', scopes: ["source.toml", "string.quoted.single.block.toml"]
|
|
||||||
expect(lines[4][0]).toEqual value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
it "does not tokenize line continuation characters in single-quoted multiline strings", ->
|
|
||||||
lines = grammar.tokenizeLines """foo = '''
|
|
||||||
I am a
|
|
||||||
string \\
|
|
||||||
with no line-continuation\\ \t
|
|
||||||
aw
|
|
||||||
'''
|
|
||||||
"""
|
|
||||||
expect(lines[0][4]).toEqual value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(lines[1][0]).toEqual value: 'I am a', scopes: ["source.toml", "string.quoted.single.block.toml"]
|
|
||||||
expect(lines[2][0]).toEqual value: 'string \\', scopes: ["source.toml", "string.quoted.single.block.toml"]
|
|
||||||
expect(lines[3][0]).toEqual value: 'with no line-continuation\\ \t', scopes: ["source.toml", "string.quoted.single.block.toml"]
|
|
||||||
expect(lines[4][0]).toEqual value: 'aw', scopes: ["source.toml", "string.quoted.single.block.toml"]
|
|
||||||
expect(lines[5][0]).toEqual value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
|
|
||||||
it "tokenizes booleans", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = true")
|
|
||||||
expect(tokens[4]).toEqual value: "true", scopes: ["source.toml", "constant.language.boolean.true.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = false")
|
|
||||||
expect(tokens[4]).toEqual value: "false", scopes: ["source.toml", "constant.language.boolean.false.toml"]
|
|
||||||
|
|
||||||
it "tokenizes integers", ->
|
|
||||||
for int in ["+99", "42", "0", "-17", "1_000", "1_2_3_4_5"]
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = #{int}")
|
|
||||||
expect(tokens[4]).toEqual value: int, scopes: ["source.toml", "constant.numeric.toml"]
|
|
||||||
|
|
||||||
it "does not tokenize a number with leading zeros as an integer", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 01")
|
|
||||||
expect(tokens[4]).toEqual value: "01", scopes: ["source.toml", "invalid.illegal.toml"]
|
|
||||||
|
|
||||||
it "does not tokenize a number with an underscore not followed by a digit as an integer", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 1__2")
|
|
||||||
expect(tokens[4]).toEqual value: "1__2", scopes: ["source.toml", "invalid.illegal.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 1_")
|
|
||||||
expect(tokens[4]).toEqual value: "1_", scopes: ["source.toml", "invalid.illegal.toml"]
|
|
||||||
|
|
||||||
it "tokenizes hex integers", ->
|
|
||||||
for int in ["0xDEADBEEF", "0xdeadbeef", "0xdead_beef"]
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = #{int}")
|
|
||||||
expect(tokens[4]).toEqual value: int, scopes: ["source.toml", "constant.numeric.hex.toml"]
|
|
||||||
|
|
||||||
it "tokenizes octal integers", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 0o755")
|
|
||||||
expect(tokens[4]).toEqual value: "0o755", scopes: ["source.toml", "constant.numeric.octal.toml"]
|
|
||||||
|
|
||||||
it "tokenizes binary integers", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 0b11010110")
|
|
||||||
expect(tokens[4]).toEqual value: "0b11010110", scopes: ["source.toml", "constant.numeric.binary.toml"]
|
|
||||||
|
|
||||||
it "does not tokenize a number followed by other characters as a number", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 0xdeadbeefs")
|
|
||||||
expect(tokens[4]).toEqual value: "0xdeadbeefs", scopes: ["source.toml", "invalid.illegal.toml"]
|
|
||||||
|
|
||||||
it "tokenizes floats", ->
|
|
||||||
for float in ["+1.0", "3.1415", "-0.01", "5e+22", "1e6", "-2E-2", "6.626e-34", "6.626e-34", "9_224_617.445_991_228_313", "1e1_000"]
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = #{float}")
|
|
||||||
expect(tokens[4]).toEqual value: float, scopes: ["source.toml", "constant.numeric.toml"]
|
|
||||||
|
|
||||||
it "tokenizes inf and nan", ->
|
|
||||||
for sign in ["+", "-", ""]
|
|
||||||
for float in ["inf", "nan"]
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = #{sign}#{float}")
|
|
||||||
expect(tokens[4]).toEqual value: "#{sign}#{float}", scopes: ["source.toml", "constant.numeric.#{float}.toml"]
|
|
||||||
|
|
||||||
it "tokenizes offset date-times", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 1979-05-27T07:32:00Z")
|
|
||||||
expect(tokens[4]).toEqual value: "1979-05-27", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: "T", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.time.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: "07:32:00", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
expect(tokens[7]).toEqual value: "Z", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.offset.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 1979-05-27 07:32:00Z")
|
|
||||||
expect(tokens[4]).toEqual value: "1979-05-27", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: " ", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.time.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: "07:32:00", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
expect(tokens[7]).toEqual value: "Z", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.offset.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 1979-05-27T00:32:00.999999-07:00")
|
|
||||||
expect(tokens[4]).toEqual value: "1979-05-27", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: "T", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.time.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: "00:32:00.999999", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
expect(tokens[7]).toEqual value: "-", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.offset.toml"]
|
|
||||||
expect(tokens[8]).toEqual value: "07:00", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
|
|
||||||
it "tokenizes local date-times", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 1979-05-27T00:32:00.999999")
|
|
||||||
expect(tokens[4]).toEqual value: "1979-05-27", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: "T", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.time.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: "00:32:00.999999", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
|
|
||||||
it "tokenizes local dates", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 1979-05-27")
|
|
||||||
expect(tokens[4]).toEqual value: "1979-05-27", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
|
|
||||||
it "tokenizes local times", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("foo = 00:32:00.999999")
|
|
||||||
expect(tokens[4]).toEqual value: "00:32:00.999999", scopes: ["source.toml", "constant.numeric.date.toml"]
|
|
||||||
|
|
||||||
it "tokenizes tables", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("[table]")
|
|
||||||
expect(tokens[0]).toEqual value: "[", scopes: ["source.toml", "entity.name.section.table.toml", "punctuation.definition.table.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "table", scopes: ["source.toml", "entity.name.section.table.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "]", scopes: ["source.toml", "entity.name.section.table.toml", "punctuation.definition.table.end.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine(" [table]")
|
|
||||||
expect(tokens[0]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "[", scopes: ["source.toml", "entity.name.section.table.toml", "punctuation.definition.table.begin.toml"]
|
|
||||||
# and so on
|
|
||||||
|
|
||||||
it "tokenizes table arrays", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("[[table]]")
|
|
||||||
expect(tokens[0]).toEqual value: "[[", scopes: ["source.toml", "entity.name.section.table.array.toml", "punctuation.definition.table.array.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "table", scopes: ["source.toml", "entity.name.section.table.array.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "]]", scopes: ["source.toml", "entity.name.section.table.array.toml", "punctuation.definition.table.array.end.toml"]
|
|
||||||
|
|
||||||
it "tokenizes keys", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("key =")
|
|
||||||
expect(tokens[0]).toEqual value: "key", scopes: ["source.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("1key_-34 =")
|
|
||||||
expect(tokens[0]).toEqual value: "1key_-34", scopes: ["source.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("ʎǝʞ =")
|
|
||||||
expect(tokens[0]).toEqual value: "ʎǝʞ =", scopes: ["source.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine(" =")
|
|
||||||
expect(tokens[0]).toEqual value: " =", scopes: ["source.toml"]
|
|
||||||
|
|
||||||
it "tokenizes quoted keys", ->
|
|
||||||
{tokens} = grammar.tokenizeLine("'key' =")
|
|
||||||
expect(tokens[0]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "key", scopes: ["source.toml", "string.quoted.single.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("'ʎǝʞ' =")
|
|
||||||
expect(tokens[0]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "ʎǝʞ", scopes: ["source.toml", "string.quoted.single.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("'key with spaces' =")
|
|
||||||
expect(tokens[0]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "key with spaces", scopes: ["source.toml", "string.quoted.single.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("'key with colons:' =")
|
|
||||||
expect(tokens[0]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "key with colons:", scopes: ["source.toml", "string.quoted.single.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine("'' =")
|
|
||||||
expect(tokens[0]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine('"key" =')
|
|
||||||
expect(tokens[0]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "key", scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine('"ʎǝʞ" =')
|
|
||||||
expect(tokens[0]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "ʎǝʞ", scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine('"key with spaces" =')
|
|
||||||
expect(tokens[0]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "key with spaces", scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine('"key with colons:" =')
|
|
||||||
expect(tokens[0]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "key with colons:", scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine('"key wi\\th escapes" =')
|
|
||||||
expect(tokens[0]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "key wi", scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: "\\t", scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml", "constant.character.escape.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: "h escapes", scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine('"key with \\" quote" =')
|
|
||||||
expect(tokens[0]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: "key with ", scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: '\\"', scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml", "constant.character.escape.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: " quote", scopes: ["source.toml", "string.quoted.double.toml", "variable.other.key.toml"]
|
|
||||||
expect(tokens[4]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[5]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[6]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
||||||
|
|
||||||
{tokens} = grammar.tokenizeLine('"" =')
|
|
||||||
expect(tokens[0]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]
|
|
||||||
expect(tokens[1]).toEqual value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]
|
|
||||||
expect(tokens[2]).toEqual value: " ", scopes: ["source.toml"]
|
|
||||||
expect(tokens[3]).toEqual value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]
|
|
@ -1,24 +1,19 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* DS205: Consider reworking code to avoid use of IIFEs
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
describe("TOML grammar", function() {
|
describe("TOML grammar", function() {
|
||||||
let grammar = null;
|
let grammar = null;
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
waitsForPromise(() => atom.packages.activatePackage("language-toml"));
|
waitsForPromise(() => atom.packages.activatePackage("language-toml"));
|
||||||
|
|
||||||
return runs(function() {
|
runs(function() {
|
||||||
atom.config.set('core.useTreeSitterParsers', false);
|
atom.config.set('core.useTreeSitterParsers', false);
|
||||||
return grammar = atom.grammars.grammarForScopeName('source.toml');
|
grammar = atom.grammars.grammarForScopeName('source.toml');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("parses the grammar", function() {
|
it("parses the grammar", function() {
|
||||||
expect(grammar).toBeTruthy();
|
expect(grammar).toBeTruthy();
|
||||||
return expect(grammar.scopeName).toBe("source.toml");
|
expect(grammar.scopeName).toBe("source.toml");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes comments", function() {
|
it("tokenizes comments", function() {
|
||||||
@ -36,7 +31,7 @@ describe("TOML grammar", function() {
|
|||||||
|
|
||||||
({tokens} = grammar.tokenizeLine(" #Whitespace = tricky"));
|
({tokens} = grammar.tokenizeLine(" #Whitespace = tricky"));
|
||||||
expect(tokens[1]).toEqual({value: "#", scopes: ["source.toml", "comment.line.number-sign.toml", "punctuation.definition.comment.toml"]});
|
expect(tokens[1]).toEqual({value: "#", scopes: ["source.toml", "comment.line.number-sign.toml", "punctuation.definition.comment.toml"]});
|
||||||
return expect(tokens[2]).toEqual({value: "Whitespace = tricky", scopes: ["source.toml", "comment.line.number-sign.toml"]});
|
expect(tokens[2]).toEqual({value: "Whitespace = tricky", scopes: ["source.toml", "comment.line.number-sign.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes strings", function() {
|
it("tokenizes strings", function() {
|
||||||
@ -60,12 +55,12 @@ describe("TOML grammar", function() {
|
|||||||
({tokens} = grammar.tokenizeLine('foo = "Equal sign ahead = no problem"'));
|
({tokens} = grammar.tokenizeLine('foo = "Equal sign ahead = no problem"'));
|
||||||
expect(tokens[4]).toEqual({value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]});
|
expect(tokens[4]).toEqual({value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]});
|
||||||
expect(tokens[5]).toEqual({value: 'Equal sign ahead = no problem', scopes: ["source.toml", "string.quoted.double.toml"]});
|
expect(tokens[5]).toEqual({value: 'Equal sign ahead = no problem', scopes: ["source.toml", "string.quoted.double.toml"]});
|
||||||
return expect(tokens[6]).toEqual({value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]});
|
expect(tokens[6]).toEqual({value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not tokenize equal signs within strings", function() {
|
it("does not tokenize equal signs within strings", function() {
|
||||||
const {tokens} = grammar.tokenizeLine('pywinusb = { version = "*", os_name = "==\'nt\'", index="pypi"}');
|
const {tokens} = grammar.tokenizeLine('pywinusb = { version = "*", os_name = "==\'nt\'", index="pypi"}');
|
||||||
return expect(tokens[20]).toEqual({value: "=='nt'", scopes: ["source.toml", "string.quoted.double.toml"]});
|
expect(tokens[20]).toEqual({value: "=='nt'", scopes: ["source.toml", "string.quoted.double.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes multiline strings", function() {
|
it("tokenizes multiline strings", function() {
|
||||||
@ -89,7 +84,7 @@ string
|
|||||||
expect(lines[0][4]).toEqual({value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.begin.toml"]});
|
expect(lines[0][4]).toEqual({value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.begin.toml"]});
|
||||||
expect(lines[1][0]).toEqual({value: 'I am a', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
expect(lines[1][0]).toEqual({value: 'I am a', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
||||||
expect(lines[2][0]).toEqual({value: 'string', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
expect(lines[2][0]).toEqual({value: 'string', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
||||||
return expect(lines[3][0]).toEqual({value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.end.toml"]});
|
expect(lines[3][0]).toEqual({value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.end.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes escape characters in double-quoted multiline strings", function() {
|
it("tokenizes escape characters in double-quoted multiline strings", function() {
|
||||||
@ -109,7 +104,7 @@ with\\UaBcDE3F2escape characters\\nyay
|
|||||||
expect(lines[3][2]).toEqual({value: 'escape characters', scopes: ["source.toml", "string.quoted.double.block.toml"]});
|
expect(lines[3][2]).toEqual({value: 'escape characters', scopes: ["source.toml", "string.quoted.double.block.toml"]});
|
||||||
expect(lines[3][3]).toEqual({value: '\\n', scopes: ["source.toml", "string.quoted.double.block.toml", "constant.character.escape.toml"]});
|
expect(lines[3][3]).toEqual({value: '\\n', scopes: ["source.toml", "string.quoted.double.block.toml", "constant.character.escape.toml"]});
|
||||||
expect(lines[3][4]).toEqual({value: 'yay', scopes: ["source.toml", "string.quoted.double.block.toml"]});
|
expect(lines[3][4]).toEqual({value: 'yay', scopes: ["source.toml", "string.quoted.double.block.toml"]});
|
||||||
return expect(lines[4][0]).toEqual({value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.end.toml"]});
|
expect(lines[4][0]).toEqual({value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.end.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes line continuation characters in double-quoted multiline strings", function() {
|
it("tokenizes line continuation characters in double-quoted multiline strings", function() {
|
||||||
@ -129,7 +124,7 @@ yay
|
|||||||
expect(lines[3][1]).toEqual({value: '\\', scopes: ["source.toml", "string.quoted.double.block.toml", "constant.character.escape.toml"]});
|
expect(lines[3][1]).toEqual({value: '\\', scopes: ["source.toml", "string.quoted.double.block.toml", "constant.character.escape.toml"]});
|
||||||
expect(lines[3][2]).toEqual({value: ' \t', scopes: ["source.toml", "string.quoted.double.block.toml"]});
|
expect(lines[3][2]).toEqual({value: ' \t', scopes: ["source.toml", "string.quoted.double.block.toml"]});
|
||||||
expect(lines[4][0]).toEqual({value: 'yay', scopes: ["source.toml", "string.quoted.double.block.toml"]});
|
expect(lines[4][0]).toEqual({value: 'yay', scopes: ["source.toml", "string.quoted.double.block.toml"]});
|
||||||
return expect(lines[5][0]).toEqual({value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.end.toml"]});
|
expect(lines[5][0]).toEqual({value: '"""', scopes: ["source.toml", "string.quoted.double.block.toml", "punctuation.definition.string.end.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes escape characters in double-quoted multiline strings", function() {
|
it("tokenizes escape characters in double-quoted multiline strings", function() {
|
||||||
@ -144,7 +139,7 @@ with\\UaBcDE3F2no escape characters\\naw
|
|||||||
expect(lines[1][0]).toEqual({value: 'I am\\u0020a', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
expect(lines[1][0]).toEqual({value: 'I am\\u0020a', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
||||||
expect(lines[2][0]).toEqual({value: '\\qstring', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
expect(lines[2][0]).toEqual({value: '\\qstring', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
||||||
expect(lines[3][0]).toEqual({value: 'with\\UaBcDE3F2no escape characters\\naw', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
expect(lines[3][0]).toEqual({value: 'with\\UaBcDE3F2no escape characters\\naw', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
||||||
return expect(lines[4][0]).toEqual({value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.end.toml"]});
|
expect(lines[4][0]).toEqual({value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.end.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not tokenize line continuation characters in single-quoted multiline strings", function() {
|
it("does not tokenize line continuation characters in single-quoted multiline strings", function() {
|
||||||
@ -161,7 +156,7 @@ aw
|
|||||||
expect(lines[2][0]).toEqual({value: 'string \\', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
expect(lines[2][0]).toEqual({value: 'string \\', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
||||||
expect(lines[3][0]).toEqual({value: 'with no line-continuation\\ \t', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
expect(lines[3][0]).toEqual({value: 'with no line-continuation\\ \t', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
||||||
expect(lines[4][0]).toEqual({value: 'aw', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
expect(lines[4][0]).toEqual({value: 'aw', scopes: ["source.toml", "string.quoted.single.block.toml"]});
|
||||||
return expect(lines[5][0]).toEqual({value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.end.toml"]});
|
expect(lines[5][0]).toEqual({value: "'''", scopes: ["source.toml", "string.quoted.single.block.toml", "punctuation.definition.string.end.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes booleans", function() {
|
it("tokenizes booleans", function() {
|
||||||
@ -169,7 +164,7 @@ aw
|
|||||||
expect(tokens[4]).toEqual({value: "true", scopes: ["source.toml", "constant.language.boolean.true.toml"]});
|
expect(tokens[4]).toEqual({value: "true", scopes: ["source.toml", "constant.language.boolean.true.toml"]});
|
||||||
|
|
||||||
({tokens} = grammar.tokenizeLine("foo = false"));
|
({tokens} = grammar.tokenizeLine("foo = false"));
|
||||||
return expect(tokens[4]).toEqual({value: "false", scopes: ["source.toml", "constant.language.boolean.false.toml"]});
|
expect(tokens[4]).toEqual({value: "false", scopes: ["source.toml", "constant.language.boolean.false.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes integers", () => (() => {
|
it("tokenizes integers", () => (() => {
|
||||||
@ -183,7 +178,7 @@ aw
|
|||||||
|
|
||||||
it("does not tokenize a number with leading zeros as an integer", function() {
|
it("does not tokenize a number with leading zeros as an integer", function() {
|
||||||
const {tokens} = grammar.tokenizeLine("foo = 01");
|
const {tokens} = grammar.tokenizeLine("foo = 01");
|
||||||
return expect(tokens[4]).toEqual({value: "01", scopes: ["source.toml", "invalid.illegal.toml"]});
|
expect(tokens[4]).toEqual({value: "01", scopes: ["source.toml", "invalid.illegal.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not tokenize a number with an underscore not followed by a digit as an integer", function() {
|
it("does not tokenize a number with an underscore not followed by a digit as an integer", function() {
|
||||||
@ -191,7 +186,7 @@ aw
|
|||||||
expect(tokens[4]).toEqual({value: "1__2", scopes: ["source.toml", "invalid.illegal.toml"]});
|
expect(tokens[4]).toEqual({value: "1__2", scopes: ["source.toml", "invalid.illegal.toml"]});
|
||||||
|
|
||||||
({tokens} = grammar.tokenizeLine("foo = 1_"));
|
({tokens} = grammar.tokenizeLine("foo = 1_"));
|
||||||
return expect(tokens[4]).toEqual({value: "1_", scopes: ["source.toml", "invalid.illegal.toml"]});
|
expect(tokens[4]).toEqual({value: "1_", scopes: ["source.toml", "invalid.illegal.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes hex integers", () => (() => {
|
it("tokenizes hex integers", () => (() => {
|
||||||
@ -205,17 +200,17 @@ aw
|
|||||||
|
|
||||||
it("tokenizes octal integers", function() {
|
it("tokenizes octal integers", function() {
|
||||||
const {tokens} = grammar.tokenizeLine("foo = 0o755");
|
const {tokens} = grammar.tokenizeLine("foo = 0o755");
|
||||||
return expect(tokens[4]).toEqual({value: "0o755", scopes: ["source.toml", "constant.numeric.octal.toml"]});
|
expect(tokens[4]).toEqual({value: "0o755", scopes: ["source.toml", "constant.numeric.octal.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes binary integers", function() {
|
it("tokenizes binary integers", function() {
|
||||||
const {tokens} = grammar.tokenizeLine("foo = 0b11010110");
|
const {tokens} = grammar.tokenizeLine("foo = 0b11010110");
|
||||||
return expect(tokens[4]).toEqual({value: "0b11010110", scopes: ["source.toml", "constant.numeric.binary.toml"]});
|
expect(tokens[4]).toEqual({value: "0b11010110", scopes: ["source.toml", "constant.numeric.binary.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not tokenize a number followed by other characters as a number", function() {
|
it("does not tokenize a number followed by other characters as a number", function() {
|
||||||
const {tokens} = grammar.tokenizeLine("foo = 0xdeadbeefs");
|
const {tokens} = grammar.tokenizeLine("foo = 0xdeadbeefs");
|
||||||
return expect(tokens[4]).toEqual({value: "0xdeadbeefs", scopes: ["source.toml", "invalid.illegal.toml"]});
|
expect(tokens[4]).toEqual({value: "0xdeadbeefs", scopes: ["source.toml", "invalid.illegal.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes floats", () => (() => {
|
it("tokenizes floats", () => (() => {
|
||||||
@ -255,24 +250,24 @@ aw
|
|||||||
expect(tokens[5]).toEqual({value: "T", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.time.toml"]});
|
expect(tokens[5]).toEqual({value: "T", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.time.toml"]});
|
||||||
expect(tokens[6]).toEqual({value: "00:32:00.999999", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
expect(tokens[6]).toEqual({value: "00:32:00.999999", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
||||||
expect(tokens[7]).toEqual({value: "-", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.offset.toml"]});
|
expect(tokens[7]).toEqual({value: "-", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.offset.toml"]});
|
||||||
return expect(tokens[8]).toEqual({value: "07:00", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
expect(tokens[8]).toEqual({value: "07:00", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes local date-times", function() {
|
it("tokenizes local date-times", function() {
|
||||||
const {tokens} = grammar.tokenizeLine("foo = 1979-05-27T00:32:00.999999");
|
const {tokens} = grammar.tokenizeLine("foo = 1979-05-27T00:32:00.999999");
|
||||||
expect(tokens[4]).toEqual({value: "1979-05-27", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
expect(tokens[4]).toEqual({value: "1979-05-27", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
||||||
expect(tokens[5]).toEqual({value: "T", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.time.toml"]});
|
expect(tokens[5]).toEqual({value: "T", scopes: ["source.toml", "constant.numeric.date.toml", "keyword.other.time.toml"]});
|
||||||
return expect(tokens[6]).toEqual({value: "00:32:00.999999", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
expect(tokens[6]).toEqual({value: "00:32:00.999999", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes local dates", function() {
|
it("tokenizes local dates", function() {
|
||||||
const {tokens} = grammar.tokenizeLine("foo = 1979-05-27");
|
const {tokens} = grammar.tokenizeLine("foo = 1979-05-27");
|
||||||
return expect(tokens[4]).toEqual({value: "1979-05-27", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
expect(tokens[4]).toEqual({value: "1979-05-27", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes local times", function() {
|
it("tokenizes local times", function() {
|
||||||
const {tokens} = grammar.tokenizeLine("foo = 00:32:00.999999");
|
const {tokens} = grammar.tokenizeLine("foo = 00:32:00.999999");
|
||||||
return expect(tokens[4]).toEqual({value: "00:32:00.999999", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
expect(tokens[4]).toEqual({value: "00:32:00.999999", scopes: ["source.toml", "constant.numeric.date.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes tables", function() {
|
it("tokenizes tables", function() {
|
||||||
@ -283,7 +278,7 @@ aw
|
|||||||
|
|
||||||
({tokens} = grammar.tokenizeLine(" [table]"));
|
({tokens} = grammar.tokenizeLine(" [table]"));
|
||||||
expect(tokens[0]).toEqual({value: " ", scopes: ["source.toml"]});
|
expect(tokens[0]).toEqual({value: " ", scopes: ["source.toml"]});
|
||||||
return expect(tokens[1]).toEqual({value: "[", scopes: ["source.toml", "entity.name.section.table.toml", "punctuation.definition.table.begin.toml"]});
|
expect(tokens[1]).toEqual({value: "[", scopes: ["source.toml", "entity.name.section.table.toml", "punctuation.definition.table.begin.toml"]});
|
||||||
});
|
});
|
||||||
// and so on
|
// and so on
|
||||||
|
|
||||||
@ -291,7 +286,7 @@ aw
|
|||||||
const {tokens} = grammar.tokenizeLine("[[table]]");
|
const {tokens} = grammar.tokenizeLine("[[table]]");
|
||||||
expect(tokens[0]).toEqual({value: "[[", scopes: ["source.toml", "entity.name.section.table.array.toml", "punctuation.definition.table.array.begin.toml"]});
|
expect(tokens[0]).toEqual({value: "[[", scopes: ["source.toml", "entity.name.section.table.array.toml", "punctuation.definition.table.array.begin.toml"]});
|
||||||
expect(tokens[1]).toEqual({value: "table", scopes: ["source.toml", "entity.name.section.table.array.toml"]});
|
expect(tokens[1]).toEqual({value: "table", scopes: ["source.toml", "entity.name.section.table.array.toml"]});
|
||||||
return expect(tokens[2]).toEqual({value: "]]", scopes: ["source.toml", "entity.name.section.table.array.toml", "punctuation.definition.table.array.end.toml"]});
|
expect(tokens[2]).toEqual({value: "]]", scopes: ["source.toml", "entity.name.section.table.array.toml", "punctuation.definition.table.array.end.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("tokenizes keys", function() {
|
it("tokenizes keys", function() {
|
||||||
@ -309,10 +304,10 @@ aw
|
|||||||
expect(tokens[0]).toEqual({value: "ʎǝʞ =", scopes: ["source.toml"]});
|
expect(tokens[0]).toEqual({value: "ʎǝʞ =", scopes: ["source.toml"]});
|
||||||
|
|
||||||
({tokens} = grammar.tokenizeLine(" ="));
|
({tokens} = grammar.tokenizeLine(" ="));
|
||||||
return expect(tokens[0]).toEqual({value: " =", scopes: ["source.toml"]});
|
expect(tokens[0]).toEqual({value: " =", scopes: ["source.toml"]});
|
||||||
});
|
});
|
||||||
|
|
||||||
return it("tokenizes quoted keys", function() {
|
it("tokenizes quoted keys", function() {
|
||||||
let {tokens} = grammar.tokenizeLine("'key' =");
|
let {tokens} = grammar.tokenizeLine("'key' =");
|
||||||
expect(tokens[0]).toEqual({value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.begin.toml"]});
|
expect(tokens[0]).toEqual({value: "'", scopes: ["source.toml", "string.quoted.single.toml", "punctuation.definition.string.begin.toml"]});
|
||||||
expect(tokens[1]).toEqual({value: "key", scopes: ["source.toml", "string.quoted.single.toml", "variable.other.key.toml"]});
|
expect(tokens[1]).toEqual({value: "key", scopes: ["source.toml", "string.quoted.single.toml", "variable.other.key.toml"]});
|
||||||
@ -397,6 +392,6 @@ aw
|
|||||||
expect(tokens[0]).toEqual({value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]});
|
expect(tokens[0]).toEqual({value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.begin.toml"]});
|
||||||
expect(tokens[1]).toEqual({value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]});
|
expect(tokens[1]).toEqual({value: '"', scopes: ["source.toml", "string.quoted.double.toml", "punctuation.definition.string.end.toml"]});
|
||||||
expect(tokens[2]).toEqual({value: " ", scopes: ["source.toml"]});
|
expect(tokens[2]).toEqual({value: " ", scopes: ["source.toml"]});
|
||||||
return expect(tokens[3]).toEqual({value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]});
|
expect(tokens[3]).toEqual({value: "=", scopes: ["source.toml", "keyword.operator.assignment.toml"]});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user