Skip to content

Commit db3f4c7

Browse files
authored
toml: only highlight inf and nan in value, highlight keys starting with digit (#2003)
Fixes #1636 Fixes #1873
1 parent 2fa465a commit db3f4c7

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

lib/rouge/lexers/toml.rb

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,6 @@ class TOML < RegexLexer
2323
groups Name::Property, Text, Operator, Text, Punctuation
2424
push :inline
2525
end
26-
27-
rule %r/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/, Literal::Date
28-
29-
rule %r/[+-]?\d+(?:_\d+)*\.\d+(?:_\d+)*(?:[eE][+-]?\d+(?:_\d+)*)?/, Num::Float
30-
rule %r/[+-]?\d+(?:_\d+)*[eE][+-]?\d+(?:_\d+)*/, Num::Float
31-
rule %r/[+-]?(?:nan|inf)/, Num::Float
32-
33-
rule %r/0x\h+(?:_\h+)*/, Num::Hex
34-
rule %r/0o[0-7]+(?:_[0-7]+)*/, Num::Oct
35-
rule %r/0b[01]+(?:_[01]+)*/, Num::Bin
36-
rule %r/[+-]?\d+(?:_\d+)*/, Num::Integer
3726
end
3827

3928
state :root do
@@ -59,6 +48,17 @@ class TOML < RegexLexer
5948
groups Name::Property, Text, Punctuation
6049
end
6150

51+
rule %r/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/, Literal::Date
52+
53+
rule %r/[+-]?\d+(?:_\d+)*\.\d+(?:_\d+)*(?:[eE][+-]?\d+(?:_\d+)*)?/, Num::Float
54+
rule %r/[+-]?\d+(?:_\d+)*[eE][+-]?\d+(?:_\d+)*/, Num::Float
55+
rule %r/[+-]?(?:nan|inf)/, Num::Float
56+
57+
rule %r/0x\h+(?:_\h+)*/, Num::Hex
58+
rule %r/0o[0-7]+(?:_[0-7]+)*/, Num::Oct
59+
rule %r/0b[01]+(?:_[01]+)*/, Num::Bin
60+
rule %r/[+-]?\d+(?:_\d+)*/, Num::Integer
61+
6262
rule %r/"""/, Str, :mdq
6363
rule %r/"/, Str, :dq
6464
rule %r/'''/, Str, :msq

spec/visual/samples/toml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,22 @@ emptyTableAreAllowed = true
166166
name = "Nail"
167167
sku = 284758393
168168
color = "gray"
169+
170+
[special-floats]
171+
inflection = "don't highlight"
172+
influxdb = 1
173+
174+
nan = nan
175+
176+
inf-1 = inf
177+
inf-2 = [inf, +nan, -nan, +inf, -inf]
178+
inf-3 = {inf=inf, nan=nan}
179+
180+
str-inf-1 = 'inf'
181+
str-inf-2 = "inf"
182+
str-inf-3 = """ inf nan
183+
inf nan
184+
"""
185+
str-inf-4 = """ inf nan
186+
inf nan
187+
"""

0 commit comments

Comments
 (0)