@adguard/agtree
Version:
Tool set for working with adblock filter lists
43 lines (40 loc) • 1.55 kB
JavaScript
/*
* AGTree v4.1.1 (build date: Thu, 23 Apr 2026 09:15:37 GMT)
* (c) 2026 Adguard Software Ltd.
* Released under the MIT license
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
*/
import { SPACE, CLOSE_SQUARE_BRACKET, EMPTY, OPEN_SQUARE_BRACKET } from '../../../utils/constants.js';
import { QuoteUtils, QuoteType } from '../../../utils/quotes.js';
import { BaseGenerator } from '../../base-generator.js';
import { ValueGenerator } from '../../misc/value-generator.js';
/**
* Attribute selector generator.
*/
class AttributeSelectorGenerator extends BaseGenerator {
/**
* Generates a string representation of the attribute selector.
*
* @param node Attribute selector node.
*
* @returns String representation of the attribute selector.
*/
static generate(node) {
const result = [];
result.push(OPEN_SQUARE_BRACKET);
result.push(ValueGenerator.generate(node.name));
if ('value' in node) {
result.push(ValueGenerator.generate(node.operator));
const generatedValue = ValueGenerator.generate(node.value);
const quotedValue = QuoteUtils.setStringQuoteType(generatedValue, QuoteType.Double);
result.push(quotedValue);
if (node.flag) {
result.push(SPACE);
result.push(ValueGenerator.generate(node.flag));
}
}
result.push(CLOSE_SQUARE_BRACKET);
return result.join(EMPTY);
}
}
export { AttributeSelectorGenerator };