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; }
public void SetUp() { theBlocks = new IfBlocks(); }