Skip to content
This repository has been archived by the owner on Sep 24, 2022. It is now read-only.

Commit

Permalink
Merge pull request #290 from ehuss/fix-case-sensitivity
Browse files Browse the repository at this point in the history
Fix case sensitivity with T, Z, and E.
  • Loading branch information
alexcrichton authored Feb 19, 2019
2 parents 56f9afb + 8fce90e commit 4fb12b4
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 3 deletions.
5 changes: 3 additions & 2 deletions src/datetime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,9 @@ impl FromStr for Datetime {
};

// Next parse the "partial-time" if available
let next = chars.clone().next();
let partial_time = if full_date.is_some()
&& (chars.clone().next() == Some('T') || chars.clone().next() == Some(' '))
&& (next == Some('T') || next == Some('t') || next == Some(' '))
{
chars.next();
true
Expand Down Expand Up @@ -253,7 +254,7 @@ impl FromStr for Datetime {
// And finally, parse the offset
let offset = if offset_allowed {
let next = chars.clone().next();
if next == Some('Z') {
if next == Some('Z') || next == Some('z') {
chars.next();
Some(Offset::Z)
} else if next.is_none() {
Expand Down
5 changes: 4 additions & 1 deletion src/de.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1169,7 +1169,10 @@ impl<'a> Deserializer<'a> {
}

fn number_or_date(&mut self, span: Span, s: &'a str) -> Result<Value<'a>, Error> {
if s.contains('T') || (s.len() > 1 && s[1..].contains('-')) && !s.contains("e-") {
if s.contains('T')
|| s.contains('t')
|| (s.len() > 1 && s[1..].contains('-') && !s.contains("e-") && !s.contains("E-"))
{
self.datetime(span, s, false)
.map(|(Span { start, end }, d)| Value {
e: E::Datetime(d),
Expand Down
2 changes: 2 additions & 0 deletions test-suite/tests/datetime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ fn times() {
fn good(s: &str) {
dogood(s, s);
dogood(&s.replace("T", " "), s);
dogood(&s.replace("T", "t"), s);
dogood(&s.replace("Z", "z"), s);
}

good("1997-09-09T09:09:09Z");
Expand Down
1 change: 1 addition & 0 deletions test-suite/tests/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ fn floats() {
t!("1.0e0", 1.0);
t!("1.0e+0", 1.0);
t!("1.0e-0", 1.0);
t!("1E-0", 1.0);
t!("1.001e-0", 1.001);
t!("2e10", 2e10);
t!("2e+10", 2e10);
Expand Down

0 comments on commit 4fb12b4

Please sign in to comment.