예제 #1
0
        /// <summary>
        /// 枚举
        /// </summary>
        /// <param name="type"></param>
        /// <param name="cell"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        private object GetEnum(Model.Enum type, ICell cell, List <string> errors)
        {
            object result = null;

            if (cell.CellType == CellType.Numeric)
            {
                var field = type.FindFieldByID((int)cell.NumericCellValue);
                if (field != null)
                {
                    result = field.ID;
                }
            }
            else if (cell.CellType == CellType.String)
            {
                var field = type.FindFieldByName(cell.StringCellValue);
                if (field != null)
                {
                    result = field.ID;
                }
            }

            if (result == null)
            {
                errors.Add("无效的枚举值");
            }

            return(result);
        }
        /// <summary>
        /// Init trans data converting
        /// </summary>
        /// <param name="sourceType">sourceType</param>
        protected void InitTransToCamData(Model.Enum sourceType, Model.Enum destinationType)
        {
            base.InitTransToCamData(sourceType);
            Utility.SetTransToKeyCode(ref this._transToKeycode, sourceType);

            this._trans_IM = "IM";
            this._trans_AI = "AI";
            this._trans_LU = "LU";
            switch (sourceType)
            {
            case Model.Enum.TransCamEFEO:
                this._trans_LW = "LU";
                this._trans_AO = "AO";
                this._trans_AU = "AU";
                break;

            default:
                this._trans_LW = "LW";
                this._trans_AO = "AU";
                break;
            }

            if (sourceType == Model.Enum.TransKawomTT)
            {
                this._sapAtah = Utility.InitSapAtah();
            }
        }
예제 #3
0
        /// <summary>
        /// 枚举值列表
        /// </summary>
        /// <param name="type"></param>
        /// <param name="texts"></param>
        /// <param name="errors"></param>
        /// <returns></returns>
        public static object GetEnumArray(Model.Enum type, string[] texts, List <string> errors)
        {
            var list = new List <bool>();

            var errorIndexList = new List <int>();

            for (var i = 0; i < texts.Length; i++)
            {
                var value = GetEnum(type, texts[i]);
                if (value != null)
                {
                    list.Add((bool)value);
                }
                else
                {
                    errorIndexList.Add(i);
                }
            }

            if (errorIndexList.Count > 0)
            {
                errors.Add(string.Format("列表的第{0}个元素不合法,无法解析成枚举:{1}.", string.Join(",", errorIndexList), type.Name));
            }

            return(list.ToArray());
        }
예제 #4
0
        /// <summary>
        /// Convert button click
        /// </summary>
        private void btnConvert_Click(object sender, EventArgs e)
        {
            //clear destination
            this.txtDestination.Text = String.Empty;

            //Get selected value of source combobox
            Model.Enum sourceType      = Service.Utility.NumToEnum <Model.Enum>(Convert.ToInt32(this.cmbSource.SelectedValue));
            Model.Enum destinationType = Service.Utility.NumToEnum <Model.Enum>(Convert.ToInt32(this.cmbDestination.SelectedValue));

            //Set Log Data
            Service.Log.SetLogData(this.txtSource.Text.Trim(), sourceType, destinationType);

            //Check input invalid data
            string data = this.txtSource.Text.Trim();

            if (!this.InputCheck(ref data, sourceType))
            {
                return;
            }

            //Converting
            this.txtDestination.Text = this.ConvertData(data, sourceType, destinationType);

            //Clear Log Data
            Service.Log.ClearLogData();
        }
예제 #5
0
        /// <summary>
        /// Check input data
        /// </summary>
        /// <param name="data">data input</param>
        /// <param name="dataType">data type</param>
        private bool InputCheck(ref String data, Model.Enum dataType)
        {
            //check source empty
            if (String.IsNullOrEmpty(data))
            {
                this.ShowMessageInfo(Model.MesseageCode.MES_PLEASE_INPUT);
                this.txtSource.Focus();
                return(false);
            }

            //Check input is value
            string datareplaced = data;

            if (!this._paxalihSv.ValidateInput(ref datareplaced, dataType))
            {
                if (this.ShowMessageQuestion(Model.MesseageCode.MES_DATA_INVALID, null) == DialogResult.No)
                {
                    this.txtSource.Focus();
                    return(false);
                }

                data = datareplaced;
            }

            return(true);
        }
예제 #6
0
 /// <summary>
 /// Init data converting
 /// </summary>
 protected void InitCamToTransData(Model.Enum destinationType)
 {
     this._kanaingChars = Utility.InitKanaing();
     this._vowelKTT     = Utility.InitVowelKTT();
     //Set Keycode to Trans hashtable
     Utility.SetTransFromXML(ref this._keyCodeToTrans, destinationType);
 }
예제 #7
0
        /// <summary>
        /// Check is valid input value
        /// </summary>
        /// <param name="data">input data</param>
        /// <param name="dataType">data type</param>
        public bool ValidateInput(ref String data, Model.Enum dataType)
        {
            //Replace enter
            data = data.Replace(Model.Constant.NEW_LINE, " ");

            //Get hashtable
            Hashtable dictionary = this.GetDictionaty(dataType);

            //Split data
            string[]      words        = data.Split(' ');
            List <string> wordReplaced = new List <string>();

            //Check input by word
            bool ret = true;

            foreach (string word in words)
            {
                string wordCheck = word;
                // is newline character
                if (word == Model.Constant.NEW_LINE || String.IsNullOrEmpty(word))
                {
                    wordReplaced.Add(word);
                    continue;
                }
                if (!this.ValidateWord(ref wordCheck, dataType, dictionary))
                {
                    ret = false;
                }
                wordReplaced.Add(wordCheck);
            }

            data = String.Join(" ", wordReplaced.ToArray());

            return(ret);
        }
예제 #8
0
        /// <summary>
        /// Get display data type
        /// </summary>
        /// <param name="value">data type</param>
        private String GetDisplayDataType(Model.Enum value)
        {
            switch (value)
            {
            case Model.Enum.FontGilaiPraong:
                return(this._resourceManager.GetString("ENUM_AKHAR_THRAH_GILAIPRAONG", this._culture));

            case Model.Enum.FontYapata:
                return(this._resourceManager.GetString("ENUM_AKHAR_THRAH_JAPATA", this._culture));

            case Model.Enum.FontCamEFEO:
                return(this._resourceManager.GetString("ENUM_AKHAR_THRAH_EFEO", this._culture));

            case Model.Enum.FontKTT:
                return(this._resourceManager.GetString("ENUM_AKHAR_THRAH_KTT", this._culture));

            case Model.Enum.FontUniCamKur:
                return(this._resourceManager.GetString("ENUM_AKHAR_THRAH_UNICAMKUR", this._culture));

            case Model.Enum.FontUniCamVN:
                return(this._resourceManager.GetString("ENUM_AKHAR_THRAH_UNICAMVN", this._culture));

            case Model.Enum.TransInrasara:
                return(this._resourceManager.GetString("ENUM_INRASARA", this._culture));

            case Model.Enum.TransKawomTT:
                return(this._resourceManager.GetString("ENUM_KTT", this._culture));


            default:
                return(this._resourceManager.GetString("ENUM_EFEO", this._culture));
            }
        }
