Dates with 5 digit years can not deserialized

Offen
#483 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
42/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
ruby
Bereich
tooling

Rechercherichtung

Reproduziere den Fehler mit dem Ruby-Snippet im Issue und untersuche anschließend lib/psych/scalar_scanner.rb rund um den Date-Regex in Zeile 113. Bestätige, wie ein fünfstelliger Jahreswert geparst wird, und definiere den Abschluss als erfolgreiches Laden des gedumpten DateTime ohne den captures error, wobei die Verarbeitung gültiger Datumswerte erhalten bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

require 'time'
require 'yaml'

date = DateTime.parse('22018-01-05')
serialized_date = YAML.dump(date)
YAML.load(serialized_date)
# => fails with NoMethodError: undefined method `captures' for nil:NilClass

This is because the regex for parsing a Date, in ScalarScanner, expects a 4 digit year.

The year is actually incorrect and should have been validated before being saved. It has made it in to our data.

Please close if you think this is too much of an edge case to be considered.

On the other hand 5 digit years are legit.

Vorherrschende Sprache
Ruby
Sterne
596
Forks
223
Ø Merge
8 Std. 38 Min.
Gemergte PRs (30 T.)
2

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus ruby/psych

Alle Issues in ruby/psych

Ähnliche Issues

Weitere Issues zu Ruby

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.