protected override List <Meaning> ValidateMeanings(Acronym acronym) { string acronymCaption = _setAcronymToLowerCase ? acronym.Caption.ToLowerInvariant() : acronym.Caption; acronymCaption = HttpUtility.UrlEncode(StringTreatment.RemoveDiacritics(acronymCaption) .Replace(".", string.Empty) .Replace("/", string.Empty)); List <string> meanings = getMeanings(acronymCaption); if (meanings != null && meanings.Count == 0 && acronymCaption.Contains("-")) { meanings = getMeanings(acronymCaption.Replace("-", string.Empty)); } List <Meaning> validatedMeanings = null; if (meanings != null) { validatedMeanings = acronym.Meanings.Where(x => meanings.Any(y => y.IndexOf(x.Caption.ToUpperInvariant()) >= 0 || x.Caption.ToUpperInvariant().IndexOf(y) >= 0)).ToList(); } return(validatedMeanings); }
public void OnCheckInput(string text) { // Check user string // Store user action in GameStats string lexicomixWord = mediaController.GetClues(testOrder[nextTestIndex]).ToLower(); text = text.ToLower(); if (text == lexicomixWord) { StartCoroutine(ComputeNextTest()); return; } text = StringTreatment.RemoveDiacritics(text); lexicomixWord = StringTreatment.RemoveDiacritics(mediaController.GetClues(testOrder[nextTestIndex])); lexicomixWord = lexicomixWord.Replace("-", "").Replace(" ", ""); if (text == lexicomixWord) { StartCoroutine(ComputeNextTest()); } }
private string cleanMatch(string match) { StringBuilder cleanMatch = new StringBuilder(StringTreatment.RemoveDiacritics(match)); cleanMatch.Replace("-", string.Empty); cleanMatch.Replace("/", string.Empty); return(cleanMatch.ToString()); }
public void BuildingSyllable(CharPack pack) { Debug.Log("Input Syllable: " + thisSyllable.Text); Debug.Log("Pack: " + pack); bool hit = true; char[] syllArray = thisSyllable.Text.ToCharArray(); for (int i = 0; i < syllArray.Length; i++) { // String treatments (Remove Diacritics locked by default, for now) string input = myCharInputs[i].text.ToLower().Trim(); string reference = StringTreatment.RemoveDiacritics(syllArray[i].ToString().ToLower().Trim()); Debug.Log(input + "=" + reference); if (!input.Equals(reference)) { Debug.Log(myCharInputs[i].text + "=" + syllArray[i]); hit = false; break; } myCharInputs[i].transform.parent.GetComponent <Image>().color = Color.green; } if (pack.enter) { myInputZoneParent.SendWholeInputText(); return; } if (hit) { SyllableHit(pack.charIndex); //LockInputs(); return; } // Move forward/backward according to key pressed if (pack.backspace || pack.leftArrow) { if (pack.charIndex > 0) { myInputZoneParent.SelectPreviousCharInput(pack.charIndex); } } else { myInputZoneParent.SelectNextCharInput(pack.charIndex); } }
private bool cutDefinitionExplicit(string match, ref string definition) { bool ret = false; MatchCollection upperCaseLetters = Regex.Matches(StringTreatment.RemoveDiacritics(definition), @"\p{Lu}", _cutBeginOfDefinition ? RegexOptions.RightToLeft : RegexOptions.None); List <char> matchParts = new List <char>(cleanMatch(match).ToUpperInvariant().ToCharArray()); foreach (Match upperCaseLetter in upperCaseLetters) { matchParts.Remove(upperCaseLetter.Value.ToCharArray()[0]); if (matchParts.Count == 0) { ret = true; if (_cutBeginOfDefinition) { string leftOfUpperCaseLetter = definition.Substring(0, upperCaseLetter.Index); Match restOfAcronym = Regex.Match(leftOfUpperCaseLetter, "(^|\\s)(?<restOfAcronym>(?:[A-Z]\\.?\\-?\\/?)+)$", RegexOptions.RightToLeft); if (restOfAcronym.Success) { if (restOfAcronym.Groups["restOfAcronym"].Value.StartsWith(upperCaseLetter.Value)) { definition = definition.Substring(restOfAcronym.Index).TrimStart(); } else { ret = false; } } else { Match beginOfWord = Regex.Match(leftOfUpperCaseLetter, "(^|\\s)", RegexOptions.RightToLeft); definition = definition.Substring(beginOfWord.Success ? beginOfWord.Index + (beginOfWord.Value.Length > 0 ? 1 : 0) : upperCaseLetter.Index); } } else if (_cutEndOfDefinition) { string rightOfUpperCaseLetter = definition.Substring(upperCaseLetter.Index); Match endOfWord = Regex.Match(rightOfUpperCaseLetter, "($|\\s)"); definition = definition.Substring(0, upperCaseLetter.Index + (endOfWord.Success ? endOfWord.Index : 0)); } break; } } return(ret); }
private bool cutDefinitionImplicit(string match, ref string definition) { int numberOfCharacters = 0; int numberOfSeparatorsSinceLastIncludedWord = 0; List <char> matchParts = new List <char>(cleanMatch(match).ToUpperInvariant().ToCharArray()); List <char> removedMatchParts = new List <char>(matchParts.Count); List <string> shorterMatchedDefinitionParts = new List <string>(); IEnumerable <string> definitionParts = StringTreatment.RemoveDiacritics(definition).ToUpperInvariant().Split(_wordSeparators); if (_cutBeginOfDefinition) { definitionParts = definitionParts.Reverse(); } foreach (string definitionPart in definitionParts) { if (definitionPart.Length == 0 && matchParts.Count == 0) { numberOfSeparatorsSinceLastIncludedWord++; } if (definitionPart.Length > 0) { char definitionPartFirstLetter = definitionPart.Substring(0, 1).ToCharArray()[0]; if (matchParts.Count == 0) { if (!removedMatchParts.Contains(definitionPartFirstLetter) || definitionPart.Length <= 3 || shorterMatchedDefinitionParts.Where(x => x.StartsWith(definitionPart.Substring(0, 1))).All(x => x.Length > 3)) { break; } else { numberOfCharacters = numberOfCharacters + 1 + numberOfSeparatorsSinceLastIncludedWord; numberOfSeparatorsSinceLastIncludedWord = 0; } } numberOfCharacters += definitionPart.Length; if (matchParts.Remove(definitionPartFirstLetter)) { removedMatchParts.Add(definitionPartFirstLetter); shorterMatchedDefinitionParts.Add(definitionPart); } else if (removedMatchParts.Contains(definitionPartFirstLetter)) { string longerMatchedDefinitionPart = shorterMatchedDefinitionParts.OrderBy(x => x.Length) .FirstOrDefault(x => x.Length < definitionPart.Length && x.StartsWith(definitionPart.Substring(0, 1))); if (longerMatchedDefinitionPart != null) { shorterMatchedDefinitionParts.Remove(longerMatchedDefinitionPart); shorterMatchedDefinitionParts.Add(definitionPart); } } } if (matchParts.Count > 0) { numberOfCharacters++; } } bool ret = matchParts.Count == 0; if (ret) { if (_cutBeginOfDefinition) { definition = definition.Substring(definition.Length - numberOfCharacters); } else if (_cutEndOfDefinition) { definition = definition.Substring(0, numberOfCharacters); } } return(ret); }
public void BuildingSyllable2(CharPack pack) { Debug.Log("Full Syllable: " + thisSyllable.Text); Debug.Log("Pack: " + pack); if (pack.enter) { myInputZoneParent.SendWholeInputText(); return; } int hits = thisSyllable.Text.Length; char[] syllArray = thisSyllable.Text.ToCharArray(); for (int i = 0; i < syllArray.Length; i++) { // String treatments (Remove Diacritics locked by default, for now) string input = myCharInputs[i].text.ToLower().Trim(); string reference = StringTreatment.RemoveDiacritics(char.ToLower(syllArray[i]).ToString()); Debug.Log(input + " should be equal to " + reference); if (!input.Equals(reference)) { Debug.Log(myCharInputs[i].text + "!=" + syllArray[i]); if (input.Length == 0 && !thisSyllable.Text.Contains(input)) { myCharInputs[i].transform.parent.GetComponent <Image>().color = Color.red; } if (input.Length == 0 && thisSyllable.Text.Contains(input)) { myCharInputs[i].transform.parent.GetComponent <Image>().color = Color.yellow; } } else { hits--; myCharInputs[i].transform.parent.GetComponent <Image>().color = Color.green; //LockInput(i); } if (hits <= 0) { SyllableHit(pack.charIndex); return; } } foreach (LXInputField g in myCharInputs) { if (g.text.Length == 0) { g.transform.parent.GetComponent <Image>().color = originalColor; } } if (pack.backspace && pack.charString.Length != 0) { myCharInputs[pack.charIndex].text = string.Empty; return; } // Move forward/backward according to key pressed if (pack.backspace || pack.leftArrow) { //myCharInputs[pack.charIndex].text = string.Empty; if (pack.charIndex > 0) { myInputZoneParent.SelectPreviousCharInput(pack.charIndex); } } else { myInputZoneParent.SelectNextCharInput(pack.charIndex); } }