package com.hughes.android.dictionary.parser.wiktionary;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.apache.commons.text.StringEscapeUtils;
+
import com.hughes.android.dictionary.engine.EntryTypeName;
import com.hughes.android.dictionary.engine.HtmlEntry;
import com.hughes.android.dictionary.engine.IndexBuilder;
import com.hughes.android.dictionary.parser.WikiTokenizer;
import com.hughes.util.StringUtil;
-import org.apache.commons.lang3.StringEscapeUtils;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Pattern;
-
public class WholeSectionToHtmlParser extends AbstractWiktionaryParser {
public static final String NAME = "WholeSectionToHtmlParser";
void addFunctionCallbacks(
Map<String, FunctionCallback<WholeSectionToHtmlParser>> functionCallbacks);
}
- static final Map<String,LangConfig> isoToLangConfig = new LinkedHashMap<String,LangConfig>();
+ static final Map<String,LangConfig> isoToLangConfig = new LinkedHashMap<>();
static {
final Pattern enSkipSections = Pattern.compile(".*(Translations|Anagrams|References).*");
isoToLangConfig.put("EN", new LangConfig() {
if (sectionName.equalsIgnoreCase("Antonyms")) {
return EntryTypeName.ANTONYM_MULTI;
}
- if (EnParser.partOfSpeechHeader.matcher(sectionName).matches()) {
- // We need to put it in the other index, too (probably)
- return null;
- }
- if (sectionName.equalsIgnoreCase("Derived Terms")) {
- return null;
- }
+ // We need to put it in the other index, too (probably) ?
+ // EnParser.partOfSpeechHeader.matcher(sectionName).matches()
+
+ // Needs special handling?
+ // sectionName.equalsIgnoreCase("Derived Terms")
return null;
}
@Override
public boolean skipWikiLink(WikiTokenizer wikiTokenizer) {
final String wikiText = wikiTokenizer.wikiLinkText();
- if (wikiText.startsWith("Category:")) {
- return true;
- }
- return false;
+ return wikiText.startsWith("Category:");
}
@Override
public String adjustWikiLink(String wikiLinkDest, String wikiLinkText) {
@Override
public boolean skipWikiLink(WikiTokenizer wikiTokenizer) {
final String wikiText = wikiTokenizer.wikiLinkText();
- if (wikiText.startsWith("Categoría:")) {
- return true;
- }
- return false;
+ return wikiText.startsWith("Categoría:");
}
@Override
public String adjustWikiLink(String wikiLinkDest, String wikiLinkText) {
@Override
public boolean skipWikiLink(WikiTokenizer wikiTokenizer) {
final String wikiText = wikiTokenizer.wikiLinkText();
- if (wikiText.startsWith("Categoría:")) {
- return true;
- }
- return false;
+ return wikiText.startsWith("Categoria:");
}
@Override
public String adjustWikiLink(String wikiLinkDest, String wikiLinkText) {
@Override
public boolean skipWikiLink(WikiTokenizer wikiTokenizer) {
final String wikiText = wikiTokenizer.wikiLinkText();
- if (wikiText.startsWith("Kategorie:")) {
- return true;
- }
- return false;
+ return wikiText.startsWith("Kategorie:");
}
@Override
public String adjustWikiLink(String wikiLinkDest, String wikiLinkText) {
@Override
public boolean skipWikiLink(WikiTokenizer wikiTokenizer) {
final String wikiText = wikiTokenizer.wikiLinkText();
- if (wikiText.startsWith("Categoria:")) {
- return true;
- }
- return false;
+ return wikiText.startsWith("Categoria:");
}
@Override
public String adjustWikiLink(String wikiLinkDest, String wikiLinkText) {
@Override
public boolean skipWikiLink(WikiTokenizer wikiTokenizer) {
final String wikiText = wikiTokenizer.wikiLinkText();
- if (wikiText.startsWith("Catégorie:")) {
- return true;
- }
- return false;
+ return wikiText.startsWith("Catégorie:");
}
@Override
public String adjustWikiLink(String wikiLinkDest, String wikiLinkText) {
if (webUrlTemplate != null) {
final String webUrl = String.format(webUrlTemplate, title);
+ String asciiWebUrl = null;
// URI.create can raise an exception e.g. if webUrl contains %, just ignore those cases.
try {
- callback.builder.append(String.format("<p> <a href=\"%s\">%s</a>", URI.create(webUrl).toASCIIString(), escapeHtmlLiteral(webUrl)));
+ asciiWebUrl = URI.create(webUrl).toASCIIString();
} catch (Exception e) {
}
+ if (asciiWebUrl != null) {
+ callback.builder.append("<p> <a href=\"");
+ callback.builder.append(asciiWebUrl);
+ callback.builder.append("\">");
+ callback.builder.append(escapeHtmlLiteral(webUrl));
+ callback.builder.append("</a>");
+ }
}
htmlEntry.html = callback.builder.toString();
indexedEntry.isValid = true;
titleIndexBuilder.addEntryWithString(indexedEntry, wikiTokenizer.wikiLinkText(), sectionEntryTypeName);
}
if (!StringUtil.isNullOrEmpty(linkDest)) {
- builder.append(String.format("<a href=\"%s\">", HtmlEntry.formatQuickdicUrl("", linkDest)));
+ builder.append("<a href=\"");
+ builder.append(HtmlEntry.formatQuickdicUrl("", linkDest));
+ builder.append("\">");
super.onWikiLink(wikiTokenizer);
- builder.append(String.format("</a>"));
+ builder.append("</a>");
} else {
super.onWikiLink(wikiTokenizer);
}
}
return;
}
- builder.append(String.format("\n<h%d>", depth));
+ builder.append("\n<h");
+ builder.append(depth);
+ builder.append('>');
dispatch(headingText, null);
- builder.append(String.format("</h%d>\n", depth));
+ builder.append("</h");
+ builder.append(depth);
+ builder.append(">\n");
}
- final List<Character> listPrefixStack = new ArrayList<Character>();
+ final List<Character> listPrefixStack = new ArrayList<>();
@Override
public void onListItem(WikiTokenizer wikiTokenizer) {
}
final String prefix = wikiTokenizer.listItemPrefix();
while (listPrefixStack.size() < prefix.length()) {
- builder.append(String.format("<%s>",
- WikiTokenizer.getListTag(prefix.charAt(listPrefixStack.size()))));
+ builder.append('<');
+ builder.append(WikiTokenizer.getListTag(prefix.charAt(listPrefixStack.size())));
+ builder.append('>');
listPrefixStack.add(prefix.charAt(listPrefixStack.size()));
}
builder.append("<li>");
}
while (listPrefixStack.size() > nextListHeader.length()) {
final char prefixChar = listPrefixStack.remove(listPrefixStack.size() - 1);
- builder.append(String.format("</%s>\n", WikiTokenizer.getListTag(prefixChar)));
+ builder.append("</");
+ builder.append(WikiTokenizer.getListTag(prefixChar));
+ builder.append(">\n");
}
}