(input: string, ruleCallback: (rule: CssRule) => CssRule)
| 1041 | } |
| 1042 | |
| 1043 | export function processRules(input: string, ruleCallback: (rule: CssRule) => CssRule): string { |
| 1044 | const escaped = escapeInStrings(input); |
| 1045 | const inputWithEscapedBlocks = escapeBlocks(escaped, CONTENT_PAIRS, BLOCK_PLACEHOLDER); |
| 1046 | let nextBlockIndex = 0; |
| 1047 | const escapedResult = inputWithEscapedBlocks.escapedString.replace(_ruleRe, (...m: string[]) => { |
| 1048 | const selector = m[2]; |
| 1049 | let content = ''; |
| 1050 | let suffix = m[4]; |
| 1051 | let contentPrefix = ''; |
| 1052 | if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) { |
| 1053 | content = inputWithEscapedBlocks.blocks[nextBlockIndex++]; |
| 1054 | suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1); |
| 1055 | contentPrefix = '{'; |
| 1056 | } |
| 1057 | const rule = ruleCallback(new CssRule(selector, content)); |
| 1058 | return `${m[1]}${rule.selector}${m[3]}${contentPrefix}${rule.content}${suffix}`; |
| 1059 | }); |
| 1060 | return unescapeInStrings(escapedResult); |
| 1061 | } |
| 1062 | |
| 1063 | class StringWithEscapedBlocks { |
| 1064 | constructor( |
no test coverage detected
searching dependent graphs…