Exemple #1
0
        /// <summary>TSCコードからTSCObjectを作成する</summary>
        /// <param name="tscCode">TSCコード</param>
        /// <returns>TSCObject</returns>
        private static TSCObject makeTSCObject(string tscCode)
        {
            if (!RG1.IsMatch(tscCode)) return NULL_OBJECT;

            TSCObject tscObj = new TSCObject("DEFAULT");
            Match match = RG2.Match(tscCode);
            if (match.Success)
            {
                tscObj.SetPrefix(match.Value);
                tscCode = tscCode.Remove(0, match.Length);
            }
            match = RG3.Match(tscCode);
            if (match.Success)
            {
                tscObj.CoreName = match.Value;
                tscCode = tscCode.Remove(0, match.Length);
            }
            match = RG4.Match(tscCode);
            if (match.Success)
            {
                tscObj.SetArrayString(match.Value.Substring(1, match.Value.Length - 2));
                tscCode = tscCode.Remove(0, match.Length);
            }
            match = RG5.Match(tscCode);
            if (match.Success)
            {
                tscObj.SetSuffix(match.Value);
            }

            return tscObj;
        }
Exemple #2
0
        /// <summary>TSCコードからTSCObjectを作成する</summary>
        /// <param name="tscCode">TSCコード</param>
        /// <param name="tscObject">TSCObject</param>
        /// <returns>作成成功の真偽</returns>
        public static bool TryMakeTSCObjectFromTSCCode(string tscCode, out TSCObject tscObject)
        {
            tscObject = NULL_OBJECT;

            Regex reg = new Regex("[A-Z]+");

            //階層を切断
            string[] objs = tscCode.Split('_');
            for (int i = 1; i < objs.Length; i++)
            {
                if (objs[i] == "") break;

                //大文字を含まない場合は添字
                while ((!reg.IsMatch(objs[i])) && (objs[i] != ""))
                {
                    objs[i - 1] += "_" + objs[i];
                    for (int j = i; j < objs.Length - 1; j++)
                    {
                        objs[j] = objs[j + 1];
                    }
                    objs[objs.Length - 1] = "";
                }
            }

            tscObject = makeTSCObject(objs[0]);
            if (tscObject == NULL_OBJECT) return false;

            TSCObject parent = tscObject;
            for (int i = 1; i < objs.Length; i++)
            {
                if (objs[i] == "") break;
                TSCObject child = makeTSCObject(objs[i]);
                if (tscObject == NULL_OBJECT) break;
                parent.Child = child;
                parent = child;
            }

            return true;
        }