summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/translations-converter/src/android/string_value.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/android/translations-converter/src/android/string_value.rs b/android/translations-converter/src/android/string_value.rs
index 149a3e0c16..460f753719 100644
--- a/android/translations-converter/src/android/string_value.rs
+++ b/android/translations-converter/src/android/string_value.rs
@@ -1,13 +1,13 @@
use lazy_static::lazy_static;
use regex::Regex;
-use serde::{Deserialize, Serialize};
+use serde::{Deserialize, Deserializer, Serialize};
use std::{
fmt::{self, Display, Formatter},
ops::Deref,
};
/// An Android string value
-#[derive(Clone, Debug, Eq, Deserialize, Hash, PartialEq, Serialize)]
+#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize)]
pub struct StringValue(String);
impl StringValue {
@@ -105,6 +105,15 @@ impl Display for StringValue {
}
}
+impl<'de> Deserialize<'de> for StringValue {
+ fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
+ let raw_string = String::deserialize(deserializer)?;
+ let string_with_collapsed_newlines = Self::collapse_line_breaks(raw_string);
+
+ Ok(StringValue(string_with_collapsed_newlines))
+ }
+}
+
#[cfg(test)]
mod tests {
use super::StringValue;