Beispiel #1
0
        /// <summary>
        /// KAGファイル出力用タグを生成する
        /// </summary>
        /// <param name="tag"></param>
        /// <returns></returns>
        private string getWriteKagTag(KagTag tag)
        {
            string text = "";

            //マクロコメント生成
            text += String.Format(";;[{0}] {1}\n", tag.Group, tag.ShortInfo);
            text += String.Format(";;{0}\n", tag.Remarks);
            foreach (KagTagAttr attr in tag.AttrTable.Values)
            {
                text += String.Format(";;{0}=", attr.Name);
                if (attr.Required)
                {
                    text += String.Format("[{0}] ", "必須");
                }
                text += String.Format("{0}\\n{1}, {2}\n", attr.ShortInfo, attr.Info, attr.Format);
            }

            //タグマクロ生成
            text += String.Format("[macro name=\"{0}\"]\n", tag.Name);
            text += String.Format("[kagtag");
            foreach (KagTagAttr attr in tag.AttrTable.Values)
            {
                text += String.Format(" {0}=%{1}", attr.Name, attr.Name);
            }
            text += String.Format("]\n");
            text += String.Format("[endmacro]\n");

            return(text);
        }
Beispiel #2
0
        /// <summary>
        /// tags.xmlを読み込む
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public bool LoadFileFromXml(string filePath)
        {
            m_filePath = filePath;
            if (File.Exists(m_filePath) == false)
            {
                Debug.WriteLine("指定されたファイルが存在しません");
                return(false);
            }

            //XMLファイルを読み込み
            XmlDocument doc = new XmlDocument();

            doc.Load(m_filePath);
            XmlNodeList nodeList = doc.GetElementsByTagName("tag");

            if (nodeList == null)
            {
                Debug.WriteLine("指定されたXMLファイルが不正です");
                return(false);
            }

            bool kagex = false;

            if (Path.GetFileName(filePath) == "kagextags.xml" ||
                Path.GetFileName(filePath) == "worldextags.xml")
            {
                kagex = true;
            }

            //ノード読み込み
            foreach (XmlElement tagNode in nodeList)
            {
                //タグノード読み込み
                KagTag tag = readTagNode(tagNode, kagex);
                if (tag == null || tag.Name == "" || m_tags.ContainsKey(tag.Name))
                {
                    //取得できなかった時、またはすでに登録済みの場合は登録しない
                    continue;
                }

                m_tags.Add(tag.Name, tag);
            }

            foreach (string text in m_attrNameList)
            {
                Debug.WriteLine(text);
            }

            return(true);
        }
Beispiel #3
0
        /// <summary>
        /// タグノードを読み込む
        /// </summary>
        /// <param name="tagElement">タグエレメント</param>
        private KagTag readTagNode(XmlElement tagElement, bool kagex)
        {
            KagTag tag = new KagTag(kagex);

            foreach (XmlElement node in tagElement.ChildNodes)
            {
                switch (node.Name)
                {
                case "tagname":
                    tag.Name = node.InnerText;
                    break;

                case "group":
                    tag.Group = node.InnerText;
                    break;

                case "tagshortinfo":
                    tag.ShortInfo = node.InnerText;
                    break;

                case "tagremarks":
                    tag.SetRemarks(node.InnerText);
                    break;

                case "attr":
                    KagTagAttr attr = readTagAttrNode(node);
                    if (attr == null || attr.Name == "" || tag.AttrTable.ContainsKey(attr.Name))
                    {
                        //取得できなかった時、またはすでに登録済みの場合は登録しない
                        break;
                    }
                    tag.AttrTable.Add(attr.Name, attr);
                    m_attrNameList.Add(tag.Name + "\t" + attr.Name + "\t" + attr.Format);
                    break;
                }
            }

            //属性値フォーマットを改めてセットする
            foreach (string attrName in tag.AttrTable.Keys)
            {
                string format = getAttrValueFormatFromTable(tag.Name, attrName);
                if (format != "")
                {
                    //フォーマットテーブルにのっているときはそれを使用する
                    tag.AttrTable[attrName].Format = format;
                }
            }
            return(tag);
        }
Beispiel #4
0
        /// <summary>
        /// 属性値フォーマットをテーブルから取得する
        /// </summary>
        /// <param name="tagName">タグ名</param>
        /// <param name="attrName">属性名</param>
        /// <returns>属性値フォーマット 存在しないときはNOT_FOUND_FOMATを返す</returns>
        private string getAttrValueFormatFromTable(string tagName, string attrName)
        {
            foreach (AttrValueFormatTable format in this.ATTR_VALUE_FOMAT_TABLE)
            {
                if (tagName == format.TagName && attrName == format.AttrName)
                {
                    return(format.ValueFormat);
                }
            }

            //cond属性をチェックする
            if (KagTag.HaveCondAttr(tagName) == true && attrName == ATTR_VALUE_FOMAT_COND.AttrName)
            {
                return(ATTR_VALUE_FOMAT_COND.ValueFormat);
            }

            return("");
        }