unquote, trimp space

This commit is contained in:
Josh Yan 2024-06-27 10:59:15 -07:00
parent cb42e607c5
commit 4e986a823c
2 changed files with 33 additions and 1 deletions

View file

@ -125,6 +125,7 @@ func ParseFile(r io.Reader) (*File, error) {
// pass
case stateValue:
s, ok := unquote(b.String())
if !ok || isSpace(r) {
if _, err := b.WriteRune(r); err != nil {
return nil, err
@ -158,7 +159,13 @@ func ParseFile(r io.Reader) (*File, error) {
case stateComment, stateNil:
// pass; nothing to flush
case stateValue:
s, ok := unquote(b.String())
var s string
var ok bool
if cmd.Name == "model" {
s, ok = unquote(strings.TrimSpace(b.String()))
} else {
s, ok = unquote(b.String())
}
if !ok {
return nil, io.ErrUnexpectedEOF
}

View file

@ -48,6 +48,26 @@ func TestParseFileFrom(t *testing.T) {
expected []Command
err error
}{
{
"FROM \"FOO BAR \"",
[]Command{{Name: "model", Args: "FOO BAR "}},
nil,
},
{
"FROM \"FOO BAR\"\nPARAMETER param1 value1",
[]Command{{Name: "model", Args: "FOO BAR"}, {Name: "param1", Args: "value1"}},
nil,
},
{
"FROM FOOO BAR ",
[]Command{{Name: "model", Args: "FOOO BAR"}},
nil,
},
{
"FROM /what/is/the path ",
[]Command{{Name: "model", Args: "/what/is/the path"}},
nil,
},
{
"FROM foo",
[]Command{{Name: "model", Args: "foo"}},
@ -86,6 +106,11 @@ func TestParseFileFrom(t *testing.T) {
[]Command{{Name: "param1", Args: "value1"}, {Name: "model", Args: "foo"}},
nil,
},
{
"PARAMETER what the \nFROM lemons make lemonade ",
[]Command{{Name: "what", Args: "the "}, {Name: "model", Args: "lemons make lemonade"}},
nil,
},
}
for _, c := range cases {