Example #1
0
        /// <summary>
        /// Creates a new instance of the IfBlock class.
        /// </summary>
        /// <param name="raw">Raw string.</param>
        public IfBlock(string raw)
        {
            ConcreteForm = RegExHelper.TrimUntilChar(RegExHelper.ClearStringFormatting(raw), '$') + "}";
            var subBlocks  = RegExHelper.GetContainedString(raw, ">", "<");
            var innerBlock = RegExHelper.GetContainedString(raw, "<#if", ">")[0].Value;


            var rawAction = subBlocks[0].Value;

            if (subBlocks.Count > 1)
            {
                elseAction = new TemplateModel(subBlocks[1].Value);
            }

            action = new TemplateModel(rawAction);

            innerBlock = innerBlock.Replace(" ", string.Empty);

            if (innerBlock.Contains("&&"))
            {
                optr = "&&";
            }
            else if (innerBlock.Contains("||"))
            {
                optr = "||";
            }

            if (string.IsNullOrEmpty(optr))
            {
                conditions = new[] { new IfCondition(innerBlock) };
            }
            else
            {
                var rawConditions = innerBlock.Split(new[] { "||" }, StringSplitOptions.RemoveEmptyEntries);
                var condList      = new List <IfCondition>();

                foreach (var c in rawConditions)
                {
                    condList.Add(new IfCondition(c));
                }

                conditions = condList.ToArray();
            }
        }