示例#1
0
        /// <summary>
        /// Adds new definition pair
        /// </summary>
        /// <param name="A">a.</param>
        /// <param name="B">The b.</param>
        public void Add(String A, String B)
        {
            var entry = new transliterationPairEntry(A, B);

            fromAtoB.Add(entry);
            fromBtoA.Add(entry.GetInversed());
        }
        /// <summary>
        /// Returns an inversed definition
        /// </summary>
        /// <returns></returns>
        public transliterationPairEntry GetInversed()
        {
            transliterationPairEntry tmp = new transliterationPairEntry();

            tmp.B = A;
            tmp.A = B;
            return(tmp);
        }
示例#3
0
        /// <summary>
        /// Populates the pairs from string form
        /// </summary>
        /// <param name="input">The input.</param>
        public void LoadFromString(String input)
        {
            // loading parameters
            var par = transliteration.regex_paramSelector.Matches(input);

            foreach (Match m in par)
            {
                String[] parParts = m.Value.Split(new string[] { transliteration.DEF_PARAM_SEPARATOR }, StringSplitOptions.RemoveEmptyEntries);
                if (parParts.Length == 2)
                {
                    switch (parParts[0].ToLower())
                    {
                    case "lang_a_id":
                        lang_A_id = parParts[1];
                        break;

                    case "lang_b_id":
                        lang_B_id = parParts[1];
                        break;

                    case "auto_capital_case":
                        if (parParts[1] == "1")
                        {
                            auto_capital_case = true;
                        }
                        if (parParts[1].ToLower() == "true")
                        {
                            auto_capital_case = true;
                        }
                        if (parParts[1] == "yes")
                        {
                            auto_capital_case = true;
                        }
                        break;

                    case "comment":
                        comment = parParts[1];
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(nameof(input), "Parameter name [" + parParts[0] + "] unknown, declaration [" + m.Value + "]");
                        break;
                    }
                }
                else
                {
                    throw new ArgumentOutOfRangeException(nameof(input), "Parameter declaration [" + m.Value + "] is not in proper format");
                }
            }

            // loading definitions

            var mch = transliteration.regex_pairSelector.Matches(input);

            foreach (Match m in mch)
            {
                transliterationPairEntry entry = new transliterationPairEntry();
                entry.ConvertFromEntry(m.Value);
                fromAtoB.Add(entry);
                fromBtoA.Add(entry.GetInversed());

                if (auto_capital_case)
                {
                    transliterationPairEntry entry_capital = new transliterationPairEntry(entry.A.ToUpper(), entry.B.ToUpper());
                    fromAtoB.Add(entry_capital);
                    fromBtoA.Add(entry_capital.GetInversed());
                }
            }

            auto_capital_case = false;
        }