Exemplo n.º 1
0
        public TagMarkupBase ParseTag(string markup, int lineNumber, int charPos)
        {
            IfTagMarkup tagMarkup = null;
            ExpressionMarkup expressionMarkup = null;

            Match m = IfTagParserRegex.Match(markup);
            if (m.Success) {

                string tag = m.Groups["Tag"].Success ? m.Groups["Tag"].Value.Trim(): null;
                if (string.IsNullOrEmpty(tag))
                    throw new ImpressionParseException("Unsupported Tag Found", markup, lineNumber, charPos);

                string expression = m.Groups["Expression"].Success ? m.Groups["Expression"].Value.Trim() : null;
                if (!string.IsNullOrEmpty(expression))
                {
                    expressionMarkup = new ExpressionMarkup(reflector, filterRunner, expression, lineNumber, charPos);
                }

                switch(tag.ToLower())
                {
                    case "if":
                        if (expressionMarkup == null)
                            throw new ImpressionParseException("IF Tag detected without expression", markup, lineNumber, charPos);

                        tagMarkup = new IfTagMarkup(
                            IfTagType.If,
                            expressionMarkup,
                            markup,
                            lineNumber,
                            charPos
                        );

                        break;

                    case "elseif":
                        if (expressionMarkup == null)
                            throw new ImpressionParseException("ELSEIF Tag detected without expression", markup, lineNumber, charPos);

                        tagMarkup = new IfTagMarkup(
                            IfTagType.ElseIf,
                            expressionMarkup,
                            markup,
                            lineNumber,
                            charPos
                        );

                        break;

                    case "else":
                        tagMarkup = new IfTagMarkup(
                            IfTagType.Else,
                            null,
                            markup,
                            lineNumber,
                            charPos
                        );
                        break;

                    case "endif":
                        tagMarkup = new IfTagMarkup(
                            IfTagType.EndIf,
                            null,
                            markup,
                            lineNumber,
                            charPos
                        );
                        break;
                }
            }

            if (tagMarkup == null)
                throw new ImpressionParseException("Unsupported Tag Found", markup, lineNumber, charPos);

            return tagMarkup;
        }
Exemplo n.º 2
0
        public TagMarkupBase ParseTag(string markup, int lineNumber, int charPos)
        {
            IfTagMarkup      tagMarkup        = null;
            ExpressionMarkup expressionMarkup = null;

            Match m = IfTagParserRegex.Match(markup);

            if (m.Success)
            {
                string tag = m.Groups["Tag"].Success ? m.Groups["Tag"].Value.Trim(): null;
                if (string.IsNullOrEmpty(tag))
                {
                    throw new ImpressionParseException("Unsupported Tag Found", markup, lineNumber, charPos);
                }

                string expression = m.Groups["Expression"].Success ? m.Groups["Expression"].Value.Trim() : null;
                if (!string.IsNullOrEmpty(expression))
                {
                    expressionMarkup = new ExpressionMarkup(reflector, filterRunner, expression, lineNumber, charPos);
                }

                switch (tag.ToLower())
                {
                case "if":
                    if (expressionMarkup == null)
                    {
                        throw new ImpressionParseException("IF Tag detected without expression", markup, lineNumber, charPos);
                    }

                    tagMarkup = new IfTagMarkup(
                        IfTagType.If,
                        expressionMarkup,
                        markup,
                        lineNumber,
                        charPos
                        );

                    break;

                case "elseif":
                    if (expressionMarkup == null)
                    {
                        throw new ImpressionParseException("ELSEIF Tag detected without expression", markup, lineNumber, charPos);
                    }

                    tagMarkup = new IfTagMarkup(
                        IfTagType.ElseIf,
                        expressionMarkup,
                        markup,
                        lineNumber,
                        charPos
                        );

                    break;

                case "else":
                    tagMarkup = new IfTagMarkup(
                        IfTagType.Else,
                        null,
                        markup,
                        lineNumber,
                        charPos
                        );
                    break;

                case "endif":
                    tagMarkup = new IfTagMarkup(
                        IfTagType.EndIf,
                        null,
                        markup,
                        lineNumber,
                        charPos
                        );
                    break;
                }
            }

            if (tagMarkup == null)
            {
                throw new ImpressionParseException("Unsupported Tag Found", markup, lineNumber, charPos);
            }

            return(tagMarkup);
        }