/* Copyright (C) 2013-2020 Nicola L.C. Talbot www.dickimaw-books.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package com.dickimawbooks.makeglossariesgui; import java.util.HashMap; import java.util.Iterator; public class XindyModule { public XindyModule(String language, String defVariant, String[] variants, String[] codepages) { this.language = language; this.defVariant = defVariant; this.variants = variants; this.codepages = codepages; } public XindyModule(String language, String[] codepages) { this(language, null, null, codepages); } public String getLanguage() { return language; } public String[] getVariants() { return variants; } public String getDefaultVariant() { return defVariant; } public boolean hasVariants() { return variants != null; } public String[] getCodePages() { return codepages; } public boolean hasCodePage(String code) { if (variants == null) { for (int i = 0; i < codepages.length; i++) { if (code.equals(codepages[i])) return true; } return false; } for (int i = 0; i < variants.length; i++) { for (int j = 0; j < codepages.length; j++) { if (code.equals(variants[i]+"-"+codepages[j])) { return true; } } } return false; } public static XindyModule getModule(String lang) { if (knownModules == null) { initKnownModules(); } return knownModules.get(lang); } public static HashMap getKnownModules() { if (knownModules == null) { initKnownModules(); } return knownModules; } public static String[] getKnownLanguages() { if (knownModules == null) { initKnownModules(); } String[] languages = new String[knownModules.size()]; int idx = 0; for (Iterator it = knownModules.keySet().iterator(); it.hasNext(); idx++) { languages[idx] = it.next(); } return languages; } private static void initKnownModules() { knownModules = new HashMap(); // need to find some way to do this programmatically knownModules.put("albanian", new XindyModule("albanian", new String[]{"latin1", "utf8"})); knownModules.put("belarusian", new XindyModule("belarusian", new String[]{"cp1251", "iso88595", "isoir111", "utf8"})); knownModules.put("bulgarian", new XindyModule("bulgarian", new String[]{"cp1251", "iso88595", "koi8-r", "utf8"})); knownModules.put("croatian", new XindyModule("croatian", new String[]{"cp1250", "latin2", "utf8"})); knownModules.put("czech", new XindyModule("czech", new String[]{"cp1250", "latin2", "utf8"})); knownModules.put("danish", new XindyModule("danish", new String[]{"cp1252", "latin9", "utf8"})); knownModules.put("dutch", new XindyModule("dutch", "ij-as-ij", new String[]{"ij-as-ij", "ij-as-y"}, new String[]{"latin1", "utf8"})); knownModules.put("english", new XindyModule("english", new String[]{"cp1252", "latin9", "utf8"})); knownModules.put("esperanto", new XindyModule("esperanto", new String[]{"latin3", "utf8"})); knownModules.put("estonian", new XindyModule("estonian", new String[]{"cp1252", "latin9", "utf8"})); knownModules.put("finnish", new XindyModule("finnish", new String[]{"cp1252", "latin9", "utf8"})); knownModules.put("french", new XindyModule("french", new String[]{"cp1252", "latin9", "utf8"})); knownModules.put("general", new XindyModule("general", new String[]{"cp1252", "cp850", "latin9", "utf8"})); knownModules.put("georgian", new XindyModule("georgian", new String[]{"utf8"})); knownModules.put("german", new XindyModule("german", "din5007", new String[]{"braille", "din5007", "duden"}, new String[]{"latin1", "utf8"})); knownModules.put("greek", new XindyModule("greek", new String[]{"iso88597", "polytonic-utf8", "translit-latin4", "translit-utf8", "utf8"})); knownModules.put("gypsy", new XindyModule("gypsy", new String[]{"northrussian-utf8"})); knownModules.put("hausa", new XindyModule("hausa", new String[]{"utf8"})); knownModules.put("hebrew", new XindyModule("hebrew", new String[]{"iso88598", "utf8"})); knownModules.put("hungarian", new XindyModule("hungarian", new String[]{"cp1250", "latin2", "utf8"})); knownModules.put("icelandic", new XindyModule("icelandic", new String[]{"cp1252", "latin9", "utf8"})); knownModules.put("italian", new XindyModule("italian", new String[]{"latin1", "utf8"})); knownModules.put("klingon", new XindyModule("klingon", new String[]{"utf8"})); knownModules.put("korean", new XindyModule("korean", new String[]{"utf8"})); knownModules.put("kurdish", new XindyModule("kurdish", "bedirxan", new String[]{"bedirxan", "turkish-i"}, new String[]{"latin5", "utf8"})); knownModules.put("latin", new XindyModule("latin", new String[]{"utf8"})); knownModules.put("latvian", new XindyModule("latvian", new String[]{"latin4", "utf8"})); knownModules.put("lithuanian", new XindyModule("lithuanian", new String[]{"latin4", "utf8"})); knownModules.put("lower-sorbian", new XindyModule("lower-sorbian", new String[]{"cp1250", "latin2", "utf8"})); knownModules.put("macedonian", new XindyModule("macedonian", new String[]{"cp1251", "iso88595", "isoir111", "utf8"})); knownModules.put("mongolian", new XindyModule("mongolian", new String[]{"cyrillic-utf8"})); knownModules.put("norwegian", new XindyModule("norwegian", new String[]{"latin1", "utf8"})); knownModules.put("persian", new XindyModule("persian", "variant1", new String[]{"variant1", "variant2", "variant3"}, new String[]{"utf8"})); knownModules.put("polish", new XindyModule("polish", new String[]{"cp1250", "latin2", "utf8"})); knownModules.put("portuguese", new XindyModule("portuguese", new String[]{"latin1", "utf8"})); knownModules.put("romanian", new XindyModule("romanian", new String[]{"latin2", "utf8"})); knownModules.put("russian", new XindyModule("russian", new String[]{"cp1251", "iso88595", "koi8-r", "translit-iso-utf8", "utf8"})); knownModules.put("serbian", new XindyModule("serbian", new String[]{"cp1251", "iso88595", "isoir111", "utf8"})); knownModules.put("slovak", new XindyModule("slovak", "large", new String[]{"large", "small"}, new String[]{"cp1250", "latin2", "utf8"})); knownModules.put("slovenian", new XindyModule("slovenian", new String[]{"cp1250", "latin2", "utf8"})); knownModules.put("spanish", new XindyModule("spanish", "modern", new String[]{"modern", "traditional"}, new String[]{"latin1", "utf8"})); knownModules.put("swedish", new XindyModule("swedish", new String[]{"cp1252", "latin9", "utf8"})); knownModules.put("turkish", new XindyModule("turkish", new String[]{"latin3", "latin5", "utf8"})); knownModules.put("ukrainian", new XindyModule("ukrainian", new String[]{"cp1251", "koi8-u", "utf8"})); knownModules.put("upper-sorbian", new XindyModule("upper-sorbian", new String[]{"cp1250", "latin2", "utf8"})); knownModules.put("vietnamese", new XindyModule("vietnamese", new String[]{"utf8"})); } private String language, defVariant; private String[] variants, codepages; private static HashMap knownModules; }