All files / src/shared/lib/variables variableNames.ts

100% Statements 49/49
100% Branches 23/23
100% Functions 10/10
100% Lines 39/39

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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107                  14x       32x 32x 4x   28x     28x     14x 63x             14x         32x         14x 63x             14x 12x     14x 22x             14x       4098x     14x 4151x     14x 4099x             14x 10x 10x 2x 2x     8x 8x 2x 2x     6x 6x 2x 2x     4x 4x 3x     1x    
import type { ScriptNormalized } from "shared/lib/entities/entitiesTypes";
import { Variable } from "shared/lib/resources/types";
 
type VariablesLookup = { [name: string]: Variable | undefined };
 
/******************************************************************************
 * Custom Event Variables
 */
 
export const customEventVariableName = (
  variable: string,
  customEvent: ScriptNormalized,
): string => {
  const customEventVariable = customEvent.variables[`V${variable}`];
  if (customEventVariable) {
    return customEventVariable.name;
  }
  const letter = String.fromCharCode(
    "A".charCodeAt(0) + parseInt(variable, 10),
  );
  return `Variable ${letter}`;
};
 
export const customEventVariableCode = (variable: string) => {
  return `V${variable}`;
};
 
/******************************************************************************
 * Local Variables
 */
 
export const localVariableName = (
  variable: string,
  entityId: string,
  variablesLookup: VariablesLookup,
) => {
  return (
    variablesLookup[`${entityId}__L${variable}`]?.name || `Local ${variable}`
  );
};
 
export const localVariableCode = (variable: string) => {
  return `L${variable}`;
};
 
/******************************************************************************
 * Temp Variables
 */
 
export const tempVariableName = (variable: string) => {
  return `Temp ${variable}`;
};
 
export const tempVariableCode = (variable: string) => {
  return `T${variable}`;
};
 
/******************************************************************************
 * Global Variables
 */
 
export const globalVariableName = (
  variable: string,
  variablesLookup: VariablesLookup,
) => {
  return variablesLookup[variable]?.name || globalVariableDefaultName(variable);
};
 
export const globalVariableDefaultName = (variable: string) => {
  return `Variable ${variable}`;
};
 
export const globalVariableCode = (variable: string) => {
  return variable.padStart(2, "0");
};
 
/******************************************************************************
 * Next Variable ID
 */
 
export const getNextVariableId = (variable: string): string => {
  const localMatch = variable.match(/^L([0-5])$/);
  if (localMatch) {
    const nextNumber = Number(localMatch[1]) + 1;
    return nextNumber > 5 ? "0" : `L${nextNumber}`;
  }
 
  const argsMatch = variable.match(/^V([0-9])$/);
  if (argsMatch) {
    const nextNumber = Number(argsMatch[1]) + 1;
    return nextNumber > 9 ? "0" : `V${nextNumber}`;
  }
 
  const tempMatch = variable.match(/^T([0-1])$/);
  if (tempMatch) {
    const nextNumber = Number(tempMatch[1]) + 1;
    return nextNumber > 1 ? "0" : `T${nextNumber}`;
  }
 
  const numberMatch = variable.match(/^\d+$/);
  if (numberMatch) {
    return String(Number(variable) + 1);
  }
 
  return "0";
};