Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit 33c4717

Browse files
committed
Allow +/- in front of numbers
1 parent 0e8d0ba commit 33c4717

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

grammars/javascript.cson

+1-1
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,7 @@
574574
'numbers':
575575
'patterns': [
576576
{
577-
'match': '\\b((0(x|X)[0-9a-fA-F]+)|(0(b|B)[01]+)|(0(o|O)[0-7]+)|([0-9]+(\\.[0-9]+)?)((e|E)[+-]?[0-9]+)?)\\b'
577+
'match': '(\\+|\\-)?\\b((0(x|X)[0-9a-fA-F]+)|(0(b|B)[01]+)|(0(o|O)[0-7]+)|([0-9]+(\\.[0-9]+)?)((e|E)[+-]?[0-9]+)?)\\b'
578578
'name': 'constant.numeric.js'
579579
}
580580
]

spec/javascript-spec.coffee

+16-5
Original file line numberDiff line numberDiff line change
@@ -95,30 +95,41 @@ describe "Javascript grammar", ->
9595
expect(tokens[6]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.end.js']
9696
expect(tokens[7]).toEqual value: ']', scopes: ['source.js', 'meta.brace.square.js']
9797

98+
it "verifies that regular expressions have explicit count modifiers", ->
99+
source = fs.readFileSync(path.resolve(__dirname, '..', 'grammars', 'javascript.cson'), 'utf8')
100+
expect(source.search /{,/).toEqual -1
101+
102+
source = fs.readFileSync(path.resolve(__dirname, '..', 'grammars', 'regular expressions (javascript).cson'), 'utf8')
103+
expect(source.search /{,/).toEqual -1
104+
105+
describe "numbers", ->
106+
it "tokenizes hexadecimals", ->
98107
{tokens} = grammar.tokenizeLine('0x1D306')
99108
expect(tokens[0]).toEqual value: '0x1D306', scopes: ['source.js', 'constant.numeric.js']
100109

101110
{tokens} = grammar.tokenizeLine('0X1D306')
102111
expect(tokens[0]).toEqual value: '0X1D306', scopes: ['source.js', 'constant.numeric.js']
103112

113+
it "tokenizes binary literals", ->
104114
{tokens} = grammar.tokenizeLine('0b011101110111010001100110')
105115
expect(tokens[0]).toEqual value: '0b011101110111010001100110', scopes: ['source.js', 'constant.numeric.js']
106116

107117
{tokens} = grammar.tokenizeLine('0B011101110111010001100110')
108118
expect(tokens[0]).toEqual value: '0B011101110111010001100110', scopes: ['source.js', 'constant.numeric.js']
109119

120+
it "tokenizes octal literals", ->
110121
{tokens} = grammar.tokenizeLine('0o1411')
111122
expect(tokens[0]).toEqual value: '0o1411', scopes: ['source.js', 'constant.numeric.js']
112123

113124
{tokens} = grammar.tokenizeLine('0O1411')
114125
expect(tokens[0]).toEqual value: '0O1411', scopes: ['source.js', 'constant.numeric.js']
115126

116-
it "verifies that regular expressions have explicit count modifiers", ->
117-
source = fs.readFileSync(path.resolve(__dirname, '..', 'grammars', 'javascript.cson'), 'utf8')
118-
expect(source.search /{,/).toEqual -1
127+
it "tokenizes decimals", ->
128+
{tokens} = grammar.tokenizeLine('5e-10')
129+
expect(tokens[0]).toEqual value: '5e-10', scopes: ['source.js', 'constant.numeric.js']
119130

120-
source = fs.readFileSync(path.resolve(__dirname, '..', 'grammars', 'regular expressions (javascript).cson'), 'utf8')
121-
expect(source.search /{,/).toEqual -1
131+
{tokens} = grammar.tokenizeLine('-5E+5')
132+
expect(tokens[0]).toEqual value: '-5E+5', scopes: ['source.js', 'constant.numeric.js']
122133

123134
describe "operators", ->
124135
it "tokenizes void correctly", ->

0 commit comments

Comments
 (0)