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