/**
 * For given ASCII code, returns character that is safe to insert into code.
 *
 * This is useful for self-modifying programs that may insert non-printable characters into
 * the source code at runtime. Characters like `\n`, `\r` and `Tab` distort the grid visually
 * in the code editor. This function replaces such characters with safely printable alts. Other
 * control characters will be safely rendered by the code editor.
 *
 * @param asciiVal ASCII value to get safe character for
 * @returns Character safe to print without distorting code
 */
export const toSafePrintableChar = (asciiVal: number): string => {
  // "\n" -> "⤶"
  if (asciiVal === 10) return "\u21b5";
  // "\r" -> "␍"
  else if (asciiVal === 13) return "\u240d";
  // Tab -> "⇆"
  else if (asciiVal === 9) return "\u21c6";
  else return String.fromCharCode(asciiVal);
};