parsedHeading function

dynamic parsedHeading(
  1. dynamic question,
  2. dynamic replacementVal
)

Implementation

parsedHeading(question, replacementVal) {
  if (question['rtxt'] == null ||
      question['rtxt']['blocks'] == null ||
      question['rtxt']['blocks'][0] == null ||
      question['rtxt']['blocks'][0]['text'] == null) {
    return '';
  }

  var entityRanges = question['rtxt']['blocks'][0]['entityRanges'];
  var entityMapping = question['rtxt']['entityMap'];
  final Map<dynamic, dynamic> stringToReplace = {};

  if (entityRanges.length <= 0) {
    return question['rtxt']['blocks'][0]['text'];
  }

  var replacedString = question['rtxt']['blocks'][0]['text'];
  var extraOffset = 0;

  for (var i = 0; i < entityRanges.length; i++) {
    var currentEntity = entityRanges[i];
    var textToReplace =
        '#CHANGE_${entityMapping[currentEntity['key'].toString()]['data']['component_txt']}';
    replacedString = replacedString.replaceFirst(
        RegExp(entityMapping[currentEntity['key'].toString()]['data']
            ['component_txt']),
        textToReplace,
        currentEntity['offset'] + extraOffset);
    extraOffset += 8;
    stringToReplace[i] = {};
    stringToReplace[i]['pramKey'] =
        entityMapping[currentEntity['key'].toString()]['data']['component_txt'];
    stringToReplace[i]['regexKey'] = textToReplace;

    // entityMapping[currentEntity['key'].toString()]['data']['component_txt']['replace_txt'] = textToReplace;
  }

  for (var i = 0; i < stringToReplace.length; i++) {
    var stringToReplaceHere =
        replacementVal[stringToReplace[i]['pramKey']] ?? '';
    replacedString = replacedString.replaceAll(
        stringToReplace[i]['regexKey'], stringToReplaceHere);
  }
  return replacedString;
}