expandMacros method

String expandMacros(
  1. String origSQL
)

Implementation

String expandMacros(String origSQL) {
  var result = origSQL;
  if (!macroCheck) return result;
  // Terminators = SQLDelimiterCharacters + [#0,'=','+','-','*','\','/','[',']','|']
  final termArr = <String>{
    ...sqlDelimiterCharacters,
    "=", "+", "-", "*", "\\", "/", "[", "]", "|",
    macroChar,
  };
  result = '';
  var macroFlag = false;
  var tempMacroName = '';

  void substituteMacro() {
    final param = macros.findParam(tempMacroName);
    if (param != null) {
      result = result + param.asString;
    } else {
      result = '$result$macroChar$tempMacroName';
    }
    tempMacroName = '';
  }

  for (var i = 0; i < origSQL.length; i++) {
    final ch = origSQL[i];
    if (!macroFlag && ch == macroChar) {
      macroFlag = true;
      tempMacroName = '';
    } else if (macroFlag) {
      if (!termArr.contains(ch)) {
        tempMacroName = tempMacroName + ch;
      } else {
        substituteMacro();
        if (ch != macroChar) {
          macroFlag = false;
        }
        tempMacroName = '';
      }
    }
    if (!macroFlag) {
      result = result + ch;
    }
  }
  if (tempMacroName != '') {
    substituteMacro();
  }
  return result;
}