public frmEditTag(SetTag set_tag, CheckDuplicateTag check_tag, bool edit) { InitializeComponent(); this.isEdit = edit; this.delgSetTag = set_tag; this.delgCheckDuplicate = check_tag; }
public bool Equals(ContentPreview input) { if (input == null) { return(false); } return (( Name == input.Name || (Name != null && Name.Equals(input.Name)) ) && ( Path == input.Path || (Path != null && Path.Equals(input.Path)) ) && ( ItemInSet == input.ItemInSet || (ItemInSet != null && ItemInSet.Equals(input.ItemInSet)) ) && ( SetTag == input.SetTag || (SetTag != null && SetTag.Equals(input.SetTag)) ) && ( SetNesting == input.SetNesting || (SetNesting.Equals(input.SetNesting)) ) && ( UseSetId == input.UseSetId || (UseSetId.Equals(input.UseSetId)) )); }
public frmEditTag(SetTag set_tag, cls_Tag tag) { InitializeComponent(); this.isEdit = true; this.tag_data = tag; this.delgSetTag = set_tag; //this.delgCheckDuplicate = check_tag; }
/// <summary> /// 分析标签 /// </summary> /// <param name="parser">TemplateParser</param> /// <param name="tc">Token集合</param> /// <returns></returns> public Tag Parse(TemplateParser parser, TokenCollection tc) { //支持写法:简写格式: //常规格式: if (tc.Count > 5 && Common.ParserHelpers.IsEqual(tc.First.Text, Field.KEY_SET) && tc[1].TokenKind == TokenKind.LeftParentheses && tc[3].Text == "=" && tc.Last.TokenKind == TokenKind.RightParentheses) { SetTag tag = new SetTag(); tag.Name = tc[2].Text; TokenCollection coll = new TokenCollection(); coll.Add(tc, 4, tc.Count - 2); tag.Value = parser.Read(coll); return(tag); } else if (tc.Count == 2 && tc.First.TokenKind == TokenKind.TextData && tc.Last.TokenKind == TokenKind.Operator && (tc.Last.Text == "++" || tc.Last.Text == "--")) { SetTag tag = new SetTag(); tag.Name = tc.First.Text; ExpressionTag c = new ExpressionTag(); c.AddChild(new VariableTag() { FirstToken = tc.First, Name = tc.First.Text }); c.AddChild(new TextTag() { FirstToken = new Token(TokenKind.Operator, tc.Last.Text[0].ToString()) }); c.AddChild(new NumberTag() { Value = 1, FirstToken = new Token(TokenKind.Number, "1") }); tag.Value = c; return(tag); } else if (tc.Count > 2 && tc.First.TokenKind == TokenKind.TextData && tc[1].Text == "=") { SetTag tag = new SetTag(); tag.Name = tc.First.Text; TokenCollection coll = new TokenCollection(); coll.Add(tc, 2, tc.Count - 1); tag.Value = parser.Read(coll); return(tag); } return(null); }
/// <summary> /// 分析标签 /// </summary> /// <param name="parser">TemplateParser</param> /// <param name="tc">Token集合</param> /// <returns></returns> public ITag Parse(TemplateParser parser, TokenCollection tc) { if (tc == null || parser == null) { return(null); } //支持写法:简写格式: //常规格式: if (tc.Count > 5 && Utility.IsEqual(tc.First.Text, Field.KEY_SET) && tc[1].TokenKind == TokenKind.LeftParentheses && tc[3].Text == "=" && tc.Last.TokenKind == TokenKind.RightParentheses) { SetTag tag = new SetTag(); tag.Name = tc[2].Text; tag.Value = parser.Read(tc[4, -1]); return(tag); } if (tc.Count == 2 && tc.First.TokenKind == TokenKind.TextData && tc.Last.TokenKind == TokenKind.Operator && (tc.Last.Text == "++" || tc.Last.Text == "--")) { SetTag tag = new SetTag(); tag.Name = tc.First.Text; var c = new ArithmeticTag(); c.AddChild(new VariableTag() { FirstToken = tc.First, Name = tc.First.Text }); c.AddChild(new OperatorTag(new Token(TokenKind.Operator, tc.Last.Text[0].ToString()))); //c.AddChild(new TextTag() //{ // FirstToken = new Token(TokenKind.Operator, tc.Last.Text[0].ToString()) //}); c.AddChild(new NumberTag() { Value = 1, FirstToken = new Token(TokenKind.Number, "1") }); tag.Value = c; return(tag); } if (tc.Count > 2 && tc.First.TokenKind == TokenKind.TextData && tc[1].Text == "=") { SetTag tag = new SetTag(); tag.Name = tc.First.Text; tag.Value = parser.Read(tc[2, tc.Count]); return(tag); } return(null); }
public static bool IsGoatFormat(string SetTagsStr) { if (SetTagsStr == null) { return(false); } List <string> SetTags = SetTagsStr.Split(',').ToList(); List <string> GoatSetTags = new List <string>(); GoatSetTags.Add("LOB"); GoatSetTags.Add("MRD"); GoatSetTags.Add("SRL"); GoatSetTags.Add("MRL"); GoatSetTags.Add("PSV"); GoatSetTags.Add("LON"); GoatSetTags.Add("LOD"); GoatSetTags.Add("PGD"); GoatSetTags.Add("MFC"); GoatSetTags.Add("DCR"); GoatSetTags.Add("IOC"); GoatSetTags.Add("AST"); GoatSetTags.Add("SOD"); GoatSetTags.Add("RDS"); GoatSetTags.Add("FET"); GoatSetTags.Add("DB1"); GoatSetTags.Add("DB2"); GoatSetTags.Add("DR1"); GoatSetTags.Add("TP1"); GoatSetTags.Add("TP2"); GoatSetTags.Add("TP3"); GoatSetTags.Add("TP4"); GoatSetTags.Add("TP5"); GoatSetTags.Add("TP6"); GoatSetTags.Add("BPT"); GoatSetTags.Add("BPT"); GoatSetTags.Add("CT1"); GoatSetTags.Add("DDS"); GoatSetTags.Add("FMR"); GoatSetTags.Add("EDS"); GoatSetTags.Add("DOR"); GoatSetTags.Add("SDD"); GoatSetTags.Add("PCY"); GoatSetTags.Add("TFK"); GoatSetTags.Add("TSC"); GoatSetTags.Add("WC4"); GoatSetTags.Add("DOD"); GoatSetTags.Add("PCK"); GoatSetTags.Add("ROD"); GoatSetTags.Add("PCJ"); GoatSetTags.Add("DBT"); GoatSetTags.Add("CMC"); GoatSetTags.Add("WC5"); GoatSetTags.Add("MP1"); GoatSetTags.Add("MOV"); GoatSetTags.Add("SP1-EN001"); GoatSetTags.Add("SP1-EN002"); GoatSetTags.Add("SDY"); GoatSetTags.Add("SDK"); GoatSetTags.Add("SDJ"); GoatSetTags.Add("SDP"); GoatSetTags.Add("SYE"); GoatSetTags.Add("SKE"); GoatSetTags.Add("SD1"); GoatSetTags.Add("SD2"); GoatSetTags.Add("SD3"); GoatSetTags.Add("SD4"); GoatSetTags.Add("EP1"); foreach (var SetTag in SetTags) { foreach (var GoatSetTag in GoatSetTags) { if ((SetTag.Length > GoatSetTag.Length && SetTag.StartsWith(GoatSetTag) && SetTag[GoatSetTag.Length] == '-') || SetTag == GoatSetTag) { return(true); } } } return(false); }
/// <summary> /// Recursively evaluates the template nodes returned from the bot /// </summary> /// <param name="node">the node to evaluate</param> /// <param name="request">the request from the user</param> /// <param name="result">the result to be sent to the user</param> /// <param name="user">the user who originated the request</param> /// <returns>the output string</returns> private string ProcessNode(XmlNode node, Request request, Result result, User user) { StringBuilder newInnerText = new StringBuilder(); if (node.HasChildNodes) { // recursively check foreach (XmlNode childNode in node.ChildNodes) { childNode.InnerText = this.ProcessNode(childNode, request, result, user); } } // process the node itself AIMLTagHandler tagHandler = null; switch (node.Name.ToLower()) { case "bot": tagHandler = new BotTag(this, user, request, result, node); break; case "condition": tagHandler = new ConditionTag(this, user, request, result, node); break; case "date": tagHandler = new DateTag(this, user, request, result, node); break; case "formal": tagHandler = new FormalTag(this, user, request, result, node); break; case "gender": tagHandler = new GenderTag(this, user, request, result, node); break; case "get": tagHandler = new GetTag(this, user, request, result, node); break; case "gossip": tagHandler = new GossipTag(this, user, request, result, node); break; case "id": tagHandler = new IdTag(this, user, request, result, node); break; case "input": tagHandler = new InputTag(this, user, request, result, node); break; case "javascript": tagHandler = new JavascriptTag(this, user, request, result, node); break; case "learn": tagHandler = new LearnTag(this, user, request, result, node); break; case "lowercase": tagHandler = new LowercaseTag(this, user, request, result, node); break; case "person": tagHandler = new PersonTag(this, user, request, result, node); break; case "person2": tagHandler = new Person2Tag(this, user, request, result, node); break; case "random": tagHandler = new RandomTag(this, user, request, result, node); break; case "sentence": tagHandler = new SentenceTag(this, user, request, result, node); break; case "set": tagHandler = new SetTag(this, user, request, result, node); break; case "size": tagHandler = new SizeTag(this, user, request, result, node); break; case "sr": tagHandler = new SrTag(this, user, request, result, node); break; case "srai": tagHandler = new SraiTag(this, user, request, result, node); break; case "star": tagHandler = new StarTag(this, user, request, result, node); break; case "system": tagHandler = new SystemTag(this, user, request, result, node); break; case "that": tagHandler = new ThatTag(this, user, request, result, node); break; case "thatstar": tagHandler = new ThatStarTag(this, user, request, result, node); break; case "think": tagHandler = new ThinkTag(this, user, request, result, node); break; case "topicstar": tagHandler = new TopicStarTag(this, user, request, result, node); break; case "uppercase": tagHandler = new UppercaseTag(this, user, request, result, node); break; case "version": tagHandler = new VersionTag(this, user, request, result, node); break; default: tagHandler = this.GetBespokeTags(user, request, result, node); break; } if (object.Equals(null, tagHandler)) { return(node.InnerText); } else { return(tagHandler.Transform()); } }
public Tag Parse(TemplateParser parser, TokenCollection tc) { if (ParserHelpers.IsEqual(tc.First.Text, Field.KEY_ARRAY)) { if (tc.Count > 2 && (tc[1].TokenKind == TokenKind.LeftParentheses) && tc.Last.TokenKind == TokenKind.RightParentheses) { int pos = 0; int begin = 2; int end; Tag tmp; ArrayTag tag = new ArrayTag(); Stack <TokenKind> last = new Stack <TokenKind>(); for (int i = 2; i < tc.Count; ++i) { if ((tc[i].TokenKind == TokenKind.Comma && last.Count == 0) || i == (tc.Count - 1)) { end = i - 1; tmp = parser.Read(new TokenCollection(tc, begin, end)); if (tmp is ExpressionTag || tmp is SetTag) { if (tmp is SetTag) { SetTag set = (SetTag)tmp; VariableTag var = new VariableTag(); var.Name = set.Name; object val = var.Parse(parser.Context); if (val != null) { if (val is string) { tag.Set((string)val, set.Value, parser.Context); } else if (VariableTag.IsNumber(val)) { tag.Set((int)val, set.Value, parser.Context); } else { throw new ParseException(string.Concat("array key type is error:", tc), parser.Context.CurrentPath, tc.First.BeginLine, tc.First.BeginColumn); } } else { throw new ParseException(string.Concat("array key is null referer:", tc), parser.Context.CurrentPath, tc.First.BeginLine, tc.First.BeginColumn); } } else if (tmp.Children[0] is StringTag) { tag.Set(((StringTag)tmp.Children[0]).Value, tmp.Children[2], parser.Context); } else if (tmp.Children[0] is NumberTag) { tag.Set((int)((NumberTag)tmp.Children[0]).Value, tmp.Children[2], parser.Context); } else { throw new ParseException(string.Concat("array key type is error:", tc), parser.Context.CurrentPath, tc.First.BeginLine, tc.First.BeginColumn); } } else { tag.Set(pos, tmp, parser.Context); ++pos; } begin = i + 1; } else if (tc[i].TokenKind == TokenKind.StringStart) { last.Push(TokenKind.StringStart); } else if (tc[i].TokenKind == TokenKind.LeftParentheses) { last.Push(TokenKind.LeftParentheses); } else if (tc[i].TokenKind == TokenKind.StringEnd && last.Peek() == TokenKind.StringStart) { last.Pop(); } else if (tc[i].TokenKind == TokenKind.RightParentheses && last.Peek() == TokenKind.LeftParentheses) { last.Pop(); } } return(tag); } } return(null); }
public static ITag LoadTag(XmlNode xmlNode, IList <Include> includes) { ITag tag = null; bool isIn = !string.IsNullOrEmpty(xmlNode.GetValueInXmlAttributes("In")); var prepend = xmlNode.GetValueInXmlAttributes("Prepend"); var property = xmlNode.GetValueInXmlAttributes("Property"); var compareValue = xmlNode.GetValueInXmlAttributes("CompareValue"); #region Init Tag string lowerXmlNodeName = xmlNode.Name.ToLower(); switch (lowerXmlNodeName) { case "#text": case "#cdata-section": { var bodyText = " " + xmlNode.GetInnerTextInXmlAttributes(); return(new SqlText { BodyText = bodyText }); } //case "OrderBy": case "orderby": { var bodyText = " " + xmlNode.GetInnerTextInXmlAttributes(); tag = new OrderBy { ChildTags = new List <ITag>(), BodyText = bodyText }; break; } //case "Include": case "include": { var refId = xmlNode.GetValueInXmlAttributes("RefId"); var include_tag = new Include { RefId = refId }; includes.Add(include_tag); tag = include_tag; break; } //case "If": case "if": { var Test = xmlNode.GetValueInXmlAttributes("Test"); tag = new IfTag { Test = Test, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "IsEmpty": case "isempty": { tag = new IsEmpty { In = isIn, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "IsEqual": case "isequal": { tag = new IsEqual { In = isIn, Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } //case "IsGreaterEqual": case "isgreaterequal": { tag = new IsGreaterEqual { In = isIn, Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } //case "IsGreaterThan": case "isgreaterthan": { tag = new IsGreaterThan { In = isIn, Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } //case "IsLessEqual": case "islessequal": { tag = new IsLessEqual { In = isIn, Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } //case "IsLessThan": case "islessthan": { tag = new IsLessThan { In = isIn, Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } //case "IsNotEmpty": case "isnotempty": { tag = new IsNotEmpty { In = isIn, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "IsNotEqual": case "isnotequal": { tag = new IsNotEqual { In = isIn, Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } //case "IsNotNull": case "isnotnull": { tag = new IsNotNull { In = isIn, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "IsNull": case "isnull": { tag = new IsNull { In = isIn, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "IsTrue": case "istrue": { tag = new IsTrue { In = isIn, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "IsFalse": case "isfalse": { tag = new IsFalse { In = isIn, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "IsProperty": case "isproperty": { tag = new IsProperty { In = isIn, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "Switch": case "switch": { tag = new Switch { Property = property, //Prepend = prepend, ChildTags = new List <ITag>() }; break; } //case "Case": case "case": { var switchNode = xmlNode.ParentNode; var switchProperty = switchNode.GetValueInXmlAttributes("Property"); var switchPrepend = switchNode.GetValueInXmlAttributes("Prepend"); tag = new Switch.Case { CompareValue = compareValue, Property = switchProperty, Prepend = switchPrepend, ChildTags = new List <ITag>() }; break; } //case "Default": case "default": { var switchNode = xmlNode.ParentNode; var switchProperty = switchNode.GetValueInXmlAttributes("Property"); var switchPrepend = switchNode.GetValueInXmlAttributes("Prepend"); tag = new Switch.Defalut { Property = switchProperty, Prepend = switchPrepend, ChildTags = new List <ITag>() }; break; } //case "Choose": case "choose": { tag = new ChooseTag { //Property = property, //Prepend = prepend, ChildTags = new List <ITag>() }; break; } case "when": { var Test = xmlNode.GetValueInXmlAttributes("Test"); //var switchNode = xmlNode.ParentNode; //var switchProperty = switchNode.GetValueInXmlAttributes("Property"); //var switchPrepend = switchNode.GetValueInXmlAttributes("Prepend"); tag = new ChooseTag.ChooseWhenTag { Test = Test, //Property = switchProperty, //Prepend = switchPrepend, ChildTags = new List <ITag>() }; break; } case "otherwise": { //var switchNode = xmlNode.ParentNode; //var switchProperty = switchNode.GetValueInXmlAttributes("Property"); //var switchPrepend = switchNode.GetValueInXmlAttributes("Prepend"); tag = new ChooseTag.ChooseOtherwiseTag { //Property = switchProperty, //Prepend = switchPrepend, ChildTags = new List <ITag>() }; break; } case "trim": { var Prefix = xmlNode.GetValueInXmlAttributes("Prefix", "", false); var Suffix = xmlNode.GetValueInXmlAttributes("Suffix", "", false); var PrefixOverrides = xmlNode.GetValueInXmlAttributes("PrefixOverrides"); var SuffixOverrides = xmlNode.GetValueInXmlAttributes("SuffixOverrides"); tag = new TrimTag { Prefix = Prefix, Suffix = Suffix, PrefixOverrides = PrefixOverrides, SuffixOverrides = SuffixOverrides, ChildTags = new List <ITag>() }; break; } case "set": { tag = new SetTag() { ChildTags = new List <ITag>() }; break; } case "where": { tag = new WhereTag { ChildTags = new List <ITag>() }; break; } //case "Where": //case "where": // { // tag = new Where // { // ChildTags = new List<ITag>() // }; // break; // } //case "Dynamic": case "dynamic": { tag = new Dynamic { Prepend = prepend, ChildTags = new List <ITag>() }; break; } //case "Variable": case "variable": { var bodyText = xmlNode.GetInnerTextInXmlAttributes(); tag = new Variable { BodyText = bodyText, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "Bind": case "bind": { var Name = xmlNode.GetValueInXmlAttributes("Name"); var Value = xmlNode.GetValueInXmlAttributes("Value"); //var bodyText = xmlNode.GetInnerTextInXmlAttributes(); tag = new BindTag { Name = Name, Value = Value, Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } //case "Foreach": case "foreach": { var open = xmlNode.GetValueInXmlAttributes("Open"); var separator = xmlNode.GetValueInXmlAttributes("Separator"); var close = xmlNode.GetValueInXmlAttributes("Close"); var item = xmlNode.GetValueInXmlAttributes("Item"); var index = xmlNode.GetValueInXmlAttributes("Index"); tag = new Foreach { Prepend = prepend, Property = property, Open = open, Close = close, Separator = separator, Item = item, Index = index, ChildTags = new List <ITag>() }; break; } //case "Env": case "env": { var dbProvider = xmlNode.GetValueInXmlAttributes("DbProvider"); var DbType = xmlNode.GetValueInXmlAttributes("DbType"); tag = new Env { Prepend = prepend, DbProvider = dbProvider, DbType = DbType, ChildTags = new List <ITag>() }; break; } case "#comment": { break; } default: { throw new Exception(string.Format("Statement.LoadTag unkonw tagName:{0}.", xmlNode.Name)); }; } #endregion //加载组合查询条件查询 foreach (XmlNode childNode in xmlNode) { ITag childTag = LoadTag(childNode, includes); if (childTag != null && tag != null) { (tag as Tag).ChildTags.Add(childTag); } } return(tag); }