aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--couscous.json2
-rw-r--r--dotnet/Mammoth.Tests/DocumentConverterTests.cs13
-rw-r--r--dotnet/Mammoth/Couscous/HorribleHacks.cs4
-rw-r--r--dotnet/Mammoth/Couscous/mammoth/internal/styles/parsing/LineParseException.cs15
-rw-r--r--dotnet/Mammoth/Couscous/mammoth/internal/styles/parsing/ParseException.cs8
-rw-r--r--dotnet/Mammoth/Mammoth.csproj2
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java19
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java17
8 files changed, 61 insertions, 19 deletions
diff --git a/couscous.json b/couscous.json
index f478d4b..e628c14 100644
--- a/couscous.json
+++ b/couscous.json
@@ -8,6 +8,8 @@
"!src/main/java/org/zwobble/mammoth/DocumentConverter.java",
"!src/main/java/org/zwobble/mammoth/internal/docx/ZippedDocxFile.java",
"!src/main/java/org/zwobble/mammoth/internal/docx/InMemoryDocxFile.java",
+ "!src/main/java/org/zwobble/mammoth/internal/styles/parsing/LineParseException.java",
+ "!src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java",
"!src/main/java/org/zwobble/mammoth/internal/util",
"src/main/java/org/zwobble/mammoth/internal/util/InputStreamSupplier.java",
"src/main/java/org/zwobble/mammoth/internal/util/Optionals.java",
diff --git a/dotnet/Mammoth.Tests/DocumentConverterTests.cs b/dotnet/Mammoth.Tests/DocumentConverterTests.cs
index 89ade1c..92a3adf 100644
--- a/dotnet/Mammoth.Tests/DocumentConverterTests.cs
+++ b/dotnet/Mammoth.Tests/DocumentConverterTests.cs
@@ -151,13 +151,24 @@ namespace Mammoth.Tests {
}
[Fact]
- public void RulesFromPreviouslyAddedStyleMapsStillTakeEffectIfNotOverriden() {
+ public void RulesFromPreviouslyAddedStyleMapsStillTakeEffectIfNotOverridden() {
AssertSuccessfulConversion(
ConvertToHtml("underline.docx", mammoth => mammoth.AddStyleMap("u => em").AddStyleMap("strike => del")),
"<p><strong>The <em>Sunset</em> Tree</strong></p>");
}
[Fact]
+ public void ErrorIsRaisedIfStyleMapCannotBeParsed() {
+ var exception = Assert.ThrowsAny<Exception>(() =>
+ new DocumentConverter().AddStyleMap("p =>\np[style-name=] =>"));
+ Assert.Equal(
+ "error reading style map at line 2, character 14: expected token of type _STRING but was of type _CLOSE_SQUARE_BRACKET\n\n" +
+ "p[style-name=] =>\n" +
+ " ^",
+ exception.Message);
+ }
+
+ [Fact]
public void CanDisableDefaultStyleMap() {
var result = ConvertToHtml("simple-list.docx", mammoth => mammoth.DisableDefaultStyleMap());
Assert.Equal(new[]{"Unrecognised paragraph style: List Paragraph (Style ID: ListParagraph)"}, result.Warnings);
diff --git a/dotnet/Mammoth/Couscous/HorribleHacks.cs b/dotnet/Mammoth/Couscous/HorribleHacks.cs
index 9f1ac30..c97dc0a 100644
--- a/dotnet/Mammoth/Couscous/HorribleHacks.cs
+++ b/dotnet/Mammoth/Couscous/HorribleHacks.cs
@@ -26,5 +26,9 @@ namespace Mammoth.Couscous {
internal static bool equals(this TokenType first, TokenType second) {
return first == second;
}
+
+ internal static string getMessage(this System.Exception exception) {
+ return exception.Message;
+ }
}
}
diff --git a/dotnet/Mammoth/Couscous/mammoth/internal/styles/parsing/LineParseException.cs b/dotnet/Mammoth/Couscous/mammoth/internal/styles/parsing/LineParseException.cs
new file mode 100644
index 0000000..6ca9381
--- /dev/null
+++ b/dotnet/Mammoth/Couscous/mammoth/internal/styles/parsing/LineParseException.cs
@@ -0,0 +1,15 @@
+using Mammoth.Couscous.java.lang;
+
+namespace Mammoth.Couscous.org.zwobble.mammoth.@internal.styles.parsing {
+ internal class LineParseException : RuntimeException {
+ private readonly Token _token;
+
+ internal LineParseException(Token token, string message) : base(message) {
+ _token = token;
+ }
+
+ internal Token getToken() {
+ return _token;
+ }
+ }
+}
diff --git a/dotnet/Mammoth/Couscous/mammoth/internal/styles/parsing/ParseException.cs b/dotnet/Mammoth/Couscous/mammoth/internal/styles/parsing/ParseException.cs
new file mode 100644
index 0000000..73f349c
--- /dev/null
+++ b/dotnet/Mammoth/Couscous/mammoth/internal/styles/parsing/ParseException.cs
@@ -0,0 +1,8 @@
+using Mammoth.Couscous.java.lang;
+
+namespace Mammoth.Couscous.org.zwobble.mammoth.@internal.styles.parsing {
+ internal class ParseException : RuntimeException {
+ internal ParseException(string message) : base(message) {
+ }
+ }
+}
diff --git a/dotnet/Mammoth/Mammoth.csproj b/dotnet/Mammoth/Mammoth.csproj
index 4e945d0..6e2c473 100644
--- a/dotnet/Mammoth/Mammoth.csproj
+++ b/dotnet/Mammoth/Mammoth.csproj
@@ -81,6 +81,8 @@
<Compile Include="Couscous\java\util\Set.cs" />
<Compile Include="Couscous\mammoth\internal\docx\InMemoryDocxFile.cs" />
<Compile Include="Couscous\mammoth\internal\docx\ZippedDocxFile.cs" />
+ <Compile Include="Couscous\mammoth\internal\styles\parsing\LineParseException.cs" />
+ <Compile Include="Couscous\mammoth\internal\styles\parsing\ParseException.cs" />
<Compile Include="Couscous\mammoth\internal\util\Base64Encoding.cs" />
<Compile Include="Couscous\mammoth\internal\util\Casts.cs" />
<Compile Include="Couscous\mammoth\internal\util\Lists.cs" />
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java
index 40fb16b..718bb30 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java
@@ -1,22 +1,7 @@
package org.zwobble.mammoth.internal.styles.parsing;
public class ParseException extends RuntimeException {
- public ParseException(String line, int lineNumber, Token token, String message) {
- super(generateMessage(line, lineNumber, token, message));
- }
-
- private static String generateMessage(String line, int lineNumber, Token token, String message) {
- return "error reading style map at line " + lineNumber + ", character " + (token.getCharacterIndex() + 1) +
- ": " + message + "\n\n" +
- line + "\n" +
- repeatString(" ", token.getCharacterIndex()) + "^";
- }
-
- private static String repeatString(String value, int times) {
- StringBuilder builder = new StringBuilder();
- for (int i = 0; i < times; i++) {
- builder.append(value);
- }
- return builder.toString();
+ public ParseException(String message) {
+ super(message);
}
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java
index d1ceb72..8dd4099 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java
@@ -22,7 +22,7 @@ public class StyleMapParser {
try {
handleLine(styleMap, line);
} catch (LineParseException exception) {
- throw new ParseException(line, lineIndex + 1, exception.getToken(), exception.getMessage());
+ throw new ParseException(generateErrorMessage(line, lineIndex + 1, exception.getToken(), exception.getMessage()));
}
}
return styleMap.build();
@@ -63,4 +63,19 @@ public class StyleMapParser {
return HtmlPathParser.parse(tokens);
}
}
+
+ private static String generateErrorMessage(String line, int lineNumber, Token token, String message) {
+ return "error reading style map at line " + lineNumber + ", character " + (token.getCharacterIndex() + 1) +
+ ": " + message + "\n\n" +
+ line + "\n" +
+ repeatString(" ", token.getCharacterIndex()) + "^";
+ }
+
+ private static String repeatString(String value, int times) {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < times; i += 1) {
+ builder.append(value);
+ }
+ return builder.toString();
+ }
}