summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-05-14 21:50:27 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-05-19 12:13:36 +0000
commitb6328d418ac810621377853591408ab392aa32ca (patch)
tree2baf8acdb1b8ec8b6cee3f40765dde597430f1f3
parentb792e8d9754bc498df6a2cf62beb1740a073af7c (diff)
downloadmullvadvpn-b6328d418ac810621377853591408ab392aa32ca.tar.xz
mullvadvpn-b6328d418ac810621377853591408ab392aa32ca.zip
Move collapsing line breaks to constructor
This is because the removal of line breaks is not part of the normalization but part of initial conditioning of the input.
-rw-r--r--android/translations-converter/src/android/string_value.rs13
-rw-r--r--android/translations-converter/src/normalize.rs5
2 files changed, 13 insertions, 5 deletions
diff --git a/android/translations-converter/src/android/string_value.rs b/android/translations-converter/src/android/string_value.rs
index b0bff135a4..9207dad6ed 100644
--- a/android/translations-converter/src/android/string_value.rs
+++ b/android/translations-converter/src/android/string_value.rs
@@ -18,11 +18,22 @@ impl StringValue {
.replace("\"", "\\\"")
.replace(r"'", r"\'");
- let value = Self::ensure_parameters_are_indexed(value_with_parameters);
+ let value_without_line_breaks = Self::collapse_line_breaks(value_with_parameters);
+ let value = Self::ensure_parameters_are_indexed(value_without_line_breaks);
StringValue(value)
}
+ /// The input XML file might have line breaks inside the string, and they should be collapsed
+ /// into a single whitespace character.
+ fn collapse_line_breaks(original: String) -> String {
+ lazy_static! {
+ static ref LINE_BREAKS: Regex = Regex::new(r"\s*\n\s*").unwrap();
+ }
+
+ LINE_BREAKS.replace_all(&original, " ").into_owned()
+ }
+
/// This helper method ensures parameters are in the form of `%4$d`, i.e., it will ensure that
/// there is the `<number>$` part.
///
diff --git a/android/translations-converter/src/normalize.rs b/android/translations-converter/src/normalize.rs
index 56c45d661e..4903c10911 100644
--- a/android/translations-converter/src/normalize.rs
+++ b/android/translations-converter/src/normalize.rs
@@ -13,7 +13,6 @@ mod android {
use crate::android::StringValue;
lazy_static! {
- static ref LINE_BREAKS: Regex = Regex::new(r"\s*\n\s*").unwrap();
static ref APOSTROPHES: Regex = Regex::new(r"\\'").unwrap();
static ref DOUBLE_QUOTES: Regex = Regex::new(r#"\\""#).unwrap();
static ref PARAMETERS: Regex = Regex::new(r"%[0-9]*\$").unwrap();
@@ -21,10 +20,8 @@ mod android {
impl Normalize for StringValue {
fn normalize(&self) -> String {
- // Collapse line breaks present in the XML file
- let value = LINE_BREAKS.replace_all(&*self, " ");
// Unescape apostrophes
- let value = APOSTROPHES.replace_all(&value, "'");
+ let value = APOSTROPHES.replace_all(&*self, "'");
// Unescape double quotes
let value = DOUBLE_QUOTES.replace_all(&value, r#"""#);
// Mark where parameters are positioned, removing the parameter index