예제 #1
0
        /// <summary>
        /// Сохранение предложений в БД
        /// </summary>
        /// <returns></returns>
        private void InsertSents(List <SentenceMap> sentlist)
        {
            for (int k = 0; k < sentlist.Count; k++)
            {
                var sent  = sentlist[k];
                var ph_id = dbConnector.InsertPhraseDB(paragraphID, sent.Order);
                var nodes = sent.GetTreeList();
                // Сохранение слов предложения в БД
                for (int i = 0; i < sent.Capasity; i++)
                {
                    var word  = sent.GetWordByOrder(i);
                    var lx_id = dbConnector.SaveLex(word.EntryName.ToLower(), word.ID_PartOfSpeech);
                    var rw_id = dbConnector.SaveRealWord(word.RealWord);
                    var c_id  = dbConnector.InsertWordDB(ph_id, lx_id, word.order, word.rcind, rw_id);
                    word.WordID = c_id;
                    //Сохранение "неопределённого" слова
                    long mu_id = 0;
                    if (word.rcind > 0)
                    {
                        mu_id = dbConnector.SaveUndefWord(word.RealWord, rw_id);
                    }

                    //Сохранение термина
                    var termlist = new List <TermStruct>();
                    var term     = new TermStruct();
                    term.order  = 0;
                    term.rcind  = word.rcind;
                    term.lem_id = word.rcind == 0 ? lx_id : mu_id;
                    termlist.Add(term);
                    dbConnector.SaveTermin(termlist);
                    // Сохранение граммем слова в БД
                    var grammems = word.GetPairs();
                    var keys     = grammems.Keys;
                    foreach (var key in keys)
                    {
                        dbConnector.InsertGrammemDB(c_id, key, grammems[key]);
                    }
                }
                // Сохранение списка синтаксических связей предложения в БД
                // Связи сохраняются отдельно, потому что в них есть ссылки на родительские слова.
                // Поэтому сначала сохраняются все слова, а зетем связи
                for (int i = 0; i < sent.Capasity; i++)
                {
                    var word = sent.GetWordByOrder(i);
                    // Определение узла в синтаксическом дереве предложения по порядковому номеру слова в предложении.
                    var cnt = nodes.Where(x => x.index == word.order).Count();
                    if (cnt > 0)
                    {
                        var  node       = nodes.Where(x => x.index == word.order).First();
                        var  parentWord = sent.GetWordByOrder(node.parentind);
                        long WordID     = -1;
                        if (parentWord != null)
                        {
                            WordID = parentWord.WordID;
                        }
                        dbConnector.InsertSyntNodesDB(word.WordID, node.linktype, node.Level, WordID);
                    }
                }
            }
        }
예제 #2
0
        public void Minus(decimal multiplier, string variable, int power,
                          decimal expectedMultiplier, string expectedVariable, int expectedPower)
        {
            var term = new TermStruct {
                Multiplier = multiplier, Power = power, Variable = variable
            };
            var result = term.Minus();

            Assert.Equal(expectedMultiplier, result.Multiplier);
            Assert.Equal(expectedVariable, result.Variable);
            Assert.Equal(expectedPower, result.Power);
        }
예제 #3
0
    public void LoadLocalization()
    {
        if (IsLoaded)
        {
            return;
        }

        Dictionary <string, object> genericLocalizationObject = null;

        if (File.Exists(Application.streamingAssetsPath + "/" + localizationFile))
        {
            try
            {
                genericLocalizationObject = Json.Deserialize(File.ReadAllText(Application.streamingAssetsPath + "/" + localizationFile)) as Dictionary <string, object>;
            }
            catch (IOException e)
            {
                Debug.LogError(e.Message);
                Debug.LogWarning("Can't open localization file at " + Application.streamingAssetsPath + "/" + localizationFile);
            }
        }

        if (genericLocalizationObject != null)
        {
            loadedLocalization      = new LanguageStruct();
            loadedLocalization.i18n = new Dictionary <string, TermStruct>();

            var termsData = genericLocalizationObject["localization"] as Dictionary <string, object>;
            foreach (var item in termsData)
            {
                TermStruct term = new TermStruct();
                term.terms = new Dictionary <string, string>();

                var translationData = item.Value as Dictionary <string, object>;
                foreach (var t in translationData)
                {
                    term.terms.Add(t.Key, t.Value as string);
                }

                loadedLocalization.i18n.Add(item.Key, term);
            }

            // Default language
            defaultLang = genericLocalizationObject["default"] as string;
            currentLang = defaultLang;

            isLoaded = true;

            // Translate text in list of localized text at start
            SetLang(currentLang);
        }
    }