public void GivenTagName_SystemTag_ShouldSurroundNameWithTags()
        {
            var tag = new SystemTag("SomeName");

            Assert.IsNotNull(tag);
            Assert.AreEqual("<SomeName>", tag.StartTag);
            Assert.AreEqual("</SomeName>", tag.EndTag);
        }
Ejemplo n.º 2
0
        private void Apply(SystemTagAdded e)
        {
            var systemTag = new SystemTag(e.Name, e.AppliesToExpenses, e.AppliesToTimesheets);
            var newList   = SystemTags.ToList();

            newList.Add(systemTag);
            SystemTags = new ReadOnlyCollection <SystemTag>(newList);
        }
Ejemplo n.º 3
0
 /// <summary>Creates a SystemTag for the given input data.</summary>
 /// <param name="dat">The tag data.</param>
 /// <param name="input">The text input.</param>
 /// <returns>A valid SystemTag.</returns>
 public static SystemTag CreateFor(TemplateObject input, TagData dat)
 {
     return(input switch
     {
         SystemTag stag => stag,
         DynamicTag dtag => CreateFor(dtag.Internal, dat),
         _ => For(dat, input.ToString()),
     });
        /// <summary>
        /// Fill a combobox with the tags for a category, and optionally select a specified tag
        /// If nullEntryName is non-empty, then a NULL tag will be added
        /// </summary>
        public static void Fill(this ComboBox value, string categoryName, int selectTag, string nullEntryName)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value), Resources.NullParameterErrorMessage);
            }
            if (string.IsNullOrEmpty(categoryName))
            {
                throw new ArgumentNullException(nameof(categoryName), Resources.NullParameterErrorMessage);
            }
            if (nullEntryName == null)
            {
                throw new ArgumentNullException(nameof(nullEntryName), Resources.NullParameterErrorMessage);
            }

            value.BeginUpdate();
            value.Items.Clear();

            if (nullEntryName.Length > 0)
            {
                var sysTag = new SystemTag(0, nullEntryName);
                var index  = value.Items.Add(sysTag);
                if (sysTag.Id == selectTag)
                {
                    value.SelectedIndex = index;
                }
            }

            var categoryTags = SystemTags.GetTagSet(categoryName);

            foreach (var sysTag in categoryTags.Tags.Values)
            {
                var index = value.Items.Add(sysTag);
                if (sysTag.Id == selectTag)
                {
                    value.SelectedIndex = index;
                }
            }

            if (value.SelectedIndex == -1 && value.Items.Count > 0)
            {
                value.SelectedIndex = 0;
            }

            value.EndUpdate();
        }
Ejemplo n.º 5
0
        /// <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());
            }
        }