Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(yaml) add support for timestamps #2496

Merged
merged 2 commits into from Apr 17, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES.md
Expand Up @@ -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:

Expand Down
10 changes: 10 additions & 0 deletions src/languages/yaml.js
Expand Up @@ -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 FRAC_RE = '(\\.[0-9]*)?';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please no abbreviations.

var ZONE_RE = '([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';
var TIMESTAMP = {
className: 'number',
begin: DATE_RE + TIME_RE + FRAC_RE + ZONE_RE + '\\b',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why only a boundary at the end and not the beginning?

}

return {
name: 'YAML',
case_insensitive: true,
Expand Down Expand Up @@ -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
{
Expand Down
6 changes: 6 additions & 0 deletions test/markup/yaml/numbers.expect.txt
Expand Up @@ -3,3 +3,9 @@
<span class="hljs-attr">hex:</span> <span class="hljs-number">0x999fff</span>
<span class="hljs-attr">numkey999:</span> <span class="hljs-number">1234</span>
<span class="hljs-attr">exp:</span> <span class="hljs-number">-2.3e-5</span>
<span class="hljs-attr">canonical:</span> <span class="hljs-number">2001-12-15T02:59:43.1Z</span>
<span class="hljs-attr">iso8601:</span> <span class="hljs-number">2001-12-14t21:59:43.10-05:00</span>
<span class="hljs-attr">space:</span> <span class="hljs-number">2001-12-14 21:59:43.10 -5</span>
<span class="hljs-attr">nozone:</span> <span class="hljs-number">2001-12-15 2:59:43.10</span>
<span class="hljs-attr">date:</span> <span class="hljs-number">2002-12-14</span>

5 changes: 5 additions & 0 deletions test/markup/yaml/numbers.txt
Expand Up @@ -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