Skip to content

Commit

Permalink
new "spell check" column
Browse files Browse the repository at this point in the history
  • Loading branch information
danielnaber committed Mar 21, 2016
1 parent b68bc4b commit b4c5292
Showing 1 changed file with 56 additions and 5 deletions.
Expand Up @@ -26,6 +26,8 @@
import org.languagetool.databroker.ResourceDataBroker; import org.languagetool.databroker.ResourceDataBroker;
import org.languagetool.language.Contributor; import org.languagetool.language.Contributor;
import org.languagetool.rules.ConfusionSetLoader; import org.languagetool.rules.ConfusionSetLoader;
import org.languagetool.rules.Rule;
import org.languagetool.rules.spelling.hunspell.HunspellNoSuggestionRule;
import org.languagetool.tools.StringTools; import org.languagetool.tools.StringTools;
import org.languagetool.tools.Tools; import org.languagetool.tools.Tools;


Expand All @@ -44,6 +46,10 @@
*/ */
@SuppressWarnings("StringConcatenationInsideStringBufferAppend") @SuppressWarnings("StringConcatenationInsideStringBufferAppend")
public final class RuleOverview { public final class RuleOverview {

enum SpellcheckSupport {
Full, NoSuggestion, None
}


public static void main(final String[] args) throws IOException { public static void main(final String[] args) throws IOException {
if (args.length != 1) { if (args.length != 1) {
Expand All @@ -69,6 +75,7 @@ private void run(File webRoot) throws IOException {
System.out.println(" <th></th>"); System.out.println(" <th></th>");
System.out.println(" <th align=\"left\" width=\"60\">Java<br/>rules</th>"); System.out.println(" <th align=\"left\" width=\"60\">Java<br/>rules</th>");
System.out.println(" <th align=\"left\" width=\"60\">False<br/>friends</th>"); System.out.println(" <th align=\"left\" width=\"60\">False<br/>friends</th>");
System.out.println(" <th align=\"left\" width=\"60\">Spell<br/>check</th>");
System.out.println(" <th align=\"left\" width=\"60\">Confusion<br/>pairs</th>"); System.out.println(" <th align=\"left\" width=\"60\">Confusion<br/>pairs</th>");
//System.out.println(" <th valign='bottom' width=\"65\">Auto-<br/>detected</th>"); //System.out.println(" <th valign='bottom' width=\"65\">Auto-<br/>detected</th>");
System.out.println(" <th valign='bottom' align=\"left\" width=\"70\">Activity</th>"); System.out.println(" <th valign='bottom' align=\"left\" width=\"70\">Activity</th>");
Expand All @@ -94,7 +101,7 @@ private void run(File webRoot) throws IOException {
System.out.print("<tr>"); System.out.print("<tr>");
final String langCode = lang.getShortName(); final String langCode = lang.getShortName();
final File langSpecificWebsite = new File(webRoot, langCode); final File langSpecificWebsite = new File(webRoot, langCode);
final List<String> variants = getVariants(sortedLanguages, lang); final List<String> variants = getVariantNames(sortedLanguages, lang);
String variantsText = ""; String variantsText = "";
if (variants.size() > 0) { if (variants.size() > 0) {
variantsText = "<br/><span class='langVariants'>Variants for: " + StringUtils.join(variants, ", ") + "</span>"; variantsText = "<br/><span class='langVariants'>Variants for: " + StringUtils.join(variants, ", ") + "</span>";
Expand Down Expand Up @@ -140,9 +147,17 @@ private void run(File webRoot) throws IOException {
overallJavaCount++; overallJavaCount++;
} }


// false friends:
System.out.print("<td valign=\"top\" align=\"right\">" + countFalseFriendRules(falseFriendRules, lang) + "</td>"); System.out.print("<td valign=\"top\" align=\"right\">" + countFalseFriendRules(falseFriendRules, lang) + "</td>");


SpellcheckSupport spellcheckSupport = spellcheckSupport(lang, sortedLanguages);
String spellSupportStr = "";
if (spellcheckSupport == SpellcheckSupport.Full) {
spellSupportStr = "✓";
} else if (spellcheckSupport == SpellcheckSupport.NoSuggestion) {
spellSupportStr = "<span title='spell check without suggestions'>(✓)</span>";
}
System.out.print("<td valign=\"top\" align=\"right\">" + spellSupportStr + "</td>");

System.out.print("<td valign=\"top\" align=\"right\">" + countConfusionPairs(lang) + "</td>"); System.out.print("<td valign=\"top\" align=\"right\">" + countConfusionPairs(lang) + "</td>");


// activity: // activity:
Expand Down Expand Up @@ -204,11 +219,20 @@ private int countRulesForLanguage(Language lang) throws IOException {
return count; return count;
} }


private List<String> getVariants(List<Language> allLanguages, Language lang) { private List<String> getVariantNames(List<Language> allLanguages, Language lang) {
List<String> variants = new ArrayList<>(); List<Language> variants = getVariants(allLanguages, lang);
List<String> result = new ArrayList<>();
for (Language l : variants) {
result.add(l.getName().replaceAll(".*\\((.*?)\\).*", "$1").trim());
}
return result;
}

private List<Language> getVariants(List<Language> allLanguages, Language lang) {
List<Language> variants = new ArrayList<>();
for (Language sortedLanguage : allLanguages) { for (Language sortedLanguage : allLanguages) {
if (sortedLanguage.isVariant() && lang.getShortName().equals(sortedLanguage.getShortName())) { if (sortedLanguage.isVariant() && lang.getShortName().equals(sortedLanguage.getShortName())) {
variants.add(sortedLanguage.getName().replaceAll(".*\\((.*?)\\).*", "$1").trim()); variants.add(sortedLanguage);
} }
} }
return variants; return variants;
Expand Down Expand Up @@ -259,6 +283,33 @@ private int countFalseFriendRules(String falseFriendRules, Language lang) {
return count; return count;
} }



private SpellcheckSupport spellcheckSupport(Language lang, List<Language> allLanguages) throws IOException {
if (spellcheckSupport(lang) != SpellcheckSupport.None) {
return spellcheckSupport(lang);
}
List<Language> variants = getVariants(allLanguages, lang);
for (Language variant : variants) {
if (spellcheckSupport(variant) != SpellcheckSupport.None) {
return spellcheckSupport(variant);
}
}
return SpellcheckSupport.None;
}

private SpellcheckSupport spellcheckSupport(Language lang) throws IOException {
for (Rule rule : lang.getRelevantRules(JLanguageTool.getMessageBundle())) {
if (rule.isDictionaryBasedSpellingRule()) {
if (rule instanceof HunspellNoSuggestionRule) {
return SpellcheckSupport.NoSuggestion;
} else {
return SpellcheckSupport.Full;
}
}
}
return SpellcheckSupport.None;
}

private int countConfusionPairs(Language lang) { private int countConfusionPairs(Language lang) {
String path = "/" + lang.getShortName() + "/confusion_sets.txt"; String path = "/" + lang.getShortName() + "/confusion_sets.txt";
ResourceDataBroker dataBroker = JLanguageTool.getDataBroker(); ResourceDataBroker dataBroker = JLanguageTool.getDataBroker();
Expand Down

0 comments on commit b4c5292

Please sign in to comment.