Example #1
0
        /// <summary>
        /// "SYNC" 태그만 있는 데이터를 잘라줍니다.
        /// </summary>
        /// <param name="tagOri"></param>
        /// <returns></returns>
        public SmaiSync[] Tags_Cut_Sync(string sOri)
        {
            //리턴할 리스트
            List <SmaiSync> listReturn = new List <SmaiSync>();

            //태그
            string sSync = "sync";

            //태그를 기준으로 자르고
            string[] sCutData = Regex.Split(sOri, "<" + sSync, RegexOptions.IgnoreCase);

            //한개씩 처리
            foreach (string sItem in sCutData)
            {
                SmaiSync dataTemp = new SmaiSync();

                //<sami>의 해드를 분리한다.
                string[] sData = sItem.Split(">".ToCharArray(), 2);


                //해드 처리
                string sHead = sData[0];

                //분리한 해드에서 어트리뷰트를 추출한다.
                //어트리뷰트 추출
                string[] sAttribute = Regex.Matches(sHead
                                                    , @"(\S+)=[""']?((?:.(?![""']?\s + (?:\S +)=|[> ""']))+.)[""']?"
                                                    , RegexOptions.IgnoreCase | RegexOptions.Singleline)
                                      .Cast <Match>().Select(m => m.Value).ToArray();

                //어트리뷰트 만큰 생성
                foreach (string sAttr in sAttribute)
                {
                    //어트리 뷰트 추출
                    string[] sCut = sAttr.Split("=".ToCharArray(), 2);
                    if (2 == sCut.Length)
                    {                    //내용이 있다.
                        if ("start" == sCut[0].ToLower())
                        {                //start 어트리뷰트가 있다.
                            //변환해서 넣는다.
                            dataTemp.Start = Convert.ToInt32(this.CutQuotes(sCut[1]));
                        }
                    }

                    //컨텐츠 추출
                    dataTemp.Content = sData[1];
                }

                if (0 <= dataTemp.Start)
                {                //스타트에 값이 있다.
                    //값이 있을때만 데이터를 넣는다.
                    listReturn.Add(dataTemp);
                }
            }


            return(listReturn.ToArray());
        }
Example #2
0
        /// <summary>
        /// nStartIndex의 부터 뒷쪽 모든 sami데이터를 nAddSync만큼 더해줍니다.
        /// </summary>
        /// <param name="nStartIndex">시작할 인덱스</param>
        /// <param name="nAddSync">더해줄 싱크값(마이너스 값을 넣으면 빼줌)</param>
        public void Sync_Add(TypeSyncAdd_Taget typeTaget, int nStartIndex, int nAddSync)
        {
            int nStart = -1;
            int nTotla = -1;

            //타겟의 범위를 설정 한다.
            switch (typeTaget)
            {
            case TypeSyncAdd_Taget.One:
                nStart = nStartIndex;
                nTotla = nStartIndex + 1;
                break;

            case TypeSyncAdd_Taget.All:
                nStart = 0;
                nTotla = this.SMI.Data.Count;
                break;

            case TypeSyncAdd_Taget.NowBack:
            default:                    //기본은 뒤로
                nStart = nStartIndex;
                nTotla = this.SMI.Data.Count;
                break;
            }


            //지정한 인덱스부터 끝까지 돌린다.
            for (int i = nStart; i < this.SMI.Data.Count; ++i)
            {
                //아이템을 선택하고
                SmaiSync item = this.SMI.Data[i];

                //값을 추가한다.
                item.Start += nAddSync;
            }
        }
Example #3
0
 private string GetSync(SmaiSync sync)
 {
     return(string.Format("<SYNC Start={0}>{1}", sync.Start, sync.Content));
 }