예제 #9
0
        /// <summary>
        /// 枚举值
        /// </summary>
        /// <param name="type"></param>
        /// <param name="text"></param>
        /// <returns></returns>
        public static object GetEnum(Model.Enum type, string text)
        {
            var field = type.FindFieldByName(text);

            if (field != null)
            {
                return(field.ID);
            }

            int intID = 0;

            if (int.TryParse(text, out intID))
            {
                field = type.FindFieldByID(intID);
                if (field != null)
                {
                    return(field.ID);
                }
            }

            double doubleID = 0;

            if (double.TryParse(text, out doubleID))
            {
                field = type.FindFieldByID((int)doubleID);
                if (field != null)
                {
                    return(field.ID);
                }
            }

            return(null);
        }
        /// <summary>
        /// Set hastable datra
        /// </summary>
        /// <param name="sourceType">sourceType</param>
        /// <param name="destitionType">destitionType</param>
        private void SetHastableData(Model.Enum sourceType, Model.Enum destitionType)
        {
            //Set source data
            switch (sourceType)
            {
            case Model.Enum.FontYapata:
                this._srcHtb = this._waYapataToKeyCode;
                break;

            case Model.Enum.FontGilaiPraong:
                this._srcHtb = this._gilaiPraongToKeyCode;
                break;

            case Model.Enum.FontCamEFEO:
                this._srcHtb = this._camEFEOToKeyCode;
                break;

            case Model.Enum.FontUniCamKur:
                this._srcHtb = this._uniCamKurToKeyCode;
                break;

            case Model.Enum.FontUniCamVN:
                this._srcHtb = this._uniCamVNToKeyCode;
                break;

            default:
                this._srcHtb = this._KTTToKeyCode;
                break;
            }

            //Set destination data
            switch (destitionType)
            {
            case Model.Enum.FontYapata:
                this._desHtb = this._keyCodeToWaYapata;
                break;

            case Model.Enum.FontGilaiPraong:
                this._desHtb = this._keyCodeToGilaiPraong;
                break;

            case Model.Enum.FontCamEFEO:
                this._desHtb = this._keyCodeToCamEFEO;
                break;

            case Model.Enum.FontUniCamKur:
                this._desHtb = this._keyCodeToUniCamKur;
                break;

            case Model.Enum.FontUniCamVN:
                this._desHtb = this._keyCodeToUniCamVN;
                break;

            default:
                this._desHtb = this._keyCodeToKTT;
                break;
            }
        }
        /// <summary>
        /// Convert To Rumi
        /// </summary>
        /// <param name="data">String data</param>
        /// <param name="sourceType">source Type</param>
        /// <param name="destitionType">destition Type</param>
        public String DoConvert(String data, Model.Enum sourceType, Model.Enum destitionType)
        {
            //Contain converted
            List <String> converted = new List <String>();

            //Trig newline character
            data = data.Replace(Model.Constant.NEW_LINE, " " + Model.Constant.NEW_LINE + " ");

            //Plit to words array
            String[] words = data.Split(' ');

            //Convert processing
            foreach (string word in words)
            {
                // is newline character
                if (word == Model.Constant.NEW_LINE || String.IsNullOrEmpty(word))
                {
                    converted.Add(word);
                    continue;
                }

                String convertedWord = String.Empty;
                switch (sourceType)
                {
                case Model.Enum.TransInrasara:
                    convertedWord = this.InrasaraToCamEFEOByWord(word);
                    break;

                case Model.Enum.TransCamEFEO:
                    convertedWord = this.CamEFEOToInrasaraByWord(word);
                    break;

                default:
                    //case Model.Enum.TransKawomTT:
                    if (destitionType == Model.Enum.TransCamEFEO)
                    {
                        convertedWord = this.KTTToCamEFEOByWord(word);
                        break;
                    }
                    else     //if (destitionType == Model.Enum.TransInrasara)
                    {
                        convertedWord = this.KTTToInrasaraByWord(word);
                        break;
                    }
                }

                converted.Add(convertedWord);
            }

            String result = String.Join(" ", converted.ToArray());

            //Trig newline character
            result = result.Replace(" " + Model.Constant.NEW_LINE + " ", Model.Constant.NEW_LINE);

            return(result.ToLower());
        }
예제 #12
0
        /// <summary>
        /// destination combobox selected changed
        /// </summary>
        private void cmbDestination_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this._notAct)
            {
                return;
            }

            Model.Enum itemSelected = Service.Utility.NumToEnum <Model.Enum>(Convert.ToInt32(this.cmbDestination.SelectedValue));
            this._paxalihSv.combobox_SelectedChanged(itemSelected, this.txtDestination, this.cmbSize2);
        }
예제 #13
0
 /// <summary>
 /// Init data converting
 /// </summary>
 /// <param name="sourceType">sourceType</param>
 protected void InitTransToCamData(Model.Enum sourceType)
 {
     this._diipToMaTai        = Utility.InitDiipToMaTai();
     this._diipToTaKai        = Utility.InitDiipToTaKai(sourceType);
     this._kanaingChars       = Utility.InitKanaing();
     this._kareiCrih          = Utility.InitKareiCrih(sourceType);
     this._consonantKareiCrih = Utility.InitConsonantKareiCrih();
     this._sappaohAngaok      = Utility.InitSapPaohAngaok();
     this._sappaoh            = Utility.InitSapPaoh();
     this._takaiLikuk         = Utility.InitTakaiLikuk();
     this._vowelLangLikuk     = Utility.InitVowelLangLikuk();
     this._takaiDaokLikuk     = Utility.InitTakaiDaokLikuk();
 }
예제 #14
0
        /// <summary>xt
        /// source combobox selected changed
        /// </summary>
        private void cmbSource_SelectedValueChanged(object sender, EventArgs e)
        {
            if (this._notAct)
            {
                return;
            }

            Model.Enum itemSelected = Service.Utility.NumToEnum <Model.Enum>(Convert.ToInt32(this.cmbSource.SelectedValue));

            this._notAct = true;
            this.InitCmbCharType(this.cmbDestination, false, itemSelected);
            this._notAct = false;

            this._paxalihSv.combobox_SelectedChanged(itemSelected, this.txtSource, this.cmbSize1);
            this.cmbDestination_SelectedIndexChanged(null, null);
        }
        /// <summary>
        /// Convert To Rumi
        /// </summary>
        /// <param name="data">String data</param>
        /// <param name="sourceType">source Type</param>
        /// <param name="destitionType">destition Type</param>
        public String DoConvert(String data, Model.Enum sourceType, Model.Enum destitionType)
        {
            //Set hastable data
            this.SetHastableData(sourceType, destitionType);

            //Contain converted
            List <String> converted = new List <String>();

            //Trig newline character
            data = data.Replace(Model.Constant.NEW_LINE, " " + Model.Constant.NEW_LINE + " ");

            //Plit to words array
            String[] words = data.Split(' ');

            //Convert processing
            foreach (string word in words)
            {
                // is newline character
                if (word == Model.Constant.NEW_LINE || String.IsNullOrEmpty(word))
                {
                    converted.Add(word);
                    continue;
                }

                List <Model.AKhar> lstAkhar      = this.ToKeyCodeByWord(word, sourceType, destitionType);
                String             convertedWord = String.Empty;

                foreach (Model.AKhar akhar in lstAkhar)
                {
                    if (this._desHtb.ContainsKey((int)akhar))
                    {
                        convertedWord += this._desHtb[(int)akhar].ToString();//to_unicode???
                    }
                }

                converted.Add(convertedWord);
            }

            String result = String.Join(" ", converted.ToArray());

            //Trig newline character
            result = result.Replace(" " + Model.Constant.NEW_LINE + " ", Model.Constant.NEW_LINE);

            return(result);
        }
