From 7379bafb23b4ca330d93e7894bfe38e33d1f55d9 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Wed, 28 Sep 2022 08:34:39 -0400 Subject: [PATCH] Fix serializing of unquoted attribute values Related commit: - https://github.com/uBlockOrigin/uBlock-issues/issues/2300 --- src/js/static-filtering-parser.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/js/static-filtering-parser.js b/src/js/static-filtering-parser.js index ffa3a8492..445cc09bb 100644 --- a/src/js/static-filtering-parser.js +++ b/src/js/static-filtering-parser.js @@ -1570,18 +1570,23 @@ Parser.prototype.SelectorCompiler = class { } } + // https://github.com/uBlockOrigin/uBlock-issues/issues/2300 + // Unquoted atrtibute values are parsed as Identifier instead of String. astSerialize(parts) { const out = []; for ( const part of parts ) { const { data } = part; switch ( data.type ) { - case 'AttributeSelector': + case 'AttributeSelector': { + const name = data.name.name; + const value = data.value.value || data.value.name; out.push( data.matcher - ? `[${data.name.name}${data.matcher}"${data.value.value}"]` - : `[${data.name.name}]` + ? `[${name}${data.matcher}"${value}"]` + : `[${name}]` ); break; + } case 'ClassSelector': out.push(`.${data.name}`); break;