/// <summary> /// 指定した属性の説明を取得する /// </summary> /// <param name="info"></param> /// <param name="attrName"></param> /// <returns></returns> private static string getTagAttrComment(string attrName, KagTagKindInfo info) { KagMacro[] macroList = PluginMain.ParserSrv.GetKagMacroList(); if (macroList.Length == 0) { return(""); //一つもないとき } KagMacroAttr attr = KagUtility.GetKagMacroAttr(attrName, info, macroList); if (attr == null) { return(""); //属性が取得できなかったとき } return(attr.Comment); }
/// <summary> /// 属性値リストを取得する /// </summary> /// <param name="macro">取得するマクロオブジェクト</param> /// <param name="macroList">マクロ情報リスト</param> /// <returns>属性値リスト</returns> private ICompletionData[] getAttrValueList(KagTagKindInfo info, KagMacro[] macroList) { KagMacro macro = KagUtility.GetKagMacro(info.TagName, macroList); if (macro == null) { return(null); //マクロが見つからない } resetReverseCount(); KagMacroAttr attr = getMacroAttr(info.AttrName, macro, macroList); if (attr == null) { return(null); //属性が見つからない } return(KagCompletionAttrValue.GetCompletionDataList(attr, info)); }
/// <summary> /// KAG属性値入力補完データリストを取得する /// </summary> /// <param name="attr">属性情報</param> /// <param name="compInfo">入力補完情報</param> /// <returns>入力補完データリスト</returns> public static KagCompletionData[] GetCompletionDataList(KagMacroAttr attr, KagTagKindInfo compInfo) { if (attr == null) { return(null); //何も返せない } //設定取得 EditorOption option = GlobalStatus.EditorManager.GetEditorOption(FileType.KrkrType.Kag); if (option == null) { return(null); //何も返せない } string[] valueTypeList = splitAttrValue(attr.ValueType); if (valueTypeList == null) { return(null); } List <KagCompletionData> dataList = new List <KagCompletionData>(); foreach (string valueType in valueTypeList) { //属性値リスト取得 string[] valueList = getAttrValueList(valueType, option.KagCompOption, compInfo); if (valueList == null) { continue; } //取得した属性値を追加 foreach (string value in valueList) { dataList.Add(new KagCompletionData(value, attr.Comment, KagCompletionData.Kind.AttrValue)); } } return(dataList.ToArray()); }
/// <summary> /// KAG属性値入力補完データリストを取得する /// </summary> /// <param name="attr">属性情報</param> /// <param name="compInfo">入力補完情報</param> /// <returns>入力補完データリスト</returns> public List <ICompletionListItem> GetCompletionDataList(KagMacroAttr attr, KagTagKindInfo compInfo) { if (attr == null) { return(null); //何も返せない } //設定取得 string[] valueTypeList = splitAttrValue(attr.ValueType); if (valueTypeList == null) { return(null); } List <ICompletionListItem> dataList = new List <ICompletionListItem>(); foreach (string valueType in valueTypeList) { //属性値リスト取得 string[] valueList = getAttrValueList(valueType, compInfo); if (valueList == null) { continue; } //取得した属性値を追加 foreach (string value in valueList) { string value2 = value; if (PluginMain.EnvSettings.UseAttrValueDqRegion || value.IndexOf(' ') != -1) //設定ONもしくは空白有の時 { value2 = "\"" + value + "\""; } dataList.Add(new KagCompletionListItem(value, value2, attr.Comment, m_iconBitmap)); } } return(dataList); }
/// <summary> /// マクロ属性オブジェクトを取得する /// (再帰する) /// </summary> /// <param name="attrName">取得したい属性名</param> /// <param name="macro">属性の所属するマクロオブジェクト</param> /// <param name="macroList">マクロ情報リスト</param> /// <returns>属性オブジェクト</returns> private KagMacroAttr getMacroAttr(string attrName, KagMacro macro, KagMacro[] macroList) { if (overcheckReverseCount()) { //再帰回数がオーバーしているときは何もせずに終了する return(null); } //属性リストから検索する foreach (KagMacroAttr attr in macro.AttrTable.Values) { if (attrName == attr.Name) { return(attr); //属性を見つけた } } //省略属性リストから検索する KagMacro asterMacro = null; foreach (string tagName in macro.AsteriskTagList) { asterMacro = KagUtility.GetKagMacro(tagName, macroList); if (asterMacro == null) { continue; //このマクロは見つからない } KagMacroAttr attr = getMacroAttr(attrName, asterMacro, macroList); if (attr != null) { return(attr); //属性を見つけた } } return(null); //見つからなかった }