Exemple #1
0
        /// <summary>
        /// Alter the lex entirely including all of its sublex
        /// </summary>
        /// <param name="context">Contextual nature of the request.</param>
        /// <param name="obfuscationLevel">-100 to 100 range.</param>
        /// <returns>the new lex</returns>
        private ILexica Mutate(MessagingType sensoryType, short obfuscationLevel = 0)
        {
            IDictata dict   = GetDictata();
            ILexica  newLex = Clone();

            if (dict != null)
            {
                IDictata newDict = null;
                if (obfuscationLevel != 0)
                {
                    newDict = Thesaurus.ObscureWord(dict, obfuscationLevel);
                }
                else if (Type != LexicalType.ProperNoun &&
                         (Context.Severity + Context.Elegance + Context.Quality > 0 ||
                          Context.Language != dict.Language ||
                          Context.Plural != dict.Plural ||
                          Context.Possessive != dict.Possessive ||
                          Context.Tense != dict.Tense ||
                          Context.Perspective != dict.Perspective ||
                          Context.Determinant != dict.Determinant ||
                          Context.GenderForm.Feminine != dict.Feminine))
                {
                    newDict = Thesaurus.GetSynonym(dict, Context);
                }

                if (newDict != null)
                {
                    newLex.Phrase = newDict.Name;
                }
            }

            return(newLex);
        }