From 419db388da957b0de46b6b0ea8520963cb0e7ef4 Mon Sep 17 00:00:00 2001 From: Victor Porof Date: Sat, 4 Feb 2017 08:45:02 +0100 Subject: [PATCH] Relax whitespace rules for Infinity and NaN Signed-off-by: Victor Porof --- edn/src/edn.rustpeg | 4 ++-- edn/tests/tests.rs | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/edn/src/edn.rustpeg b/edn/src/edn.rustpeg index 8d854dec..fdfe830b 100644 --- a/edn/src/edn.rustpeg +++ b/edn/src/edn.rustpeg @@ -32,10 +32,10 @@ pub nil -> Value = "nil" { Value::Nil } pub nan -> Value = - "#f NaN" { Value::Float(OrderedFloat(NAN)) } + "#f" __ "NaN" { Value::Float(OrderedFloat(NAN)) } pub infinity -> Value = - "#f" s:$(sign) "Infinity" { + "#f" __ s:$(sign) "Infinity" { Value::Float(OrderedFloat(if s == "+" { INFINITY } else { NEG_INFINITY })) } diff --git a/edn/tests/tests.rs b/edn/tests/tests.rs index 0a0513c5..a54c9e8f 100644 --- a/edn/tests/tests.rs +++ b/edn/tests/tests.rs @@ -53,6 +53,7 @@ fn test_nil() { #[test] fn test_nan() { + assert_eq!(nan("#fNaN").unwrap(), Float(OrderedFloat(f64::NAN))); assert_eq!(nan("#f NaN").unwrap(), Float(OrderedFloat(f64::NAN))); assert!(nan("true").is_err()); @@ -63,6 +64,9 @@ fn test_infinity() { assert_eq!(infinity("#f-Infinity").unwrap(), Float(OrderedFloat(f64::NEG_INFINITY))); assert_eq!(infinity("#f+Infinity").unwrap(), Float(OrderedFloat(f64::INFINITY))); + assert_eq!(infinity("#f -Infinity").unwrap(), Float(OrderedFloat(f64::NEG_INFINITY))); + assert_eq!(infinity("#f +Infinity").unwrap(), Float(OrderedFloat(f64::INFINITY))); + assert!(infinity("true").is_err()); }