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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | 1x 1x 1x 17x 1x 20x 1x 5x 5x 14x 5x 1x 5x 5x 17x 5x | import { lexText, Token as TextToken } from "shared/lib/compiler/lexText";
import { Token as ExpressionToken } from "shared/lib/rpn/types";
import tokenizer from "shared/lib/rpn/tokenizer";
/**
* Extracts a variable ID from a dialogue token by removing any leading zeros.
* @param {TextToken} token - The token to process, expected to be of type 'variable'.
* @returns {string | undefined} - The variable ID without leading zeros, or undefined if the token is not of type 'variable'.
*/
export const dialogueTokenToVariableId = (token: TextToken) =>
token.type === "variable" ? token.variableId.replace(/^0/, "") : undefined;
/**
* Extracts a variable ID from an expression token by removing dollar signs and any leading zeros.
* @param {ExpressionToken} token - The token to process, expected to be of type 'VAR'.
* @returns {string | undefined} - The variable ID without '$' symbols or leading zeros, or undefined if the token is not of type 'VAR'.
*/
export const expressionTokenToVariableId = (token: ExpressionToken) =>
token.type === "VAR" && token.symbol.replace(/\$/g, "").replace(/^0/g, "");
/**
* Checks if a given variable ID exists in a dialogue text input.
* @param {string} variableId - The ID of the variable to search for in the text (without leading zeros).
* @param {string} input - The dialogue text input to search within.
* @returns {boolean} - True if the variable ID is found in the text, false otherwise.
*/
export const variableInDialogueText = (
variableId: string,
input: string,
): boolean => {
const textTokens = lexText(input);
const isMatch = (token: TextToken) =>
dialogueTokenToVariableId(token) === variableId;
return textTokens.some(isMatch);
};
/**
* Checks if a given variable ID exists in an expression text input.
* @param {string} variableId - The ID of the variable to search for in the expression (without leading zeros).
* @param {string} input - The expression text input to search within.
* @returns {boolean} - True if the variable ID is found in the expression, false otherwise.
*/
export const variableInExpressionText = (
variableId: string,
input: string,
): boolean => {
const expressionTokens = tokenizer(input);
const isMatch = (token: ExpressionToken) =>
expressionTokenToVariableId(token) === variableId;
return expressionTokens.some(isMatch);
};
|