From 5d31305dd10da9e48aca5ab2c3d512aa05eed6a2 Mon Sep 17 00:00:00 2001 From: Thomas Cashman Date: Wed, 5 Aug 2020 10:08:32 +0100 Subject: [PATCH] Fix text files not writing escaped double quotes --- .../mini2Dx/gettext/plugin/file/TextFile.java | 2 +- .../mini2Dx/gettext/plugin/file/Utils.java | 22 +++++++++++++++++++ .../gettext/plugin/file/TextFileTest.java | 7 +++++- .../src/test/resources/sample.txt | 5 ++++- 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 gettext-gradle-plugin/src/main/java/org/mini2Dx/gettext/plugin/file/Utils.java diff --git a/gettext-gradle-plugin/src/main/java/org/mini2Dx/gettext/plugin/file/TextFile.java b/gettext-gradle-plugin/src/main/java/org/mini2Dx/gettext/plugin/file/TextFile.java index 894326f..bff6870 100644 --- a/gettext-gradle-plugin/src/main/java/org/mini2Dx/gettext/plugin/file/TextFile.java +++ b/gettext-gradle-plugin/src/main/java/org/mini2Dx/gettext/plugin/file/TextFile.java @@ -79,7 +79,7 @@ public TextFile(InputStream inputStream, String relativePath, String commentForm entry.getExtractedComments().add(line.substring(commentFormatPrefix.length()).trim()); } else { entry.setReference(this.relativePath + ":" + lineNumber); - entry.setId(line); + entry.setId(Utils.escapeDoubleQuotes(line)); translationEntries.add(entry); entry = null; } diff --git a/gettext-gradle-plugin/src/main/java/org/mini2Dx/gettext/plugin/file/Utils.java b/gettext-gradle-plugin/src/main/java/org/mini2Dx/gettext/plugin/file/Utils.java new file mode 100644 index 0000000..a0b615e --- /dev/null +++ b/gettext-gradle-plugin/src/main/java/org/mini2Dx/gettext/plugin/file/Utils.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright 2020 Thomas Cashman + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ +package org.mini2Dx.gettext.plugin.file; + +public class Utils { + public static String escapeDoubleQuotes(String str) { + return str.replace("\"", "\\\""); + } +} diff --git a/gettext-gradle-plugin/src/test/java/org/mini2Dx/gettext/plugin/file/TextFileTest.java b/gettext-gradle-plugin/src/test/java/org/mini2Dx/gettext/plugin/file/TextFileTest.java index 97d20fb..1add25e 100644 --- a/gettext-gradle-plugin/src/test/java/org/mini2Dx/gettext/plugin/file/TextFileTest.java +++ b/gettext-gradle-plugin/src/test/java/org/mini2Dx/gettext/plugin/file/TextFileTest.java @@ -18,7 +18,7 @@ public void testTextFile() throws IOException { final List results = new ArrayList(); textFile.getTranslationEntries(results); - Assert.assertEquals(4, results.size()); + Assert.assertEquals(5, results.size()); final TranslationEntry entry0 = results.get(0); Assert.assertEquals(FILENAME + ":1", entry0.getReference()); @@ -41,5 +41,10 @@ public void testTextFile() throws IOException { Assert.assertEquals(FILENAME + ":7", entry3.getReference()); Assert.assertEquals("Line 3", entry3.getId()); Assert.assertEquals(0, entry3.getExtractedComments().size()); + + final TranslationEntry entry4 = results.get(4); + Assert.assertEquals(FILENAME + ":10", entry4.getReference()); + Assert.assertEquals("Line with \\\"Quotes\\\"", entry4.getId()); + Assert.assertEquals(1, entry4.getExtractedComments().size()); } } diff --git a/gettext-gradle-plugin/src/test/resources/sample.txt b/gettext-gradle-plugin/src/test/resources/sample.txt index dd84be4..a83dbed 100644 --- a/gettext-gradle-plugin/src/test/resources/sample.txt +++ b/gettext-gradle-plugin/src/test/resources/sample.txt @@ -4,4 +4,7 @@ Line 1 #. Comment 1 Line 2 -Line 3 \ No newline at end of file +Line 3 + +#. Comment 3 +Line with "Quotes" \ No newline at end of file