예제 #16
0
        /// <summary>
        /// Get Dictionary
        /// </summary>
        /// <param name="dataType">data type</param>
        protected Hashtable GetDictionaty(Model.Enum dataType)
        {
            Hashtable ret;

            switch (dataType)
            {
            case Model.Enum.FontYapata:
                ret = this._waYapataToKeyCode;
                break;

            case Model.Enum.FontGilaiPraong:
                ret = this._gilaiPraongToKeyCode;
                break;

            case Model.Enum.FontCamEFEO:
                ret = this._camEFEOToKeyCode;
                break;

            case Model.Enum.FontKTT:
                ret = this._KTTToKeyCode;
                break;

            case Model.Enum.FontUniCamKur:
                ret = this._uniCamKurToKeyCode;
                break;

            case Model.Enum.FontUniCamVN:
                ret = this._uniCamVNToKeyCode;
                break;

            case Model.Enum.TransCamEFEO:
                ret = this._validRumiChar;
                break;

            case Model.Enum.TransInrasara:
                ret = this._validInraChar;
                break;

            default:
                ret = this._validKTTChar;
                break;
            }

            return(ret);
        }
예제 #17
0
        /// <summary>
        /// Convert data
        /// </summary>
        /// <param name="data">data input</param>
        /// <param name="dataType">data type</param>
        private String ConvertData(String data, Model.Enum sourceType, Model.Enum destinationType)
        {
            String result = String.Empty;

            switch (sourceType)
            {
            case Model.Enum.FontGilaiPraong:
            case Model.Enum.FontYapata:
            case Model.Enum.FontCamEFEO:
            case Model.Enum.FontUniCamKur:
            case Model.Enum.FontUniCamVN:
            case Model.Enum.FontKTT:

                if (this._paxalihSv.IsFont(destinationType))
                {
                    Service.FontToFontPaxalih fontPaxalih = new Service.FontToFontPaxalih();
                    result = fontPaxalih.DoConvert(data, sourceType, destinationType);
                }
                else
                {
                    Service.CamToTransPaxalih rumiPaxalih = new Service.CamToTransPaxalih();
                    result = rumiPaxalih.DoConvert(data, sourceType, destinationType);
                }

                break;

            default:

                if (this._paxalihSv.IsFont(destinationType))
                {
                    Service.TransToCamPaxalih camPaxalih = new Service.TransToCamPaxalih();
                    result = camPaxalih.DoConvert(data, sourceType, destinationType);
                }
                else
                {
                    Service.TransToTransPaxalih transPaxalih = new Service.TransToTransPaxalih();
                    result = transPaxalih.DoConvert(data, sourceType, destinationType);
                }

                break;
            }

            return(result);
        }
예제 #18
0
        /// <summary>
        /// Init Karei Diip To Takai HashTable
        /// </summary>
        /// <returns>hashtable</returns>
        public static Hashtable InitDiipToTaKai(Model.Enum sourceType)
        {
            Hashtable ret = new Hashtable();

            ret.Add(Model.AKhar.Ik, Model.AKhar.TakaiKiak);
            ret.Add(Model.AKhar.Lak, Model.AKhar.TakaiKlak);
            ret.Add(Model.AKhar.Rak, Model.AKhar.TakaiKrak);

            if (sourceType == Model.Enum.TransCamEFEO)
            {
                ret.Add(Model.AKhar.Uk, Model.AKhar.TakaiKuak);
            }
            else
            {
                ret.Add(Model.AKhar.Wak, Model.AKhar.TakaiKuak);
            }

            return(ret);
        }
예제 #19
0
        /// <summary>
        /// source combobox selected changed
        /// </summary>
        public void combobox_SelectedChanged(Model.Enum dataType, TextBox textControl, ComboBox sizeControl)
        {
            textControl.ForeColor = Color.Black;
            switch (dataType)
            {
            case Model.Enum.FontYapata:
                textControl.Font = new Font(Model.Constant.FONT_YAPATA_NAME, Model.Constant.DEFAULT_FONT_CAM_SIZE);
                sizeControl.Text = Model.Constant.DEFAULT_FONT_CAM_SIZE.ToString();
                break;

            case Model.Enum.FontGilaiPraong:
                textControl.Font = new Font(Model.Constant.FONT_GILAIPRAONG_NAME, Model.Constant.DEFAULT_FONT_CAM_SIZE);
                sizeControl.Text = Model.Constant.DEFAULT_FONT_CAM_SIZE.ToString();
                break;

            case Model.Enum.FontCamEFEO:
                textControl.Font = new Font(Model.Constant.FONT_CAM_EFEO_NAME, Model.Constant.DEFAULT_FONT_CAM_SIZE);
                sizeControl.Text = Model.Constant.DEFAULT_FONT_CAM_SIZE.ToString();
                break;

            case Model.Enum.FontKTT:
                textControl.Font = new Font(Model.Constant.FONT_KTT_NAME, Model.Constant.DEFAULT_FONT_CAM_SIZE);
                sizeControl.Text = Model.Constant.DEFAULT_FONT_CAM_SIZE.ToString();
                break;

            case Model.Enum.FontUniCamKur:
                textControl.Font = new Font(Model.Constant.FONT_UNI_CAMKUR, Model.Constant.DEFAULT_FONT_CAM_SIZE);
                sizeControl.Text = Model.Constant.DEFAULT_FONT_CAM_SIZE.ToString();
                break;

            case Model.Enum.FontUniCamVN:
                textControl.Font = new Font(Model.Constant.FONT_UNI_CAMVN, Model.Constant.DEFAULT_FONT_CAM_SIZE);
                sizeControl.Text = Model.Constant.DEFAULT_FONT_CAM_SIZE.ToString();
                break;

            default:
                textControl.Font = new Font(Model.Constant.FONT_YUEN_NAME, Model.Constant.DEFAULT_FONT_YUEN_SIZE);
                sizeControl.Text = Model.Constant.DEFAULT_FONT_YUEN_SIZE.ToString();
                break;
            }
        }
예제 #20
0
        /// <summary>
        /// Check is valid word
        /// </summary>
        /// <param name="word">word</param>
        /// <param name="dataType">data type</param>
        ///  <param name="dictionary">dictionary</param>
        private bool ValidateWord(ref string word, Model.Enum dataType, Hashtable dictionary)
        {
            if (dataType == Model.Enum.TransCamEFEO || dataType == Model.Enum.TransInrasara || dataType == Model.Enum.TransKawomTT)
            {
                word = word.ToUpper();
            }

            bool   ret          = true;
            string wordReplaced = string.Empty;

            foreach (char c in word)
            {
                if (!dictionary.ContainsKey(c.ToString()))
                {
                    ret = false;
                    continue;
                }
                wordReplaced += c.ToString();
            }

            word = wordReplaced;
            return(ret);
        }
예제 #21
0
        /// <summary>
        /// Set Rumi chars from XML file into hastable
        /// </summary>
        /// <param name="keyCodeTrans">keyCodeRumi</param>
        public static void SetTransFromXML(ref Hashtable keyCodeTrans, Model.Enum desType)
        {
            Model.XMLRumiCol colNo = Model.XMLRumiCol.Rumi;
            if (desType == Model.Enum.TransCamEFEO)
            {
                colNo = Model.XMLRumiCol.Rumi;
            }
            else if (desType == Model.Enum.TransInrasara)
            {
                colNo = Model.XMLRumiCol.InraSara;
            }
            else if (desType == Model.Enum.TransKawomTT)
            {
                colNo = Model.XMLRumiCol.KawomTT;
            }

            keyCodeTrans = new Hashtable();

            Stream  strm = ReadXMLFile(Model.Constant.KEY_TO_TRANS_FILE);
            DataSet dts  = new DataSet();

            dts.ReadXml(strm);

            DataTable dtt = dts.Tables[0];

            foreach (DataRow dtr in dtt.Rows)
            {
                Model.AKhar keyCode = (Model.AKhar)Convert.ToInt32(dtr[Convert.ToInt32(Model.XMLRumiCol.KeyCode)]);
                String      trans   = dtr[Convert.ToInt32(colNo)].ToString();

                //Keycode - Trans
                if (!keyCodeTrans.ContainsKey(keyCode))
                {
                    keyCodeTrans.Add(keyCode, trans);
                }
            }
        }
