aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Du <alanhdu@gmail.com>2017-06-01 20:35:39 +0100
committerAlan Du <alanhdu@gmail.com>2017-06-01 20:57:06 +0100
commitdc407a6833b8358855fe5fb949b4253874311f47 (patch)
tree557c8b065e5e296d404de4ad6e551bc0fab17888
parent36431af975092578648225c60a8494cb0d5f6844 (diff)
downloadmilf-rs-dc407a6833b8358855fe5fb949b4253874311f47.tar.gz
milf-rs-dc407a6833b8358855fe5fb949b4253874311f47.zip
Truncate fractional seconds to picoseconds
Close https://github.com/alexcrichton/toml-rs/issues/186
-rw-r--r--src/datetime.rs5
-rw-r--r--tests/valid.rs3
-rw-r--r--tests/valid/datetime-truncate.json6
-rw-r--r--tests/valid/datetime-truncate.toml1
4 files changed, 14 insertions, 1 deletions
diff --git a/src/datetime.rs b/src/datetime.rs
index f39d9fa..810a4d7 100644
--- a/src/datetime.rs
+++ b/src/datetime.rs
@@ -218,7 +218,10 @@ impl FromStr for Datetime {
return Err(DatetimeParseError { _private: () })
}
chars = whole[end..].chars();
- match format!("0.{}", &whole[..end]).parse() {
+
+ // truncate to picoseconds precision
+ let last = if end > 12 { 12 } else { end };
+ match format!("0.{}", &whole[..last]).parse() {
Ok(f) => f,
Err(_) => return Err(DatetimeParseError { _private: () }),
}
diff --git a/tests/valid.rs b/tests/valid.rs
index 676fc67..b3cc096 100644
--- a/tests/valid.rs
+++ b/tests/valid.rs
@@ -190,6 +190,9 @@ test!(example_bom,
include_str!("valid/example-bom.toml"),
include_str!("valid/example.json"));
+test!(datetime_truncate,
+ include_str!("valid/datetime-truncate.toml"),
+ include_str!("valid/datetime-truncate.json"));
test!(table_array_nest_no_keys,
include_str!("valid/table-array-nest-no-keys.toml"),
include_str!("valid/table-array-nest-no-keys.json"));
diff --git a/tests/valid/datetime-truncate.json b/tests/valid/datetime-truncate.json
new file mode 100644
index 0000000..34a432f
--- /dev/null
+++ b/tests/valid/datetime-truncate.json
@@ -0,0 +1,6 @@
+{
+ "bestdayever": {
+ "type": "datetime",
+ "value": "1987-07-05T17:45:00.123456789012Z"
+ }
+}
diff --git a/tests/valid/datetime-truncate.toml b/tests/valid/datetime-truncate.toml
new file mode 100644
index 0000000..05de841
--- /dev/null
+++ b/tests/valid/datetime-truncate.toml
@@ -0,0 +1 @@
+bestdayever = 1987-07-05T17:45:00.123456789012345Z