/** * @file Utility functions for working with quotes. */ /** * Set of all possible quote characters supported by the library. */ export declare const QUOTE_SET: Set; /** * Possible quote types for scriptlet parameters. */ export declare const QuoteType: { /** * No quotes at all. */ readonly None: "none"; /** * Single quotes (`'`). */ readonly Single: "single"; /** * Double quotes (`"`). */ readonly Double: "double"; /** * Backtick quotes (`` ` ``). */ readonly Backtick: "backtick"; }; export type QuoteType = typeof QuoteType[keyof typeof QuoteType]; /** * Utility functions for working with quotes. */ export declare class QuoteUtils { /** * Escape all unescaped occurrences of the character. * * @param string String to escape. * @param char Character to escape. * * @returns Escaped string. */ static escapeUnescapedOccurrences(string: string, char: string): string; /** * Unescape all single escaped occurrences of the character. * * @param string String to unescape. * @param char Character to unescape. * * @returns Unescaped string. */ static unescapeSingleEscapedOccurrences(string: string, char: string): string; /** * Get quote type of the string. * * @param string String to check. * * @returns Quote type of the string. */ static getStringQuoteType(string: string): QuoteType; /** * Set quote type of the string. * * @param string String to set quote type of. * @param quoteType Quote type to set. * * @returns String with the specified quote type. */ static setStringQuoteType(string: string, quoteType: QuoteType): string; /** * Removes bounding quotes from a string, if any. * * @param string Input string. * * @returns String without quotes. */ static removeQuotes(string: string): string; /** * Removes bounding quotes from a string, if any, and unescapes the escaped quotes, * like transforming `'abc\'def'` to `abc'def`. * * @param string Input string. * * @returns String without quotes. */ static removeQuotesAndUnescape(string: string): string; /** * Wraps given `strings` with `quote` (defaults to single quote `'`) * and joins them with `separator` (defaults to comma+space `, `). * * @param strings Strings to quote and join. * @param quoteType Quote to use. * @param separator Separator to use. * * @returns String with joined items. * * @example * ['abc', 'def']: strings[] -> "'abc', 'def'": string */ static quoteAndJoinStrings(strings: string[], quoteType?: QuoteType, separator?: string): string; /** * Convert `""` to `\"` within strings inside of attribute selectors, * because it is not compatible with the standard CSS syntax. * * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#tag-content} * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#wildcard} * * @param selector CSS selector string. * * @returns Escaped CSS selector. * * @example * ```ts * QuoteUtils.escapeAttributeDoubleQuotes('[attr="value with "" quotes"]'); * QuoteUtils.escapeAttributeDoubleQuotes('div[attr="value with "" quotes"] > span'); * ``` * * @note In the legacy syntax, `""` is used to escape double quotes, but it cannot be used * in the standard CSS syntax, so we use conversion functions to handle this. * @note This function is intended to be used on whole attribute selector or whole selector strings. */ static escapeAttributeDoubleQuotes(selector: string): string; /** * Convert escaped double quotes `\"` to `""` within strings inside of attribute selectors, * because it is not compatible with the standard CSS syntax. * * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#tag-content} * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#wildcard} * * @param selector CSS selector string. * * @returns Unescaped CSS selector. * * @example * ```ts * QuoteUtils.unescapeAttributeDoubleQuotes('[attr="value with \\" quotes"]'); * QuoteUtils.unescapeAttributeDoubleQuotes('div[attr="value with \\" quotes"] > span'); * ``` * * @note In the legacy syntax, `""` is used to escape double quotes, but it cannot be used * in the standard CSS syntax, so we use conversion functions to handle this. * @note This function is intended to be used on whole attribute selector or whole selector strings. */ static unescapeAttributeDoubleQuotes(selector: string): string; }