예제 #22
0
 /// <summary>
 /// Check Is Transliterate
 /// </summary>
 /// <param name="dataType">dataType</param>
 public bool IsTransliterate(Model.Enum dataType)
 {
     return(dataType > Model.Enum.FontKTT);
 }
        /// <summary>
        /// Convert To Rumi
        /// </summary>
        /// <param name="data">String data</param>
        /// <param name="sourceType">source Type</param>
        /// <param name="destitionType">destition Type</param>
        public String DoConvert(String data, Model.Enum sourceType, Model.Enum destitionType)
        {
            //Init Rumi To Cam data
            this.InitTransToCamData(sourceType, destitionType);

            //Contain converted
            List <String> converted = new List <String>();

            //Trig newline character
            data = data.Replace(Model.Constant.NEW_LINE, " " + Model.Constant.NEW_LINE + " ");

            //Plit to words array
            String[] words = data.Split(' ');

            //Convert processing
            foreach (string word in words)
            {
                // is newline character
                if (word == Model.Constant.NEW_LINE || String.IsNullOrEmpty(word))
                {
                    converted.Add(word);
                    continue;
                }

                List <Model.AKhar> lstAkhar      = this.ToKeyCodeByWord(word.ToUpper(), sourceType);
                String             convertedWord = String.Empty;

                foreach (Model.AKhar akhar in lstAkhar)
                {
                    switch (destitionType)
                    {
                    case Model.Enum.FontYapata:
                        convertedWord += this._keyCodeToWaYapata[(int)akhar].ToString();
                        break;

                    case Model.Enum.FontKTT:
                        convertedWord += this._keyCodeToKTT[(int)akhar].ToString();
                        break;

                    case Model.Enum.FontGilaiPraong:
                        if (akhar == Model.AKhar.GakMatai)
                        {
                            convertedWord += this._keyCodeToGilaiPraong[(int)Model.AKhar.KakMatai].ToString();
                        }
                        else
                        {
                            convertedWord += this._keyCodeToGilaiPraong[(int)akhar].ToString();
                        }
                        break;

                    case Model.Enum.FontCamEFEO:
                        if (akhar == Model.AKhar.TakaiKlakTakaiKuak)
                        {
                            convertedWord += this._keyCodeToCamEFEO[(int)Model.AKhar.TakaiKlak].ToString();
                            convertedWord += this._keyCodeToCamEFEO[(int)Model.AKhar.TakaiKuak].ToString();
                        }
                        else if (akhar == Model.AKhar.TakaiKlakTakaiKuk)
                        {
                            convertedWord += this._keyCodeToCamEFEO[(int)Model.AKhar.TakaiKlak].ToString();
                            convertedWord += this._keyCodeToCamEFEO[(int)Model.AKhar.TakaiKuk].ToString();
                        }
                        else if (akhar == Model.AKhar.GakMatai)
                        {
                            convertedWord += this._keyCodeToCamEFEO[(int)Model.AKhar.KakMatai].ToString();
                        }
                        else
                        {
                            convertedWord += this._keyCodeToCamEFEO[(int)akhar].ToString();
                        }
                        break;

                    default:
                        if (akhar == Model.AKhar.TakaiKlakTakaiKuak)
                        {
                            convertedWord += this._keyCodeToUniCamKur[(int)Model.AKhar.TakaiKlak].ToString();
                            convertedWord += this._keyCodeToUniCamKur[(int)Model.AKhar.TakaiKuak].ToString();
                        }
                        else if (akhar == Model.AKhar.TakaiKlakTakaiKuk)
                        {
                            convertedWord += this._keyCodeToUniCamKur[(int)Model.AKhar.TakaiKlak].ToString();
                            convertedWord += this._keyCodeToUniCamKur[(int)Model.AKhar.TakaiKuk].ToString();
                        }
                        else
                        {
                            convertedWord += this._keyCodeToUniCamKur[(int)akhar].ToString();
                        }
                        break;
                    }
                }

                converted.Add(convertedWord);
            }

            String result = String.Join(" ", converted.ToArray());

            //Trig newline character
            result = result.Replace(" " + Model.Constant.NEW_LINE + " ", Model.Constant.NEW_LINE);

            return(result);
        }
        /// <summary>
        /// Covert to keycode by word
        /// </summary>
        /// <param name="word">word</param>
        private List <Model.AKhar> ToKeyCodeByWord(String word, Model.Enum sourceType)
        {
            try
            {
                List <Model.AKhar>  ret            = new List <Model.AKhar>();
                Stack <Model.AKhar> kanaingAtFirst = new Stack <Model.AKhar>();
                Stack <Model.AKhar> kanaingAtLast  = new Stack <Model.AKhar>();

                bool     addLastCharProcess = true;
                string[] wordArr            = word.Split(_DASH);
                foreach (string item in wordArr)
                {
                    List <Model.AKhar> wordAkhar = new List <Model.AKhar>();
                    string             wordStr   = item;

                    //Cut kanaing at first and last word
                    kanaingAtFirst = this.CutKanaingAtFirst(ref wordStr);
                    kanaingAtLast  = this.CutKanaingAtLast(ref wordStr);

                    //Specail word
                    if (this._kareiCrih.ContainsKey(wordStr))
                    {
                        wordAkhar = Utility.CopyListAkhar((List <Model.AKhar>) this._kareiCrih[wordStr]);

                        // add kanaing at first and last word
                        Utility.PopStackToList(wordAkhar, kanaingAtFirst, true);
                        Utility.PopStackToList(wordAkhar, kanaingAtLast, false);

                        ret.AddRange(wordAkhar);
                        addLastCharProcess = false;
                        continue;
                    }

                    addLastCharProcess = true;
                    List <Model.AKhar> retForCode = new List <Model.AKhar>();
                    Model.AKhar        prevChar   = Model.AKhar.Square;

                    int roundCount = 0;
                    while (!String.IsNullOrEmpty(wordStr))
                    {
                        if (roundCount == Model.Constant.MAX_ROUND)
                        {
                            break;
                        }

                        //convert to keycode
                        switch (sourceType)
                        {
                        case Model.Enum.TransCamEFEO:
                            this.ToKeycodeFromCamEFEO(ref wordStr, ref wordAkhar, ref retForCode);
                            break;

                        case Model.Enum.TransInrasara:
                            this.ToKeycodeFromInrasara(ref wordStr, ref wordAkhar, ref retForCode);
                            break;

                        default:
                            this.ToKeycodeFromKTT(ref wordStr, ref wordAkhar, ref retForCode, ref prevChar);
                            break;
                        }
                    }

                    ret.AddRange(wordAkhar);
                    roundCount++;
                }

                //add balau on the last char
                if (ret.Count != 0 && addLastCharProcess)
                {
                    int         indexLastChar = this.GetIndexLastChar(ret);
                    Model.AKhar lastAkhar     = ret[indexLastChar];
                    if ((this.IsAkharDiip(lastAkhar) || this.IsTakaiLikuk(lastAkhar)) && !ret.Contains(Model.AKhar.DarDua) &&
                        !(lastAkhar == Model.AKhar.TakaiThek && indexLastChar > 0 && ret[indexLastChar - 1] == Model.AKhar.TakaiKuk))
                    {
                        ret.Insert(indexLastChar + 1, Model.AKhar.Balau);
                    }

                    if (ret.Count != 0 && this._takaiDaokLikuk.ContainsKey(ret[0]))
                    {
                        ret.Insert(0, Model.AKhar.Ak);
                    }
                }

                // add kanaing at first and last word
                Utility.PopStackToList(ret, kanaingAtFirst, true);
                Utility.PopStackToList(ret, kanaingAtLast, false);

                return(ret);
            }
            catch (Exception ex)
            {
                Service.Log.WriteLog(ex);
                return(new List <Model.AKhar>());
            }
        }
