Esempio n. 1
0
 };                                                                                        // HACK: this is just for dancing dots, to be removed later on
 private bool CheckFilters(LetterFilters filters, LetterData data)
 {
     if (filters.requireDiacritics && !data.IsOfKindCategory(LetterKindCategory.DiacriticCombo))
     {
         return(false);
     }
     if (filters.excludeDiacritics && data.IsOfKindCategory(LetterKindCategory.DiacriticCombo))
     {
         return(false);
     }
     if (filters.excludeDiacritics_keepMain && data.IsOfKindCategory(LetterKindCategory.DiacriticCombo) &&
         !mainDiacriticsIds.Contains(data.Symbol))
     {
         return(false);
     }
     if (filters.excludeLetterVariations && data.IsOfKindCategory(LetterKindCategory.LetterVariation))
     {
         return(false);
     }
     if (data.IsOfKindCategory(LetterKindCategory.Symbol))
     {
         return(false);                                                  // always skip symbols
     }
     return(true);
 }
 public static void DebugLetter(Db.LetterData letterData)
 {
     byte[] bytesUtf16 = Encoding.Unicode.GetBytes(letterData.Isolated);
     foreach (var item in bytesUtf16)
     {
         Debug.Log("DebugLetter " + letterData.Id + " lenght: " + letterData.Isolated.Length + " - " + item);
     }
     // Encoding.Convert(Encoding.UTF8, Encoding.Unicode, encodedBytes);
     //Debug.Log("DebugLetter " + str + " lenght: " + str.Length);
 }
        /// <summary>
        /// Returns the list of letters found in a word string
        /// </summary>
        public static List <Db.LetterData> SplitWordIntoLetters(string arabicWord, bool reverseOrder = false, bool separateDiacritics = false)
        {
            List <Db.LetterData> allLetterData = new List <Db.LetterData>(AppManager.I.DB.StaticDatabase.GetLetterTable().GetValuesTyped());

            var returnList = new List <Db.LetterData>();

            char[] chars = arabicWord.ToCharArray();
            if (reverseOrder)
            {
                Array.Reverse(chars);
            }

            //Debug.Log(arabicWord);
            for (int i = 0; i < chars.Length; i++)
            {
                char   _char         = chars[i];
                string unicodeString = GetHexUnicodeFromChar(_char);

                Db.LetterData letterData = allLetterData.Find(l => l.Isolated_Unicode == unicodeString);
                if (letterData != null)
                {
                    if (!separateDiacritics && letterData.Kind == Db.LetterDataKind.Symbol && letterData.Type == Db.LetterDataType.DiacriticSymbol)
                    {
                        var symbolId       = letterData.Id;
                        var lastLetterData = allLetterData.Find(l => l.Id == returnList[returnList.Count - 1].Id);
                        var baseLetterId   = lastLetterData.Id;
                        //Debug.Log(symbolId);
                        var diacriticLetterData = allLetterData.Find(l => l.Symbol == symbolId && l.BaseLetter == baseLetterId);
                        returnList.RemoveAt(returnList.Count - 1);
                        //Debug.Log(baseLetterId);
                        //Debug.Log(diacriticLetterData);
                        if (diacriticLetterData == null)
                        {
                            Debug.LogError("NULL " + baseLetterId + " + " + symbolId + ": we remove the diacritic for now.");
                            // returnList.Add(diacriticLetterData.Id);
                        }
                        else
                        {
                            returnList.Add(diacriticLetterData);
                        }
                    }
                    else
                    {
                        returnList.Add(letterData);
                    }
                }
            }

            return(returnList);
        }
 public LL_LetterData(Db.LetterData _data)
 {
     Data = _data;
 }
 public LL_LetterData(string _id, Db.LetterData _data) : this(_data)
 {
 }