StringTextNode constructor

StringTextNode({
  1. required String path,
  2. required String raw,
  3. required String? comment,
  4. required StringInterpolation interpolation,
  5. CaseStyle? paramCase,
  6. Map<String, Set<String>>? linkParamMap,
})

Implementation

StringTextNode({
  required super.path,
  required super.raw,
  required super.comment,
  required this.interpolation,
  this.paramCase,
  Map<String, Set<String>>? linkParamMap,
}) {
  final escapedContent = _escapeContent(raw, interpolation);
  final parsedResult =
      _parseInterpolation(escapedContent, interpolation, paramCase);
  _params = parsedResult.params;

  // detect linked translations
  this._links = Set<String>();
  this._content = parsedResult.parsedContent
      .replaceAllMapped(RegexUtils.linkedRegex, (match) {
    final linkedPath = match.group(1)!;
    links.add(linkedPath);

    if (linkParamMap == null) {
      // assume no parameters
      return '\${_root.$linkedPath}';
    }

    final linkedParams = linkParamMap[linkedPath]!;
    params.addAll(linkedParams);
    final parameterString =
        linkedParams.map((param) => '$param: $param').join(', ');
    return '\${_root.$linkedPath($parameterString)}';
  });
}