Skip to content

Commit

Permalink
improve exception message to include file name
Browse files Browse the repository at this point in the history
  • Loading branch information
danielnaber committed Apr 4, 2015
1 parent 904e236 commit 6664afa
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
Expand Up @@ -46,8 +46,7 @@ public abstract class AbstractSimpleReplaceRule extends Rule {
protected abstract Map<String, List<String>> getWrongWords();

protected static Map<String, List<String>> load(String path) {
InputStream stream = JLanguageTool.getDataBroker().getFromRulesDirAsStream(path);
return new SimpleReplaceDataLoader().loadWords(stream);
return new SimpleReplaceDataLoader().loadWords(path);
}

/**
Expand Down
Expand Up @@ -18,22 +18,25 @@
*/
package org.languagetool.rules;

import org.languagetool.JLanguageTool;

import java.io.InputStream;
import java.util.*;

/**
* Load replacement data from a UTF-8 stream. One replacement per line,
* word and its replacements separated by an equals sign. Both the
* Load replacement data from a UTF-8 file. One replacement per line,
* word and its replacement(s) separated by an equals sign. Both the
* word and the replacements can have more than one form if separated
* by pipe symbols.
* @since 3.0
*/
public final class SimpleReplaceDataLoader {

/**
* Load replacement rules from a utf-8 stream.
* Load replacement rules from a utf-8 file in the classpath.
*/
public Map<String, List<String>> loadWords(InputStream stream) {
public Map<String, List<String>> loadWords(String path) {
InputStream stream = JLanguageTool.getDataBroker().getFromRulesDirAsStream(path);
Map<String, List<String>> map = new HashMap<>();
try (Scanner scanner = new Scanner(stream, "utf-8")) {
while (scanner.hasNextLine()) {
Expand All @@ -43,7 +46,8 @@ public Map<String, List<String>> loadWords(InputStream stream) {
}
String[] parts = line.split("=");
if (parts.length != 2) {
throw new RuntimeException("Could not load simple replacement data. Error in line '" + line + "', expected format 'word=replacement'");
throw new RuntimeException("Could not load simple replacement data from: " + path + ". " +
"Error in line '" + line + "', expected format 'word=replacement'");
}
String[] wrongForms = parts[0].split("\\|");
List<String> replacements = Arrays.asList(parts[1].split("\\|"));
Expand Down

0 comments on commit 6664afa

Please sign in to comment.