Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 2x 2x 2x 2x 2x 2x 2x 2x 730x 730x 402x 730x 292x 292x 328x 36x 36x 730x 2x 2x 2x 2x 2x 2x 265x 265x 265x 119x 265x 146x 146x 265x 265x 229x 229x | /** @import { Text, ExpressionTag } from '#compiler' */
/** @import { Node } from 'estree' */
const UNKNOWN = {};
/**
* @param {Node} node
* @param {Set<any>} set
*/
function gather_possible_values(node, set) {
if (node.type === 'Literal') {
set.add(String(node.value));
} else if (node.type === 'ConditionalExpression') {
gather_possible_values(node.consequent, set);
gather_possible_values(node.alternate, set);
} else {
set.add(UNKNOWN);
}
}
/**
* @param {Text | ExpressionTag} chunk
* @returns {Set<string> | null}
*/
export function get_possible_values(chunk) {
const values = new Set();
if (chunk.type === 'Text') {
values.add(chunk.data);
} else {
gather_possible_values(chunk.expression, values);
}
if (values.has(UNKNOWN)) return null;
return values;
}
|