예제 #25
0
        /// <summary>
        /// Convert To Rumi by word
        /// </summary>
        /// <param name="word">word</param>
        private String ToRumiByWord(List <Model.AKhar> word, Model.Enum desType)
        {
            //List empty
            if (word.Count == 0)
            {
                return(String.Empty);
            }

            string sap_Â = String.Empty;
            string sap_Ô = String.Empty;
            string sap_E = String.Empty;

            if (desType == Model.Enum.TransCamEFEO)
            {
                sap_Â = Model.Constant.Â_EFEO;
                sap_Ô = Model.Constant.Ô_EFEO;
                sap_E = Model.Constant.E_EFEO;
            }
            else if (desType == Model.Enum.TransInrasara)
            {
                sap_Â = Model.Constant.Â_SARA;
                sap_Ô = Model.Constant.Ô_SARA;
                sap_E = Model.Constant.E_SARA;
            }
            else if (desType == Model.Enum.TransKawomTT)
            {
                sap_Â = Model.Constant.Â_KawomTT;
                sap_Ô = Model.Constant.Ô_KawomTT;
                sap_E = Model.Constant.E_KawomTT;
            }

            String result     = String.Empty;
            string akhar_diip = String.Empty;

            Model.AKhar akhar_diip_model = Model.AKhar.Kak;
            string      takaiSappaohAnak = String.Empty;
            string      takaiAkharAnak   = String.Empty;
            string      sapPaoh_temp     = String.Empty;
            int         count            = word.Count;
            //int count_index = 0;
            bool akharDiipAdded = false;
            bool huTakaiKrak    = false;
            bool klakAkharAk    = true;
            bool huBalau        = false;
            bool addedTakaiThek = false;
            bool addedTakaiKuk  = false;

            List <Model.AKhar> wordKareiCrih = new List <Model.AKhar> {
                Model.AKhar.Ak, Model.AKhar.SakPraong, Model.AKhar.TakaiKuk, Model.AKhar.TakaiThek
            };

            if (count == 4 && word[0] == wordKareiCrih[0] && word[1] == wordKareiCrih[1] && word[2] == wordKareiCrih[2] && word[3] == wordKareiCrih[3])
            {
                return(result = "asau");
            }
            //for (int i = 0; i < word.Count; i++)
            //{
            //    if (word[i] == wordKareiCrih[i])
            //        count_index++;
            //    if (count_index == word.Count)
            //        return result = "asau";
            //}


            if (count == 0)
            {
                return(String.Empty);
            }

            //Hu akhar mâtai di krâh, EX: "duix-xak"
            List <Model.AKhar> word1 = new List <Model.AKhar>();
            List <Model.AKhar> word2 = new List <Model.AKhar>();

            for (int i = 0; i < count; i++)
            {
                Model.AKhar item = word[i];
                if (this.CheckEndCharacter(word[i]) && i != word.Count - 1 && i != 0)
                {
                    word1 = word.GetRange(0, i + 1);
                    word2 = word.GetRange(i + 1, word.Count - (i + 1));
                    break;
                }
            }

            if (word1.Count != 0)
            {
                result = this.ToRumiByWord(word1, desType) + this.ToRumiByWord(word2, desType);
            }
            else
            {
                //Xalih bhian
                for (int i = 0; i < count; i++)
                {
                    Model.AKhar item = word[i];

                    if (this.Check_Angka(item))
                    {
                        result += this._keyCodeToTrans[item].ToString();
                        continue;
                    }

                    //hu balau
                    if (this.Check_Balau(item))
                    {
                        huBalau = true;
                    }

                    //end angka
                    if ((this.Check_InaAkhar_PhuAm(item) || this.Check_InaAkhar_NguyenAm(item)) && !this.IsAkharWakMaTai(item, i, count))
                    {
                        if (!String.IsNullOrEmpty(akhar_diip))
                        {
                            result += akhar_diip;
                        }

                        akhar_diip_model = item;//??
                        akhar_diip       = this._keyCodeToTrans[item].ToString().ToUpper();

                        if (!String.IsNullOrEmpty(takaiAkharAnak))                                                                          //Takai krak (aiek wek ???)
                        {
                            if (this._keyCodeToTrans[akhar_diip_model].ToString().Length > 2)                                               //or > 2 ??
                            {
                                if (this.Check_InaAkhar_PhuAm_Special(akhar_diip_model))                                                    //aiek wek hu repale("â","a")
                                {
                                    akhar_diip = akhar_diip.Substring(0, 2) + takaiAkharAnak + akhar_diip.Substring(2).Replace(sap_Â, "A"); //Repalce or none???
                                }
                                else
                                {
                                    if (this._keyCodeToTrans[akhar_diip_model].ToString().Length > 3)                       //nhjra
                                    {
                                        akhar_diip = akhar_diip.Substring(0, 3) + takaiAkharAnak + akhar_diip.Substring(3); //mba; bba; nhjra ???
                                    }
                                    else
                                    {
                                        akhar_diip = akhar_diip.Substring(0, 2) + takaiAkharAnak + akhar_diip.Substring(2);
                                    }

                                    //if (desType == Model.Enum.TransCamEFEO)//nja
                                    //{
                                    //    akhar_diip = akhar_diip.Substring(0, 2) + takaiAkharAnak + akhar_diip.Substring(2);
                                    //}
                                    //else
                                    //    akhar_diip = akhar_diip.Substring(0, 3) + takaiAkharAnak + akhar_diip.Substring(3);//mba; bba; nhjra ???
                                }
                                huTakaiKrak = true;
                            }
                            else
                            {
                                if (this.Check_InaAkhar_PhuAm_Special(akhar_diip_model))                                                    //aiek wek hu repale("â","a")
                                {
                                    akhar_diip = akhar_diip.Substring(0, 1) + takaiAkharAnak + akhar_diip.Substring(1).Replace(sap_Â, "A"); //Repalce or none???
                                }
                                else
                                {
                                    akhar_diip = akhar_diip.Substring(0, 1) + takaiAkharAnak + akhar_diip.Substring(1);
                                }
                                huTakaiKrak = true;
                            }
                        }

                        if (!String.IsNullOrEmpty(takaiSappaohAnak))
                        {
                            //Akhar Ak
                            if (akhar_diip_model == Model.AKhar.Ak)
                            {
                                akhar_diip  = akhar_diip.Substring(0, 1) + akhar_diip.Substring(1).Replace("A", takaiSappaohAnak);
                                klakAkharAk = false;//
                            }
                            else
                            {
                                akhar_diip = akhar_diip.Replace("A", takaiSappaohAnak);
                                akhar_diip = akhar_diip.Replace(sap_Â, takaiSappaohAnak);//(â-ư)
                            }
                        }

                        continue;
                    }

                    //
                    if (this.Check_TakaiSapPaohAnak(item))
                    {
                        takaiSappaohAnak = this._keyCodeToTrans[item].ToString().ToUpper();
                        continue;
                    }
                    if (this.Check_TakaiSapPaohLikuk(item) || this.Check_TakaiSapPaohDiLuic(item))
                    {
                        string takaiAkhar = this._keyCodeToTrans[item].ToString().ToUpper();
                        if (!String.IsNullOrEmpty(akhar_diip))
                        {
                            if (!String.IsNullOrEmpty(takaiSappaohAnak))
                            {
                                if (takaiSappaohAnak == sap_Ô)
                                {
                                    Model.AKhar sappaohCombine = (Model.AKhar)Convert.ToInt32(((int)Model.AKhar.DarSa).ToString() + ((int)item).ToString());
                                    sapPaoh_temp = this._keyCodeToTrans[sappaohCombine].ToString().ToUpper();
                                }

                                akhar_diip = akhar_diip.Replace(sap_Ô, sapPaoh_temp);
                            }
                            else
                            {
                                if (akhar_diip_model == Model.AKhar.Ak)
                                {
                                    akhar_diip  = akhar_diip.Substring(0, 1) + akhar_diip.Substring(1).Replace("A", takaiAkhar);
                                    klakAkharAk = false;
                                }
                                else
                                {
                                    //takai thek <+> takai kuk (ơu - au)
                                    if (item == Model.AKhar.TakaiKuk && addedTakaiThek)
                                    {
                                        Model.AKhar sappaohCombine = (Model.AKhar)Convert.ToInt32(((int)Model.AKhar.TakaiThek).ToString() + ((int)item).ToString());
                                        sapPaoh_temp = this._keyCodeToTrans[sappaohCombine].ToString().ToUpper();

                                        akhar_diip = akhar_diip.Replace(sap_E, sapPaoh_temp);
                                    }
                                    else if (item == Model.AKhar.TakaiThek && addedTakaiKuk)
                                    {
                                        Model.AKhar sappaohCombine = (Model.AKhar)Convert.ToInt32(((int)Model.AKhar.TakaiThek).ToString() + ((int)Model.AKhar.TakaiKuk).ToString());
                                        sapPaoh_temp = this._keyCodeToTrans[sappaohCombine].ToString().ToUpper();

                                        akhar_diip = akhar_diip.Replace("U", sapPaoh_temp);
                                    }
                                    else
                                    {
                                        akhar_diip = akhar_diip.Replace("A", takaiAkhar);//???aua...
                                        akhar_diip = akhar_diip.Replace(sap_Â, takaiAkhar);

                                        if (item == Model.AKhar.TakaiThek)
                                        {
                                            addedTakaiThek = true;
                                        }
                                        if (item == Model.AKhar.TakaiKuk)
                                        {
                                            addedTakaiKuk = true;
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            result += takaiAkhar;
                        }
                        continue;
                    }

                    if (this.Check_TakaiAkharAnak(item))
                    {
                        takaiAkharAnak = this._keyCodeToTrans[item].ToString().ToUpper();
                        continue;
                    }

                    if (this.Check_TakaiAkharLikuk(item))//aiek wek
                    {
                        string takaiAkhar = this._keyCodeToTrans[item].ToString().ToUpper();
                        if (!String.IsNullOrEmpty(akhar_diip))
                        {
                            if (this._keyCodeToTrans[akhar_diip_model].ToString().Length > 3)//nhja
                            {
                                //wak check -r di dahlau
                                if (huTakaiKrak)
                                {
                                    akhar_diip = akhar_diip.Substring(0, 4) + takaiAkhar + akhar_diip.Substring(4);// (Akhar Nhjak)
                                }
                                else
                                {
                                    akhar_diip = akhar_diip.Substring(0, 3) + takaiAkhar + akhar_diip.Substring(3);//aiek wek
                                }
                            }

                            else if (this._keyCodeToTrans[akhar_diip_model].ToString().Length == 3)//> 2??
                            {
                                //wak check -r di dahlau
                                if (huTakaiKrak)//Is_Hu_TakaiKrak_blaoh(akhar_diip)
                                {
                                    //if (this.Check_InaAkhar_PhuAm_Special(akhar_diip_model))
                                    //{
                                    //    akhar_diip = akhar_diip.Substring(0, 3) + takaiAkhar + akhar_diip.Substring(3);//???aiek wek
                                    //}
                                    //else
                                    if (desType == Model.Enum.TransCamEFEO)
                                    {
                                        akhar_diip = akhar_diip.Substring(0, 3) + takaiAkhar + akhar_diip.Substring(3);
                                    }
                                    else
                                    {
                                        akhar_diip = akhar_diip.Substring(0, 4) + takaiAkhar + akhar_diip.Substring(4);// (Akhar Nhjak)
                                    }
                                }
                                else
                                {
                                    //if (desType == Model.Enum.TransCamEFEO)
                                    //{
                                    akhar_diip = akhar_diip.Substring(0, 2) + takaiAkhar + akhar_diip.Substring(2);
                                }
                                //}
                                //else
                                //{
                                //    akhar_diip = akhar_diip.Substring(0, 3) + takaiAkhar + akhar_diip.Substring(3);//aiek wek
                                //}
                            }
                            else
                            {
                                if (huTakaiKrak)//Is_Hu_TakaiKrak_blaoh(akhar_diip)
                                {
                                    akhar_diip = akhar_diip.Substring(0, 2) + takaiAkhar + akhar_diip.Substring(2);
                                }
                                else
                                {
                                    if (takaiAkhar.Length == 1)
                                    {
                                        if (this.Check_InaAkhar_PhuAm_Special(akhar_diip_model))
                                        {
                                            akhar_diip = akhar_diip.Substring(0, 1) + takaiAkhar + akhar_diip.Substring(1).Replace(sap_Â, "A"); //??? aiek wek
                                        }
                                        else
                                        {
                                            akhar_diip = akhar_diip.Substring(0, 1) + takaiAkhar + akhar_diip.Substring(1);
                                        }
                                    }
                                    else
                                    {
                                        akhar_diip = akhar_diip.Substring(0, 1) + akhar_diip.Substring(1).Replace(akhar_diip.Substring(1), takaiAkhar);
                                    }
                                    //??? aiek hu replace ("â","a")
                                }
                            }
                        }
                        else
                        {
                            result += takaiAkhar;
                        }
                        continue;
                    }

                    if (this.Check_AkharMatai(item) || this.IsAkharWakMaTai(item, i, count))
                    {
                        string akharMatai = this._keyCodeToTrans[item].ToString();
                        if (item == Model.AKhar.Wak)
                        {
                            akharMatai = akharMatai.Substring(0, 1);
                        }

                        result        += akhar_diip + akharMatai;
                        akharDiipAdded = true;
                        continue;
                    }

                    //Aiek wek????
                    if (this.Check_DauCau(item))
                    {
                        string dau_cau = this._keyCodeToTrans[item].ToString();
                        if (!akharDiipAdded)
                        {
                            akhar_diip += dau_cau;
                        }
                        else
                        {
                            result += dau_cau;
                        }

                        continue;
                    }
                }

                if (!akharDiipAdded)
                {
                    result += akhar_diip;
                }

                //Klak 'aa...'
                int libik_a = 0;
                for (int j = 0; j < result.Length - 1; j++)
                {
                    if (result[j] == result[j + 1] && result[j] == 'A' && result != "XAAI" && klakAkharAk)//if hu akhar Ak (Xaai)
                    {
                        libik_a = j + 1;
                        result  = result.Substring(0, libik_a) + result.Substring(libik_a + 1);
                        break;
                    }

                    if (result.Length > 2 && (result[0] == 'A' && result[1] == 'A') || (result[0] == 'A' && result[1] == 'Â') || (result[0] == 'A' && result[1] == 'Ư'))//char vs string ???
                    {
                        result = result.Substring(1);
                    }
                }

                //Double Vowel
                if (huBalau && word[word.Count - 1] != Model.AKhar.Balau && desType == Model.Enum.TransKawomTT)
                {
                    result = DoubleVowel(result).ToUpper();
                }

                //Cut Vowel
                if (desType == Model.Enum.TransKawomTT)
                {
                    for (int i = result.Length - 1; i > 0; i--)
                    {
                        //e -> ai
                        if (result[i].ToString() == "E" && i == result.Length - 1)
                        {
                            result = result.Replace("E", "AI");
                            break;
                        }

                        //oo -> ao
                        if (result[i].ToString() + result[i - 1].ToString() == "OO" && i == result.Length - 1)
                        {
                            result = result.Replace("OO", "AO");
                            break;
                        }

                        //ii -> i
                        if (result[i].ToString() + result[i - 1].ToString() == "II" && i == result.Length - 1)
                        {
                            result = result.Replace("II", "I");
                            break;
                        }

                        //ơơ -> ơ
                        if (result[i].ToString() + result[i - 1].ToString() == "ƠƠ" && i == result.Length - 1)
                        {
                            result = result.Replace("ƠƠ", "Ơ");
                            break;
                        }
                    }
                }

                //End klak ak
                if (result.IndexOf("PPONG") != -1)
                {
                    result = result.Replace("PPONG", "PPO");
                }

                if (result.IndexOf("PPÔNG") != -1)
                {
                    result = result.Replace("PPÔNG", "PPÔ");
                }

                if (result.IndexOf("XAII") != -1)
                {
                    result = result.Replace("XAII", "XAAI");
                }
            }

            return(result.ToLower());
        }
예제 #26
0
 /// <summary>
 /// Set Log Data
 /// </summary>
 /// <param name="dataToConvert">data to convert</param>
 /// <param name="sourceType">source Type</param>
 /// <param name="destinationType">destination type</param>
 public static void SetLogData(string dataToConvert, Model.Enum sourceType, Model.Enum destinationType)
 {
     _dataConvert    = dataToConvert;
     _sourceType     = sourceType;
     _desinationType = destinationType;
 }
예제 #27
0
        /// <summary>
        /// Init Karei Crih Char hashtable
        /// </summary>
        /// <returns>hashtable</returns>
        public static Hashtable InitKareiCrih(Model.Enum dataType)
        {
            Hashtable ret = new Hashtable();
            string    xaaiTrans;
            string    saaiTrans;
            string    aiTrans;
            string    ppoTrans;
            string    liauaTrans;
            string    auaTrans;
            string    aiaTrans;
            string    iaTrans;
            string    aoTrans;

            xaaiTrans = "XAAI";
            saaiTrans = "SAAI";
            aiTrans   = "AI";
            aiaTrans  = "AIA";
            iaTrans   = "IA";
            switch (dataType)
            {
            case Model.Enum.TransCamEFEO:
                ppoTrans   = "PPO";
                liauaTrans = "LIAUA";
                auaTrans   = "AUA";
                aoTrans    = "AO";
                break;

            case Model.Enum.TransInrasara:
                ppoTrans   = "PPO";
                liauaTrans = "LIAWA";
                auaTrans   = "AWA";
                aoTrans    = "AU";
                break;

            default:
                ppoTrans   = "PPÔ";
                liauaTrans = "LIAWA";
                auaTrans   = "AWA";
                aoTrans    = "AU";
                break;
            }

            //xaai
            List <Model.AKhar> xaai = new List <Model.AKhar>();

            xaai.Add(Model.AKhar.Xak);
            xaai.Add(Model.AKhar.DarDua);
            xaai.Add(Model.AKhar.Ai);
            ret.Add(xaaiTrans, xaai);

            //ai
            List <Model.AKhar> ai = new List <Model.AKhar>();

            ai.Add(Model.AKhar.DarDua);
            ai.Add(Model.AKhar.Ai);
            ret.Add(aiTrans, ai);

            //saai
            List <Model.AKhar> saai = new List <Model.AKhar>();

            saai.Add(Model.AKhar.SakPraong);
            saai.Add(Model.AKhar.DarDua);
            saai.Add(Model.AKhar.Ai);
            ret.Add(saaiTrans, saai);

            //po
            List <Model.AKhar> ppo = new List <Model.AKhar>();

            ppo.Add(Model.AKhar.DarSa);
            ppo.Add(Model.AKhar.PakPraong);
            ppo.Add(Model.AKhar.TakaiThek);
            ret.Add(ppoTrans, ppo);

            //liaua
            List <Model.AKhar> liaua = new List <Model.AKhar>();

            liaua.Add(Model.AKhar.Lak);
            liaua.Add(Model.AKhar.TakaiKik);
            liaua.Add(Model.AKhar.Ak);
            liaua.Add(Model.AKhar.TakaiKuak);
            liaua.Add(Model.AKhar.Balau);
            ret.Add(liauaTrans, liaua);

            //aua
            List <Model.AKhar> aua = new List <Model.AKhar>();

            aua.Add(Model.AKhar.Ak);
            aua.Add(Model.AKhar.TakaiKuak);
            aua.Add(Model.AKhar.Balau);
            ret.Add(auaTrans, aua);

            //aia
            List <Model.AKhar> aia = new List <Model.AKhar>();

            aia.Add(Model.AKhar.Ak);
            aia.Add(Model.AKhar.TakaiKiak);
            aia.Add(Model.AKhar.Balau);
            ret.Add(aiaTrans, aia);
            //ia
            ret.Add(iaTrans, aia);

            //ao
            List <Model.AKhar> ao = new List <Model.AKhar>();

            ao.Add(Model.AKhar.DarSa);
            ao.Add(Model.AKhar.Ak);
            ao.Add(Model.AKhar.TraohAw);
            ret.Add(aoTrans, ao);

            return(ret);
        }
예제 #28
0
        /// <summary>
        /// Set Rumi chars key code from XML file into hastable
        /// </summary>
        /// <param name="transKeycode">rumiKeycode</param>
        public static void SetTransToKeyCode(ref Hashtable transKeycode, Model.Enum desType)
        {
            transKeycode = new Hashtable();

            Model.XMLTransToKeyCol columnNo = Model.XMLTransToKeyCol.Rumi;
            String sapPaohAO   = String.Empty;
            String sapPaohAOM  = String.Empty;
            String sapPaohAONG = String.Empty;
            String sapPaohEM   = String.Empty;
            String akharIÉNG   = String.Empty;
            String akharIENG   = String.Empty;
            String sapPaohAU   = String.Empty;

            if (desType == Model.Enum.TransCamEFEO)
            {
                columnNo    = Model.XMLTransToKeyCol.Rumi;
                sapPaohAO   = Model.Constant.AO_EFEO;
                sapPaohAOM  = Model.Constant.AOM_EFEO;
                sapPaohAONG = Model.Constant.AONG_EFEO;
                sapPaohEM   = Model.Constant.EM_EFEO;
                akharIÉNG   = Model.Constant.IÉNG_EFEO;
                akharIENG   = Model.Constant.IENG_EFEO;
                sapPaohAU   = Model.Constant.AU_EFEO;
            }

            else if (desType == Model.Enum.TransInrasara)
            {
                columnNo    = Model.XMLTransToKeyCol.InraSara;
                sapPaohAO   = Model.Constant.AO_SARA;
                sapPaohAOM  = Model.Constant.AOM_SARA;
                sapPaohAONG = Model.Constant.AONG_SARA;
                sapPaohEM   = Model.Constant.EM_SARA;
                akharIÉNG   = Model.Constant.IÉNG_SARA;
                akharIENG   = Model.Constant.IENG_SARA;
                sapPaohAU   = Model.Constant.AU_SARA;
            }
            else if (desType == Model.Enum.TransKawomTT)
            {
                columnNo    = Model.XMLTransToKeyCol.KawomTuekTuah;
                sapPaohAO   = Model.Constant.AO_KawomTT;
                sapPaohAOM  = Model.Constant.AOM_KawomTT;
                sapPaohAONG = Model.Constant.AONG_KawomTT;
                sapPaohEM   = Model.Constant.EM_KawomTT;
                akharIÉNG   = Model.Constant.IÉNG_KawomTT;
                akharIENG   = Model.Constant.IENG_KawomTT;
                sapPaohAU   = Model.Constant.AU_KawomTT;

                List <Model.AKhar> sappaohE = new List <Model.AKhar>();
                sappaohE.Add(Model.AKhar.DarDua);
                transKeycode.Add("E", sappaohE);
            }

            //Add au
            List <Model.AKhar> sappaohAu = new List <Model.AKhar>();

            sappaohAu.Add(Model.AKhar.TakaiKuk);
            sappaohAu.Add(Model.AKhar.TakaiThek);
            transKeycode.Add(sapPaohAU, sappaohAu);

            //Add iéng
            List <Model.AKhar> lstTemp = new List <Model.AKhar>();

            lstTemp.Add(Model.AKhar.DarSa);
            lstTemp.Add(Model.AKhar.TakaiKiak);
            lstTemp.Add(Model.AKhar.TakaiThekPaohNgâk);
            transKeycode.Add(akharIÉNG, lstTemp);

            //Add ieng
            lstTemp = new List <Model.AKhar>();
            lstTemp.Add(Model.AKhar.TakaiKiak);
            lstTemp.Add(Model.AKhar.TakaiThekPaohNgâk);
            transKeycode.Add(akharIENG, lstTemp);

            Stream  strm = ReadXMLFile(Model.Constant.TRANS_TO_KEY_FILE);
            DataSet dts  = new DataSet();

            dts.ReadXml(strm);

            DataTable dtt = dts.Tables[0];

            foreach (DataRow dtr in dtt.Rows)
            {
                Model.AKhar        akhar     = (Model.AKhar)Convert.ToInt32(dtr[Convert.ToInt32(Model.XMLTransToKeyCol.KeyCode)]);
                String             transChar = dtr[Convert.ToInt32(columnNo)].ToString().ToUpper();
                List <Model.AKhar> listAkhar = new List <Model.AKhar>();

                //Keycode - Rumi
                bool isIrregular = false;
                if (!transKeycode.ContainsKey(transChar))
                {
                    if (transChar == sapPaohAO)
                    {
                        listAkhar.Add(Model.AKhar.DarSa);
                        listAkhar.Add(Model.AKhar.TraohAw);
                        isIrregular = true;
                    }

                    if (transChar == sapPaohAOM)
                    {
                        listAkhar.Add(Model.AKhar.DarSa);
                        listAkhar.Add(Model.AKhar.TraohAwTutTakaiMâk);
                        isIrregular = true;
                    }

                    if (transChar == sapPaohAONG)
                    {
                        listAkhar.Add(Model.AKhar.DarSa);
                        listAkhar.Add(Model.AKhar.TraohAwPaohNgâk);
                        isIrregular = true;
                    }

                    if (transChar == sapPaohEM)
                    {
                        listAkhar.Add(Model.AKhar.DarSa);
                        //listAkhar.Add(Model.AKhar.TakaiThek);
                        listAkhar.Add(Model.AKhar.TakaiThekTutTakaiMâk);
                        isIrregular = true;
                    }

                    if (!isIrregular)
                    {
                        listAkhar.Add(akhar);
                    }

                    transKeycode.Add(transChar, listAkhar);
                }
            }

            //add au, am dai
            if (desType == Model.Enum.TransKawomTT)
            {
                List <Model.AKhar> listAkhar = new List <Model.AKhar>();
                listAkhar.Add(Model.AKhar.DarSa);
                listAkhar.Add(Model.AKhar.TraohAw);

                transKeycode.Add(sapPaohAO, listAkhar);

                //OO
                transKeycode["OO"] = listAkhar;

                //AA
                listAkhar = new List <Model.AKhar>();
                listAkhar.Add(Model.AKhar.Balau);
                transKeycode.Add("AA", listAkhar);

                //UU
                listAkhar = new List <Model.AKhar>();
                listAkhar.Add(Model.AKhar.Balau);
                listAkhar.Add(Model.AKhar.TakaiKuk);
                transKeycode.Add("UU", listAkhar);

                //EE
                listAkhar = new List <Model.AKhar>();
                listAkhar.Add(Model.AKhar.DarDua);
                listAkhar.Add(Model.AKhar.Balau);
                transKeycode.Add("EE", listAkhar);

                //ƯƯ
                listAkhar = new List <Model.AKhar>();
                listAkhar.Add(Model.AKhar.TakaiKâk);
                listAkhar.Add(Model.AKhar.Balau);
                transKeycode.Add("ƯƯ", listAkhar);

                //ƠƠ
                listAkhar = new List <Model.AKhar>();
                listAkhar.Add(Model.AKhar.BalauTapong);
                transKeycode.Add("ƠƠ", listAkhar);

                //II
                listAkhar = new List <Model.AKhar>();
                listAkhar.Add(Model.AKhar.TakaiKikTutTakaiMâkDalem);
                transKeycode.Add("II", listAkhar);
            }
        }
예제 #29
0
 /// <summary>
 /// Clear log data
 /// </summary>
 public static void ClearLogData()
 {
     _dataConvert    = string.Empty;
     _sourceType     = Model.Enum.FontYapata;
     _desinationType = Model.Enum.FontYapata;
 }
예제 #30
0
 /// <summary>
 /// Check Is Font Cam
 /// </summary>
 /// <param name="dataType">dataType</param>
 public bool IsFont(Model.Enum dataType)
 {
     return(dataType <= Model.Enum.FontUniCamVN);
 }
예제 #31
0
        /// <summary>
        /// Still needs work!
        /// </summary>
        /// <returns></returns>
        private Model.Enum TraverseEnums(EnumDeclarationSyntax eds)
        {
            Model.Enum retEnu = new Model.Enum();
            //public List<string> EnumItems { get; set; }
            //public string Name { get; set; }
            //public Type Type { get; set; }

            if (eds.HasLeadingTrivia)
            {
                SetOuterComments(retEnu, eds.GetLeadingTrivia().ToFullString());
            }

            if (eds.HasTrailingTrivia)
            {
                SetInnerComments(retEnu, eds.GetTrailingTrivia().ToFullString());
            }

            var types = from aType in eds.ChildNodes().OfType<TypeDeclarationSyntax>() select aType;
            foreach (TypeDeclarationSyntax tds in types)
            {
                //TODO put breakpoint here
                //to find out how to get types
            }
            foreach (SyntaxToken st in eds.Modifiers)
            {
                string modifier = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(st.ValueText);
                retEnu.Encapsulation.Add((Encapsulation)System.Enum.Parse(typeof(Encapsulation), modifier));
            }

            var enumItems = from aEnumItem in eds.ChildNodes().OfType<EnumMemberDeclarationSyntax>() select aEnumItem;
            foreach (EnumMemberDeclarationSyntax emds in enumItems)
            {
                //TODO put breakpoint here
                //to find out how to get enumitems
            }

            return retEnu;
        }
예제 #32
0
        private Model.Enum TraverseEnum(EnumBlockSyntax ebs)
        {
            Model.Enum retEnum = new Model.Enum();

            /*
             Type = new Type();
            Encapsulation = new List<Encapsulation>();
            EnumItems = new List<string>();
             */
            retEnum.Name = ebs.EnumStatement.Identifier.ValueText;

            //TODO: What is the deal with Type?

            foreach (SyntaxToken st in ebs.EnumStatement.Modifiers)
            {
                string modifier = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(st.ValueText);
                retEnum.Encapsulation.Add((Encapsulation)System.Enum.Parse(typeof(Encapsulation), modifier));
            }

            //TODO: EnumItems
            foreach (EnumMemberDeclarationSyntax emds in ebs.Members)
            {
                retEnum.EnumItems.Add(emds.Identifier.ValueText);
            }

            return retEnum;
        }