private void DownloadCompletedCallback(byte[] data, object userContext) { if (data == null) { base.ApiLog.LogWarning("Downloading of profanity data from depot failed!"); return; } base.ApiLog.LogDebug("Downloading of profanity data completed"); try { WordFilters wordFilters = WordFilters.ParseFrom(data); this.m_wordFilters = wordFilters; } catch (Exception ex) { base.ApiLog.LogWarning("Failed to parse received data into protocol buffer. Ex = {0}", new object[] { ex.ToString() }); } if (this.m_wordFilters == null || !this.m_wordFilters.IsInitialized) { base.ApiLog.LogWarning("WordFilters failed to initialize"); return; } }
public void ApplyWordsFilter(string text) { //select filter words var words = text.Trim().Split(' '); var hasChanged = false; foreach (var filter in WordFilters.Where(i => i.IsChecked && !words.Contains((string)i.Key, StringComparer.OrdinalIgnoreCase))) { filter.IsChecked = false; hasChanged = true; } foreach (var filter in WordFilters.Where(i => words.Contains((string)i.Key, StringComparer.OrdinalIgnoreCase))) { filter.IsChecked = true; hasChanged = true; } if (hasChanged) { //update filter ApplyFilters(); //update selected filters WordFiltersSelected.AddRemoveRange(WordFilters.Where(i => i.IsChecked)); } }
public List <WordData> GetAnswersToPhrase(PhraseData phraseData, WordFilters wordFilters) { var words_ids_list = new List <string>(phraseData.Answers); var list = dbManager.FindWordData(x => words_ids_list.Contains(x.Id) && CheckFilters(wordFilters, x)); return(list); }
// Words contained in the text of the phrase public List <WordData> GetWordsFromPhraseText(PhraseData phraseData, WordFilters wordFilters = null) { var gameWords = GetWordsInPhrase(phraseData, wordFilters); List <WordData> outputDatas = new List <WordData>(); var phraseText = phraseData.Text; var wordsInString = phraseText.Split(' '); foreach (var wordText in wordsInString) { // We ignore apostrophes when deciding if a word is found or not var splits = wordText.Split('\''); var strippedWordText = splits[splits.Length - 1]; var wd = gameWords.FirstOrDefault(w => w.Text.Equals(strippedWordText, StringComparison.InvariantCultureIgnoreCase)); if (wd != null) { outputDatas.Add(new WordData { Id = wd.Id, Text = wordText.ToUpper() }); } else { outputDatas.Add(new WordData { Id = $"RUNTIME-{wordText}", Text = wordText.ToUpper() }); } } return(outputDatas); }
private void DownloadCompletedCallback(byte[] data) { if (data == null) { base.ApiLog.LogWarning("Downloading of profanity data from depot failed!"); } else { base.ApiLog.LogDebug("Downloading of profanity data completed"); try { WordFilters filters = WordFilters.ParseFrom(data); this.m_wordFilters = filters; } catch (Exception exception) { object[] args = new object[] { exception.ToString() }; base.ApiLog.LogWarning("Failed to parse received data into protocol buffer. Ex = {0}", args); } if ((this.m_wordFilters == null) || !this.m_wordFilters.IsInitialized) { base.ApiLog.LogWarning("WordFilters failed to initialize"); } } }
private bool CheckFilters(WordFilters filters, WordData data) { if (filters.excludeArticles && data.Article != WordDataArticle.None) { return(false); } if (filters.requireDrawings && !data.HasDrawing()) { return(false); } if (filters.excludeColorWords && data.Category == WordDataCategory.Color) { return(false); } if (filters.excludePluralDual && data.Form != WordDataForm.Singular) { return(false); } if (filters.excludeDiacritics && this.WordHasDiacriticCombo(data)) { return(false); } if (filters.excludeLetterVariations && this.WordHasLetterVariations(data)) { return(false); } if (filters.requireDiacritics && !this.WordHasDiacriticCombo(data)) { return(false); } return(true); }
public List <WordData> GetWordsByCategory(WordDataCategory choice, WordFilters filters) { if (choice == WordDataCategory.None) { return(this.GetAllWords(filters)); } return(dbManager.FindWordData(x => x.Category == choice && CheckFilters(filters, x))); }
public void Filter1ShouldFilterOutWordsWhoseMiddleCharacterIsAVowel() { var word = "get"; var wordFilters = new WordFilters(); var isFilteredOut = wordFilters.Filter1(word); Assert.True(isFilteredOut); }
public void Filter2ShouldFilterOutWordsLessThan3Characters() { var word = "th"; var wordFilters = new WordFilters(); var isFilteredOut = wordFilters.Filter2(word); Assert.True(isFilteredOut); }
public void Filter3ShouldFilterOutWordsWithT() { var word = "the"; var wordFilters = new WordFilters(); var isFilteredOut = wordFilters.Filter3(word); Assert.True(isFilteredOut); }
public void Filter2ShouldIgnorePunctuationAtStartAndEndOfWord() { var word = "'Oh!'"; var wordFilters = new WordFilters(); var isFilteredOut = wordFilters.Filter2(word); Assert.True(isFilteredOut); }
public void Filter1DoesNotFailIfGivenPunctuationInTheMiddleOfAWord() { var word = "Alice's"; var wordFilters = new WordFilters(); var isFilteredOut = wordFilters.Filter1(word); Assert.False(isFilteredOut); }
public void Filter1ShouldFilterOutMARMALADE() { var word = "MARMALADE',"; var wordFilters = new WordFilters(); var isFilteredOut = wordFilters.Filter1(word); Assert.True(isFilteredOut); }
public void Filter1ShouldNotFilterOurWordsWhichHaveAnEvenNumberOfCharactersAsTheyDontHaveAMiddleCharacter() { var word = "what"; var wordFilters = new WordFilters(); var isFilteredOut = wordFilters.Filter1(word); Assert.False(isFilteredOut); }
/// <summary> /// Gets the words in phrase, taken from field Words of data Pharse. these words are set manually in the db /// </summary> /// <returns>The words in phrase.</returns> /// <param name="phraseId">Phrase identifier.</param> /// <param name="wordFilters">Word filters.</param> public List <WordData> GetWordsInPhrase(string phraseId, WordFilters wordFilters = null) { if (wordFilters == null) { wordFilters = new WordFilters(); } var phraseData = dbManager.GetPhraseDataById(phraseId); return(GetWordsInPhrase(phraseData, wordFilters)); }
public QuestionBuilderParameters() { this.correctChoicesHistory = PackListHistory.RepeatWhenFull; this.wrongChoicesHistory = PackListHistory.RepeatWhenFull; this.useJourneyForCorrect = true; this.useJourneyForWrong = false; this.correctSeverity = SelectionSeverity.MayRepeatIfNotEnough; this.wrongSeverity = SelectionSeverity.MayRepeatIfNotEnough; this.letterFilters = new LetterFilters(); this.wordFilters = new WordFilters(); this.phraseFilters = new PhraseFilters(); }
void Awake() { _databaseManager = AppManager.I.DB; _vocabularyHelper = AppManager.I.VocabularyHelper; _playSessionDatas = _databaseManager.GetAllPlaySessionData(); _letterDatas = _databaseManager.GetAllLetterData(); _wordDatas = _databaseManager.GetAllWordData(); _phraseDatas = _databaseManager.GetAllPhraseData(); //_letterFilters = new LetterFilters(); _wordFilters = new WordFilters(); }
private bool CheckFilters(WordFilters filters, WordData data) { if (filters.allowedCategories != null && !filters.allowedCategories.Contains(data.Category)) { return(false); } if (filters.excludeArticles && data.Article != WordDataArticle.None) { return(false); } if (filters.requireDrawings && !data.HasDrawing()) { return(false); } if (filters.excludeColorWords && data.Category == WordDataCategory.Colors) { return(false); } if (filters.excludePluralDual && data.Form != WordDataForm.Singular) { return(false); } if (filters.excludeDiacritics && WordHasDiacriticCombo(data)) { return(false); } if (filters.excludeLetterVariations && WordHasLetterVariations(data)) { return(false); } if (filters.requireDiacritics && !WordHasDiacriticCombo(data)) { return(false); } if (filters.excludeDipthongs && WordHasDipthongs(data)) { return(false); } if (filters.excludeDuplicateLetters && WordContainsDuplicateLetters(data)) { return(false); } if (filters.excludeSpaces && WordContainsLetter(data, AppManager.I.DB.GetLetterDataById(" "))) { return(false); } return(true); }
public List <WordData> GetWordsInPhrase(PhraseData phraseData, WordFilters wordFilters) { var words_ids_list = new List <string>(phraseData.Words); var inputList = dbManager.FindWordData(x => words_ids_list.Contains(x.Id) && CheckFilters(wordFilters, x)); var orderedOutputList = new List <WordData>(); words_ids_list.ForEach(id => { var word = inputList.Find(x => x.Id.Equals(id)); if (word != null) { orderedOutputList.Add(word); } }); return(orderedOutputList); }
public override void Initialize() { this.m_wordFilters = null; ResourcesAPI resources = this.m_battleNet.Resources; if (resources == null) { base.ApiLog.LogWarning("ResourcesAPI is not initialized! Unable to proceed."); return; } this.m_localeName = BattleNet.Client().GetLocaleName(); if (string.IsNullOrEmpty(this.m_localeName)) { base.ApiLog.LogWarning("Unable to get Locale from Localization class"); this.m_localeName = "enUS"; } base.ApiLog.LogDebug("Locale is {0}", new object[] { this.m_localeName }); resources.LookupResource(new FourCC("BN"), new FourCC("apft"), new FourCC(this.m_localeName), new ResourcesAPI.ResourceLookupCallback(this.ResouceLookupCallback), null); }
public override void Initialize() { this.m_wordFilters = null; ResourcesAPI resources = base.m_battleNet.Resources; if (resources == null) { base.ApiLog.LogWarning("ResourcesAPI is not initialized! Unable to proceed."); } else { this.m_localeName = Localization.GetLocaleName(); if (string.IsNullOrEmpty(this.m_localeName)) { base.ApiLog.LogWarning("Unable to get Locale from Localization class"); this.m_localeName = Localization.DEFAULT_LOCALE_NAME; } object[] args = new object[] { this.m_localeName }; base.ApiLog.LogDebug("Locale is {0}", args); resources.LookupResource(new FourCC("BN"), new FourCC("apft"), new FourCC(this.m_localeName), new ResourcesAPI.ResourceLookupCallback(this.ResouceLookupCallback), null); } }
private bool CheckFilters(WordFilters wordFilters, PhraseFilters phraseFilters, PhraseData data) { // Words are checked with filters. At least 1 must fulfill the requirement. var words = GetWordsInPhrase(data, wordFilters); int nOkWords = words.Count; var answers = GetAnswersToPhrase(data, wordFilters); int nOkAnswers = answers.Count; var wordsInPhraseText = GetWordsFromPhraseText(data, wordFilters); if (phraseFilters.maxLength != 0 && data.Text.Length > phraseFilters.maxLength) { return(false); } if (phraseFilters.maxWords != 0 && wordsInPhraseText.Count > phraseFilters.maxWords) { return(false); } if (phraseFilters.requireWords && nOkWords == 0) { return(false); } if (phraseFilters.requireAtLeastTwoWords && nOkWords <= 1) { return(false); } if (phraseFilters.requireAnswersOrWords && nOkAnswers == 0 && nOkWords == 0) { return(false); } return(true); }
private bool CheckFilters(WordFilters wordFilters, PhraseFilters phraseFilters, PhraseData data) { // Words are checked with filters. At least 1 must fulfill the requirement. var words = GetWordsInPhrase(data, wordFilters); int nOkWords = words.Count; var answers = GetAnswersToPhrase(data, wordFilters); int nOkAnswers = answers.Count; if (phraseFilters.requireWords && (nOkWords == 0)) { return(false); } if (phraseFilters.requireAtLeastTwoWords && (nOkWords <= 1)) { return(false); } if (phraseFilters.requireAnswersOrWords && (nOkAnswers == 0 && nOkWords == 0)) { return(false); } return(true); }
public List <PhraseData> GetPhrasesNotIn(WordFilters wordFilters, PhraseFilters phraseFilters, params PhraseData[] tabooArray) { var tabooList = new List <PhraseData>(tabooArray); return(dbManager.FindPhraseData(x => !tabooList.Contains(x) && CheckFilters(wordFilters, phraseFilters, x))); }
public List <PhraseData> GetPhrasesByCategory(PhraseDataCategory choice, WordFilters wordFilters, PhraseFilters phraseFilters) { return(dbManager.FindPhraseData(x => x.Category == choice && CheckFilters(wordFilters, phraseFilters, x))); }
public List <PhraseData> GetAllPhrases(WordFilters wordFilters, PhraseFilters phraseFilters) { return(dbManager.FindPhraseData(x => CheckFilters(wordFilters, phraseFilters, x))); }
private List <WordData> GetWordsByLetters(WordFilters filters, LetterData[] okLettersArray, LetterData[] tabooLettersArray, LetterEqualityStrictness letterEqualityStrictness = LetterEqualityStrictness.LetterBase) { if (okLettersArray == null) { okLettersArray = new LetterData[] { } } ; if (tabooLettersArray == null) { tabooLettersArray = new LetterData[] { } } ; var okLetters = new HashSet <LetterData>(okLettersArray); var tabooLetters = new HashSet <LetterData>(tabooLettersArray); var comparer = new StrictLetterDataComparer(letterEqualityStrictness); List <WordData> wordsByLetters = dbManager.FindWordData(word => { if (!CheckFilters(filters, word)) { return(false); } var lettersInWord = GetLettersInWord(word); if (tabooLetters.Count > 0) { foreach (var letter in lettersInWord) { if (tabooLetters.Contains(letter, comparer)) { return(false); } } } if (okLetters.Count > 0) { bool hasAllOkLetters = true; foreach (var okLetter in okLetters) { bool hasThisLetter = false; foreach (var letter in lettersInWord) { if (letter.IsSameLetterAs(okLetter, letterEqualityStrictness)) { hasThisLetter = true; break; } } if (!hasThisLetter) { hasAllOkLetters = false; break; } } if (!hasAllOkLetters) { return(false); } } return(true); } ); return(wordsByLetters); }
public List <WordData> GetWordsWithoutLetters(WordFilters filters, LetterEqualityStrictness letterEqualityStrictness = LetterEqualityStrictness.LetterBase, params LetterData[] tabooLetters) { return(GetWordsByLetters(filters, null, tabooLetters, letterEqualityStrictness)); }
public List <WordData> GetWordsWithoutLetter(WordFilters filters, LetterData tabooLetter, LetterEqualityStrictness letterEqualityStrictness = LetterEqualityStrictness.Letter) { return(GetWordsByLetters(filters, null, new[] { tabooLetter }, letterEqualityStrictness)); }
public List <WordData> GetWordsWithLetter(WordFilters filters, LetterData okLetter, LetterEqualityStrictness letterEqualityStrictness = LetterEqualityStrictness.LetterBase) { return(GetWordsByLetters(filters, new[] { okLetter }, null, letterEqualityStrictness)); }