@@ -1565,41 +1565,105 @@ describe "Javascript grammar", ->
1565
1565
1566
1566
describe " console" , ->
1567
1567
it " tokenizes the console keyword" , ->
1568
- {tokens } = grammar .tokenizeLine (' console' )
1568
+ {tokens } = grammar .tokenizeLine (' console; ' )
1569
1569
expect (tokens[0 ]).toEqual value : ' console' , scopes : [' source.js' , ' entity.name.type.object.console.js' ]
1570
+ expect (tokens[1 ]).toEqual value : ' ;' , scopes : [' source.js' , ' punctuation.terminator.statement.js' ]
1571
+
1572
+ {tokens } = grammar .tokenizeLine (' console$' )
1573
+ expect (tokens[0 ]).not .toEqual value : ' console' , scopes : [' source.js' , ' entity.name.type.object.console.js' ]
1574
+
1575
+ {tokens } = grammar .tokenizeLine (' $console' )
1576
+ expect (tokens[1 ]).not .toEqual value : ' console' , scopes : [' source.js' , ' entity.name.type.object.console.js' ]
1570
1577
1571
1578
it " tokenizes console support functions" , ->
1572
- {tokens } = grammar .tokenizeLine (' console.log()' )
1579
+ {tokens } = grammar .tokenizeLine (' console.log().log() ' )
1573
1580
expect (tokens[0 ]).toEqual value : ' console' , scopes : [' source.js' , ' entity.name.type.object.console.js' ]
1574
1581
expect (tokens[1 ]).toEqual value : ' .' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.delimiter.method.period.js' ]
1575
1582
expect (tokens[2 ]).toEqual value : ' log' , scopes : [' source.js' , ' meta.method-call.js' , ' support.function.console.js' ]
1576
1583
expect (tokens[3 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.begin.bracket.round.js' ]
1577
1584
expect (tokens[4 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.end.bracket.round.js' ]
1585
+ expect (tokens[6 ]).not .toEqual value : ' log' , scopes : [' source.js' , ' meta.method-call.js' , ' support.function.console.js' ]
1578
1586
1579
- {tokens } = grammar .tokenizeLine (' console . log()' )
1587
+ {tokens } = grammar .tokenizeLine (' console/**/.log()' )
1588
+ expect (tokens[0 ]).toEqual value : ' console' , scopes : [' source.js' , ' entity.name.type.object.console.js' ]
1589
+ expect (tokens[1 ]).toEqual value : ' /*' , scopes : [' source.js' , ' comment.block.js' , ' punctuation.definition.comment.js' ]
1590
+ expect (tokens[2 ]).toEqual value : ' */' , scopes : [' source.js' , ' comment.block.js' , ' punctuation.definition.comment.js' ]
1591
+ expect (tokens[3 ]).toEqual value : ' .' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.delimiter.method.period.js' ]
1592
+ expect (tokens[4 ]).toEqual value : ' log' , scopes : [' source.js' , ' meta.method-call.js' , ' support.function.console.js' ]
1593
+ expect (tokens[5 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.begin.bracket.round.js' ]
1594
+ expect (tokens[6 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.end.bracket.round.js' ]
1595
+
1596
+ lines = grammar .tokenizeLines '''
1597
+ console
1598
+ .log();
1599
+ '''
1600
+ expect (lines[0 ][0 ]).toEqual value : ' console' , scopes : [' source.js' , ' entity.name.type.object.console.js' ]
1601
+ expect (lines[1 ][0 ]).toEqual value : ' .' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.delimiter.method.period.js' ]
1602
+ expect (lines[1 ][1 ]).toEqual value : ' log' , scopes : [' source.js' , ' meta.method-call.js' , ' support.function.console.js' ]
1603
+ expect (lines[1 ][2 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.begin.bracket.round.js' ]
1604
+ expect (lines[1 ][3 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.end.bracket.round.js' ]
1605
+ expect (lines[1 ][4 ]).toEqual value : ' ;' , scopes : [' source.js' , ' punctuation.terminator.statement.js' ]
1606
+
1607
+ {tokens } = grammar .tokenizeLine (' console . log();' )
1580
1608
expect (tokens[0 ]).toEqual value : ' console' , scopes : [' source.js' , ' entity.name.type.object.console.js' ]
1581
1609
expect (tokens[2 ]).toEqual value : ' .' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.delimiter.method.period.js' ]
1582
1610
expect (tokens[4 ]).toEqual value : ' log' , scopes : [' source.js' , ' meta.method-call.js' , ' support.function.console.js' ]
1583
1611
expect (tokens[5 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.begin.bracket.round.js' ]
1584
1612
expect (tokens[6 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.end.bracket.round.js' ]
1613
+ expect (tokens[7 ]).toEqual value : ' ;' , scopes : [' source.js' , ' punctuation.terminator.statement.js' ]
1614
+
1615
+ it " tokenizes console custom functions" , ->
1616
+ {tokens } = grammar .tokenizeLine (' console.foo();' )
1617
+ expect (tokens[0 ]).toEqual value : ' console' , scopes : [' source.js' , ' entity.name.type.object.console.js' ]
1618
+ expect (tokens[1 ]).toEqual value : ' .' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.delimiter.method.period.js' ]
1619
+ expect (tokens[2 ]).toEqual value : ' foo' , scopes : [' source.js' , ' meta.method-call.js' , ' entity.name.function.js' ]
1620
+ expect (tokens[3 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.begin.bracket.round.js' ]
1621
+ expect (tokens[4 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.end.bracket.round.js' ]
1622
+ expect (tokens[5 ]).toEqual value : ' ;' , scopes : [' source.js' , ' punctuation.terminator.statement.js' ]
1623
+
1624
+ {tokens } = grammar .tokenizeLine (' console .foo();' )
1625
+ expect (tokens[3 ]).toEqual value : ' foo' , scopes : [' source.js' , ' meta.method-call.js' , ' entity.name.function.js' ]
1585
1626
1586
1627
describe " math" , ->
1587
1628
it " tokenizes the math object" , ->
1588
- {tokens } = grammar .tokenizeLine (' Math' )
1589
- expect (tokens[0 ]).toEqual value : ' Math' , scopes : [' source.js' , ' support.class.js' ]
1629
+ {tokens } = grammar .tokenizeLine (' Math;' )
1630
+ expect (tokens[0 ]).toEqual value : ' Math' , scopes : [' source.js' , ' support.class.math.js' ]
1631
+ expect (tokens[1 ]).toEqual value : ' ;' , scopes : [' source.js' , ' punctuation.terminator.statement.js' ]
1590
1632
1591
1633
it " tokenizes math support functions/properties" , ->
1592
- {tokens } = grammar .tokenizeLine (' Math.random()' )
1593
- expect (tokens[0 ]).toEqual value : ' Math' , scopes : [' source.js' , ' support.class.js' ]
1634
+ {tokens } = grammar .tokenizeLine (' Math.random(); ' )
1635
+ expect (tokens[0 ]).toEqual value : ' Math' , scopes : [' source.js' , ' support.class.math. js' ]
1594
1636
expect (tokens[1 ]).toEqual value : ' .' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.delimiter.method.period.js' ]
1595
1637
expect (tokens[2 ]).toEqual value : ' random' , scopes : [' source.js' , ' meta.method-call.js' , ' support.function.math.js' ]
1596
1638
expect (tokens[3 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.begin.bracket.round.js' ]
1597
1639
expect (tokens[4 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.end.bracket.round.js' ]
1640
+ expect (tokens[5 ]).toEqual value : ' ;' , scopes : [' source.js' , ' punctuation.terminator.statement.js' ]
1598
1641
1599
- {tokens } = grammar .tokenizeLine (' Math.PI' )
1600
- expect (tokens[0 ]).toEqual value : ' Math' , scopes : [' source.js' , ' support.class.js' ]
1642
+ lines = grammar .tokenizeLines '''
1643
+ Math
1644
+ .random();
1645
+ '''
1646
+ expect (lines[0 ][0 ]).toEqual value : ' Math' , scopes : [' source.js' , ' support.class.math.js' ]
1647
+ expect (lines[1 ][0 ]).toEqual value : ' .' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.delimiter.method.period.js' ]
1648
+ expect (lines[1 ][1 ]).toEqual value : ' random' , scopes : [' source.js' , ' meta.method-call.js' , ' support.function.math.js' ]
1649
+ expect (lines[1 ][2 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.begin.bracket.round.js' ]
1650
+ expect (lines[1 ][3 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.end.bracket.round.js' ]
1651
+ expect (lines[1 ][4 ]).toEqual value : ' ;' , scopes : [' source.js' , ' punctuation.terminator.statement.js' ]
1652
+
1653
+ {tokens } = grammar .tokenizeLine (' Math.PI;' )
1654
+ expect (tokens[0 ]).toEqual value : ' Math' , scopes : [' source.js' , ' support.class.math.js' ]
1601
1655
expect (tokens[1 ]).toEqual value : ' .' , scopes : [' source.js' , ' meta.delimiter.property.period.js' ]
1602
1656
expect (tokens[2 ]).toEqual value : ' PI' , scopes : [' source.js' , ' support.constant.property.math.js' ]
1657
+ expect (tokens[3 ]).toEqual value : ' ;' , scopes : [' source.js' , ' punctuation.terminator.statement.js' ]
1658
+
1659
+ it " tokenizes math custom functions" , ->
1660
+ {tokens } = grammar .tokenizeLine (' Math.PI();' )
1661
+ expect (tokens[0 ]).toEqual value : ' Math' , scopes : [' source.js' , ' support.class.math.js' ]
1662
+ expect (tokens[1 ]).toEqual value : ' .' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.delimiter.method.period.js' ]
1663
+ expect (tokens[2 ]).toEqual value : ' PI' , scopes : [' source.js' , ' meta.method-call.js' , ' entity.name.function.js' ]
1664
+ expect (tokens[3 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.begin.bracket.round.js' ]
1665
+ expect (tokens[4 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method-call.js' , ' meta.arguments.js' , ' punctuation.definition.arguments.end.bracket.round.js' ]
1666
+ expect (tokens[5 ]).toEqual value : ' ;' , scopes : [' source.js' , ' punctuation.terminator.statement.js' ]
1603
1667
1604
1668
describe " indentation" , ->
1605
1669
editor = null
0 commit comments