Fixed parsing of newline character in string expression #1430

This commit is contained in:
Mike Farah 2022-11-14 16:40:41 +11:00
parent 1fd96e168e
commit e02bb71948
3 changed files with 26 additions and 0 deletions

View File

@ -352,8 +352,12 @@ func nullValue() yqAction {
func stringValue() yqAction {
return func(rawToken lexer.Token) (*token, error) {
log.Debug("rawTokenvalue: %v", rawToken.Value)
value := unwrap(rawToken.Value)
log.Debug("unwrapped: %v", value)
value = strings.ReplaceAll(value, "\\\"", "\"")
value = strings.ReplaceAll(value, "\\n", "\n")
log.Debug("replaced: %v", value)
return &token{TokenType: operationToken, Operation: createValueOperation(value, value)}, nil
}
}

View File

@ -620,6 +620,27 @@ var participleLexerScenarios = []participleLexerScenario{
},
},
},
{
expression: `"string with a\n"`,
tokens: []*token{
{
TokenType: operationToken,
Operation: &Operation{
OperationType: valueOpType,
Value: "string with a\n",
StringValue: "string with a\n",
Preferences: nil,
CandidateNode: &CandidateNode{
Node: &yaml.Node{
Kind: yaml.ScalarNode,
Tag: "!!str",
Value: "string with a\n",
},
},
},
},
},
},
{
expression: `"string with a \""`,
tokens: []*token{

View File

@ -432,6 +432,7 @@ func split(value string, spltStr string) *yaml.Node {
var contents []*yaml.Node
if value != "" {
log.Debug("going to spltStr[%v]", spltStr)
var newStrings = strings.Split(value, spltStr)
contents = make([]*yaml.Node, len(newStrings))