export function interpolateExpression()

in scripts/dashboard-importer/src/dashboards/converter/template_variables/templating.ts [60:83]


export function interpolateExpression(
  expr: string,
  templateVariableMap: Map<string, string>,
): Result<string> {
  let interpolatedExpr = expr;

  // Interpolate global variables and unsupported properties
  for (const [key, value] of GLOBAL_VARIABLE_MAP) {
    interpolatedExpr = interpolatedExpr.replaceAll(key, value);
  }

  // Interpolate template variables
  for (const [key, value] of templateVariableMap) {
    interpolatedExpr = interpolatedExpr.replaceAll(key, value);
  }

  // Post Processing
  // Handle edge case of interval variables being used to denote resolution
  interpolatedExpr = interpolatedExpr.replaceAll(
    `[$\{__interval}:$\{__interval}]`,
    `[$\{__interval}]`,
  );
  return success(interpolatedExpr);
}