RichTextNode constructor
RichTextNode({
- required String path,
- required String? comment,
- required String raw,
- required StringInterpolation interpolation,
- required CaseStyle? paramCase,
Implementation
factory RichTextNode({
required String path,
required String? comment,
required String raw,
required StringInterpolation interpolation,
required CaseStyle? paramCase,
}) {
final escapedContent = _escapeContent(raw, interpolation);
final rawParsedResult =
_parseInterpolation(escapedContent, interpolation, paramCase);
final parsedParams =
rawParsedResult.params.map(_parseParamWithArg).toList();
final params = parsedParams.map((e) => e.paramName).toSet();
final paramTypeMap = Map.fromEntries(parsedParams.map((e) => MapEntry(
e.paramName, e.arg != null ? 'InlineSpanBuilder' : 'InlineSpan')));
final spans = _splitWithMatchAndNonMatch(
rawParsedResult.parsedContent,
RegexUtils.argumentsDartRegex,
onNonMatch: (text) => LiteralSpan(text),
onMatch: (match) {
final parsed = _parseParamWithArg((match.group(3) ?? match.group(4))!);
final parsedArg = parsed.arg;
if (parsedArg != null) return FunctionSpan(parsed.paramName, parsedArg);
return VariableSpan(parsed.paramName);
},
).toList();
return RichTextNode._(
path: path,
comment: comment,
raw: raw,
spans: spans,
params: params,
paramTypeMap: paramTypeMap,
);
}