示例#1
0
        /// <summary>
        /// Extract placeholders from the given template.
        /// </summary>
        /// <param name="template">the template to parse.</param>
        /// <returns>placeholders extracted from the template.</returns>
        public static IList <AckEmailPlaceholder> GetPlaceholders(string template)
        {
            var regex        = new Regex(_pattern);
            var matches      = regex.Matches(template);
            var placeholders = new List <AckEmailPlaceholder>(matches.Count);

            foreach (Match match in matches)
            {
                var text         = match.Groups[0].Value;
                var field        = match.Groups[1].Value;
                var defaultValue = match.Groups[3].Value;
                var placeholder  = new AckEmailPlaceholder(text, field, defaultValue);
                placeholders.Add(placeholder);
            }

            return(placeholders);
        }
示例#2
0
        /// <summary>
        /// Produce text content by applying replacements on the template.
        /// </summary>
        /// <param name="workItemFields">work item for which the content is generated</param>
        /// <param name="config">the instance config</param>
        /// <returns>text content produced by applying replacements for placeholders</returns>
        public string Apply(IWorkItemFields workItemFields, Config.InstanceConfig config)
        {
            var bodyBuilder         = new StringBuilder(_text);
            var placeholders        = AckEmailPlaceholder.GetPlaceholders(_text);
            var specialReplacements = GetSpecialReplacements(workItemFields, config);

            foreach (var placeholder in placeholders)
            {
                var fieldNameUpper = placeholder.Field.ToUpper();
                var fieldValue     = specialReplacements.ContainsKey(fieldNameUpper)
                    ? specialReplacements[fieldNameUpper]
                    : workItemFields.GetFieldValue(placeholder.Field);
                var value = string.IsNullOrWhiteSpace(fieldValue) ? placeholder.DefaultValue : fieldValue;
                Logger.DebugFormat("Replacing placeholder {0} with value '{1}'", placeholder.Text, value);
                bodyBuilder.Replace(placeholder.Text, value);
            }

            return(bodyBuilder.ToString());
        }