private ConditionExpression ParseLiteralExpression() { if (_tokenizer.IsToken(ConditionTokenType.LeftParen)) { _tokenizer.GetNextToken(); ConditionExpression e = ParseExpression(); _tokenizer.Expect(ConditionTokenType.RightParen); return(e); } if (_tokenizer.IsToken(ConditionTokenType.Minus)) { _tokenizer.GetNextToken(); if (!_tokenizer.IsNumber()) { throw new ConditionParseException($"Number expected, got {_tokenizer.TokenType}"); } return(ParseNumber(true)); } if (_tokenizer.IsNumber()) { return(ParseNumber(false)); } if (_tokenizer.TokenType == ConditionTokenType.String) { var simpleLayout = new SimpleLayout(_tokenizer.StringTokenValue, _configurationItemFactory); _tokenizer.GetNextToken(); if (simpleLayout.IsFixedText) { return(new ConditionLiteralExpression(simpleLayout.FixedText, simpleLayout.ToString())); } else { return(new ConditionLayoutExpression(simpleLayout)); } } if (_tokenizer.TokenType == ConditionTokenType.Keyword) { string keyword = _tokenizer.EatKeyword(); if (TryPlainKeywordToExpression(keyword, out var expression)) { return(expression); } if (_tokenizer.TokenType == ConditionTokenType.LeftParen) { _tokenizer.GetNextToken(); ConditionMethodExpression predicateExpression = ParsePredicate(keyword); return(predicateExpression); } } throw new ConditionParseException("Unexpected token: " + _tokenizer.TokenValue); }
public void SimpleLayoutToStringTest() { var l = new SimpleLayout("xx${level}yy"); Assert.Equal("'xx${level}yy'", l.ToString()); var l2 = new SimpleLayout(new LayoutRenderer[0], "someFakeText", ConfigurationItemFactory.Default); Assert.Equal("'someFakeText'", l2.ToString()); }
/// <summary> /// Returns a string representation of this expression. /// </summary> /// <returns>String literal in single quotes.</returns> public override string ToString() { return(_simpleLayout.ToString()); }
/// <summary> /// Returns a string representation of this expression. /// </summary> /// <returns>String literal in single quotes.</returns> public override string ToString() { return($"'{_simpleLayout.ToString()}'"); }