Hindi
* Added Hindi language * Removed the hardcoded special characters from language validation. Now reading them from the .yml * improved method of hiding the letters on 0 and 1, when needed * virtual keypad adjustments * improved the single-letter validation during build time * improved Devanagari validation script * improved sorting when filters are on
This commit is contained in:
parent
622a954633
commit
f8e6668281
18 changed files with 1305176 additions and 103 deletions
|
|
@ -43,7 +43,7 @@ ext.validateLanguageFiles = { definitionsDir, dictionariesDir, validationDir ->
|
|||
|
||||
|
||||
ext.parseLanguageDefintion = { File languageFile, String dictionariesDir ->
|
||||
String alphabet = ""
|
||||
String alphabet = ''
|
||||
int layoutKey = 0
|
||||
HashMap<String, String> sounds = new HashMap<>()
|
||||
HashMap<String, String> layoutSounds = new HashMap<>()
|
||||
|
|
@ -58,10 +58,6 @@ ext.parseLanguageDefintion = { File languageFile, String dictionariesDir ->
|
|||
String localeString = ""
|
||||
String dictionaryFileName = ""
|
||||
|
||||
alphabet = languageFile.name.contains("Catalan") ? '·' : alphabet
|
||||
alphabet = languageFile.name.contains("Hebrew") || languageFile.name.contains("Yiddish") ? '"' : alphabet
|
||||
alphabet = languageFile.name.contains("Korean") ? ':' : alphabet
|
||||
|
||||
for (String line : languageFile.readLines()) {
|
||||
if (
|
||||
line.matches("^[a-zA-Z].*")
|
||||
|
|
@ -110,19 +106,15 @@ ext.parseLanguageDefintion = { File languageFile, String dictionariesDir ->
|
|||
|
||||
// alphabet string
|
||||
def lineCharacters = extractAlphabetCharsFromLine(line)
|
||||
lineCharacters = lineCharacters.isEmpty() ? extractAlphabetExtraCharsFromLine(languageFile.name, line) : lineCharacters
|
||||
|
||||
alphabet += lineCharacters
|
||||
|
||||
// sounds, single letters
|
||||
// sounds, single letters or special characters that are treated as letters
|
||||
if (lineCharacters) {
|
||||
lineCharacters.each { letter ->
|
||||
layoutSounds.put(letter, layoutKey.toString())
|
||||
}
|
||||
} else if (line.contains("PUNCTUATION")) {
|
||||
layoutSounds.put("-", layoutKey.toString())
|
||||
layoutSounds.put(".", layoutKey.toString())
|
||||
layoutSounds.put("'", layoutKey.toString())
|
||||
layoutSounds.put('"', layoutKey.toString())
|
||||
layoutSounds.put('·', layoutKey.toString())
|
||||
}
|
||||
|
||||
if (isLayoutLine(line)) {
|
||||
|
|
@ -178,7 +170,8 @@ ext.parseLanguageDefintion = { File languageFile, String dictionariesDir ->
|
|||
|
||||
// this cannot be static, because DictionaryTools will not be visible
|
||||
def validateDictionary(File dictionaryFile, String alphabet, HashMap<String, String> sounds, boolean isAlphabeticLanguage, Locale locale, int maxErrors, String csvDelimiter, int maxWordFrequency) {
|
||||
final VALID_CHARS = alphabet.toUpperCase(locale) == alphabet ? "^[${alphabet}\\-\\.']+\$" : "^[${alphabet}${alphabet.toUpperCase(locale)}\\-\\.']+\$"
|
||||
String regexSafeAlphabet = alphabet.replaceAll("([\\[\\]\\-\\.])", "")
|
||||
final VALID_CHARS = alphabet.toUpperCase(locale) == alphabet ? "^[${regexSafeAlphabet}\\.\\-]+\$" : "^[${regexSafeAlphabet}${regexSafeAlphabet.toUpperCase(locale)}\\.\\-]+\$"
|
||||
|
||||
int errorCount = 0
|
||||
String errorMsg = ''
|
||||
|
|
@ -238,6 +231,30 @@ def validateDictionary(File dictionaryFile, String alphabet, HashMap<String, Str
|
|||
|
||||
//////////////////// PARSING ////////////////////
|
||||
|
||||
static def extractAlphabetExtraCharsFromLine(String languageName, String line) {
|
||||
if (languageName == null || !line.contains('PUNCTUATION') || !isLayoutLine(line)) {
|
||||
return ''
|
||||
}
|
||||
|
||||
final DEFAULT = "'-."
|
||||
|
||||
if (languageName.contains('Korean')) {
|
||||
return DEFAULT
|
||||
} else if (languageName.contains("Hebrew") || languageName.contains("Yiddish")) {
|
||||
return DEFAULT + '"'
|
||||
}
|
||||
|
||||
String allChars = line
|
||||
.replaceFirst('\\].*', '')
|
||||
.replaceFirst('^\\s+- \\[', '')
|
||||
.replaceFirst("PUNCTUATION[^,\\s]*", '')
|
||||
.replace(',', '')
|
||||
.replace(' ', '')
|
||||
|
||||
return DEFAULT + allChars
|
||||
}
|
||||
|
||||
|
||||
static def extractAlphabetCharsFromLine(String line) {
|
||||
if (line.contains('PUNCTUATION') || line.contains('SPECIAL') || !isLayoutLine(line)) {
|
||||
return ''
|
||||
|
|
@ -298,7 +315,7 @@ static def validateWord(String word, String validCharacters, boolean isAlphabeti
|
|||
errors += "${errorMsgPrefix}. Found a garbage word: '${word}' on line ${lineNumber}.\n"
|
||||
}
|
||||
|
||||
if (isAlphabeticLanguage && word.matches("^(.|\\p{L}\\p{M}?)\$")) {
|
||||
if (isAlphabeticLanguage && word.trim().length() == 1) {
|
||||
errorCount++
|
||||
errors += "${errorMsgPrefix}. Found a single letter: '${word}' on line ${lineNumber}. Only uppercase single letters are allowed. The rest of the alphabet will be added automatically.\n"
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue