diff --git a/CHANGES.md b/CHANGES.md
index 5947bb45c1..00c6553c72 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -56,6 +56,7 @@ Language Improvements:
- (delphi) highlight hexadecimal, octal, and binary numbers (#2370) [Robert Riebisch]()
- enh(plaintext) added `text` and `txt` as alias (#2360) [Taufik Nurrohman][]
- enh(powershell) added PowerShell v5.1/v7 default aliases as "built_in"s (#2423) [Sean Williams][]
+- enh(yaml) added support for timestamps (#2475) [Peter Plantinga][]
Developer Tools:
diff --git a/src/languages/yaml.js b/src/languages/yaml.js
index fed5779490..d7586eb1f3 100644
--- a/src/languages/yaml.js
+++ b/src/languages/yaml.js
@@ -44,6 +44,15 @@ export default function(hljs) {
]
};
+ var DATE_RE = '[0-9]{4}(-[0-9][0-9]){0,2}';
+ var TIME_RE = '([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?';
+ var FRACTION_RE = '(\\.[0-9]*)?';
+ var ZONE_RE = '([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';
+ var TIMESTAMP = {
+ className: 'number',
+ begin: '\\b' + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + '\\b',
+ }
+
return {
name: 'YAML',
case_insensitive: true,
@@ -97,6 +106,7 @@ export default function(hljs) {
beginKeywords: LITERALS,
keywords: {literal: LITERALS}
},
+ TIMESTAMP,
// numbers are any valid C-style number that
// sit isolated from other words
{
diff --git a/test/markup/yaml/numbers.expect.txt b/test/markup/yaml/numbers.expect.txt
index 969ba53024..eefd3eaea6 100644
--- a/test/markup/yaml/numbers.expect.txt
+++ b/test/markup/yaml/numbers.expect.txt
@@ -3,3 +3,9 @@
hex: 0x999fff
numkey999: 1234
exp: -2.3e-5
+canonical: 2001-12-15T02:59:43.1Z
+iso8601: 2001-12-14t21:59:43.10-05:00
+space: 2001-12-14 21:59:43.10 -5
+nozone: 2001-12-15 2:59:43.10
+date: 2002-12-14
+
diff --git a/test/markup/yaml/numbers.txt b/test/markup/yaml/numbers.txt
index 7b6c10e2b4..7d39a8eab1 100644
--- a/test/markup/yaml/numbers.txt
+++ b/test/markup/yaml/numbers.txt
@@ -3,3 +3,8 @@ not_hex: 999fff
hex: 0x999fff
numkey999: 1234
exp: -2.3e-5
+canonical: 2001-12-15T02:59:43.1Z
+iso8601: 2001-12-14t21:59:43.10-05:00
+space: 2001-12-14 21:59:43.10 -5
+nozone: 2001-12-15 2:59:43.10
+date: 2002-12-14