Commit 4e986a82 authored by Josh Yan's avatar Josh Yan
Browse files

unquote, trimp space

parent cb42e607
......@@ -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
}
......
......@@ -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 {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment