/// <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(); } }
/// <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()); }
/// <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(); }
/// <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); }
/// <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); }
/// <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); }
/// <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)); } }
/// <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()); }
/// <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); }
/// <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(); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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; } }
/// <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); }
/// <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); } } }
/// <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>()); } }
/// <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()); }
/// <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; }
/// <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); }
/// <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); } }
/// <summary> /// Clear log data /// </summary> public static void ClearLogData() { _dataConvert = string.Empty; _sourceType = Model.Enum.FontYapata; _desinationType = Model.Enum.FontYapata; }
/// <summary> /// Check Is Font Cam /// </summary> /// <param name="dataType">dataType</param> public bool IsFont(Model.Enum dataType) { return(dataType <= Model.Enum.FontUniCamVN); }
/// <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; }
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; }