Example #1
0
        public static void InsertCode <T>(this ICodeBuilder codeBuilder, string code, Tag <T> tag, T conceptInfo)
            where T : IConceptInfo
        {
            string code1 = code;
            string code2 = code;

            if (!string.IsNullOrEmpty(tag.FirstEvaluationContext))
            {
                code1 = string.Format(CultureInfo.InvariantCulture, tag.FirstEvaluationContext, code);
            }
            if (!string.IsNullOrEmpty(tag.NextEvaluationContext))
            {
                code2 = string.Format(CultureInfo.InvariantCulture, tag.NextEvaluationContext, code);
            }

            var    conceptInfoKeyProperties = conceptInfo.GetKeyProperties();
            string tagPattern = string.Format(CultureInfo.InvariantCulture, tag.Format, conceptInfoKeyProperties);

            if (tag.TagType == TagType.Single)
            {
                codeBuilder.ReplaceCode(code1, tagPattern);
            }
            else if (tag.NextFormat == null)
            {
                codeBuilder.InsertCode(code1, tagPattern, tag.TagType == TagType.Reverse);
            }
            else
            {
                string nextTagPattern = string.Format(CultureInfo.InvariantCulture, tag.NextFormat, conceptInfoKeyProperties);
                codeBuilder.InsertCode(code1, code2, tagPattern, nextTagPattern, tag.TagType == TagType.Reverse);
            }
        }