@@ -123,13 +123,13 @@ func (avp attributeValueParser) Parse(pi *parse.Input) (value string, ok bool, e
123123var (
124124 attributeValueParsers = []attributeValueParser {
125125 // Double quoted.
126- {EqualsAndQuote : parse .String (`="` ), Suffix : parse .String (`"` ), UseSingleQuote : false },
126+ {EqualsAndQuote : parse .StringFrom ( parse . OptionalWhitespace , parse . String (`="` ) ), Suffix : parse .String (`"` ), UseSingleQuote : false },
127127 // Single quoted.
128- {EqualsAndQuote : parse .String (`='` ), Suffix : parse .String (`'` ), UseSingleQuote : true },
128+ {EqualsAndQuote : parse .StringFrom ( parse . OptionalWhitespace , parse . String (`='` ) ), Suffix : parse .String (`'` ), UseSingleQuote : true },
129129 // Unquoted.
130130 // A valid unquoted attribute value in HTML is any string of text that is not an empty string,
131131 // and that doesn’t contain spaces, tabs, line feeds, form feeds, carriage returns, ", ', `, =, <, or >.
132- {EqualsAndQuote : parse .String ("=" ), Suffix : parse .Any (parse .RuneIn (" \t \n \r \" '`=<>/" ), parse .EOF [string ]()), UseSingleQuote : false },
132+ {EqualsAndQuote : parse .StringFrom ( parse . OptionalWhitespace , parse . String ("=" ) ), Suffix : parse .Any (parse .RuneIn (" \t \n \r \" '`=<>/" ), parse .EOF [string ]()), UseSingleQuote : false },
133133 }
134134 constantAttributeParser = parse .Func (func (pi * parse.Input ) (attr * ConstantAttribute , ok bool , err error ) {
135135 start := pi .Index ()
@@ -288,6 +288,8 @@ var boolExpressionAttributeParser = parse.Func(func(pi *parse.Input) (r *BoolExp
288288 return r , true , nil
289289})
290290
291+ var expressionAttributeStartParser = parse .StringFrom (parse .OptionalWhitespace , parse .String ("=" ), parse .OptionalWhitespace , parse .String ("{" ), parse .OptionalWhitespace )
292+
291293var expressionAttributeParser = parse .Func (func (pi * parse.Input ) (attr * ExpressionAttribute , ok bool , err error ) {
292294 start := pi .Index ()
293295
@@ -305,7 +307,7 @@ var expressionAttributeParser = parse.Func(func(pi *parse.Input) (attr *Expressi
305307 }
306308
307309 // ={
308- if _ , ok , err = parse . Or ( parse . String ( "={ " ), parse . String ( "={" )) .Parse (pi ); err != nil || ! ok {
310+ if _ , ok , err = expressionAttributeStartParser .Parse (pi ); err != nil || ! ok {
309311 pi .Seek (start )
310312 return
311313 }
0 commit comments