示例#1
0
        public IfBlocks BlockFor(string snippet, int line = 0)
        {
            var match = _grammar.Match(snippet);

            var ifEvalMatch = match["ifBlock"]["if"];
            var ifEval = ifEvalMatch.Value;

            var ifBlockMatch = match["ifBlock"]["block"];
            var ifBlock = ifBlockMatch.Value;

            var elseIfMatch = match["elseif"]["if"];
            var elseIf = elseIfMatch.Value;

            var elseIfBlockMatch = match["elseif"]["block"];
            var elseIfBlock = elseIfBlockMatch.Value;

            var elseBlockMatch = match["else"]["block"];
            var elseBlock = elseBlockMatch.Value;

            var blocks = new IfBlocks();

            ifEval.IfNotNull(v => blocks.IfEval = v.ToString());
            if(ifEvalMatch.Success) {
                blocks.IfEvalLineNumber = LineFromPos(snippet, ifEvalMatch.Index) + line;
            }

            ifBlock.IfNotNull(v => blocks.IfBlock = v.ToString());
            if(ifBlockMatch.Success) {
                blocks.IfBlockLineNumber = LineFromPos(snippet, ifBlockMatch.Index) + line;
            }

            elseIf.IfNotNull(v => blocks.ElseIf = v.ToString());
            if(elseIfMatch.Success) {
                blocks.ElseIfLineNumber = LineFromPos(snippet, elseIfMatch.Index) + line;
            }

            elseIfBlock.IfNotNull(v => blocks.ElseIfBlock = v.ToString());
            if(elseIfBlockMatch.Success) {
                blocks.ElseIfBlockLineNumber = LineFromPos(snippet, elseIfBlockMatch.Index) + line;
            }

            elseBlock.IfNotNull(v => blocks.ElseBlock = v.ToString());
            if(elseBlockMatch.Success) {
                blocks.ElseBlockLineNumber = LineFromPos(snippet, elseBlockMatch.Index) + line;
            }

            return blocks;
        }
示例#2
0
 public void SetUp()
 {
     theBlocks = new IfBlocks();
 }