RichTextNode constructor
RichTextNode({})
Implementation
RichTextNode({
required super.path,
required super.raw,
required super.comment,
required super.interpolation,
required super.paramCase,
Map<String, Set<String>>? linkParamMap,
}) {
final rawParsedResult = _parseInterpolation(
raw: _escapeContent(raw, interpolation),
interpolation: interpolation,
paramCase: null, // param case will be applied later
);
final parsedParams = rawParsedResult.params
.map((p) => _parseParamWithArg(input: p, paramCase: paramCase))
.toList();
_params = parsedParams.map((e) => e.paramName).toSet();
if (linkParamMap != null) {
_params.addAll(linkParamMap.values.expand((e) => e));
}
_paramTypeMap = {
for (final p in parsedParams)
p.paramName: (p.arg != null ? 'InlineSpanBuilder' : 'InlineSpan'),
};
_links = {};
_spans = _splitWithMatchAndNonMatch(
rawParsedResult.parsedContent,
RegexUtils.argumentsDartRegex,
onNonMatch: (text) {
final parsedLinksResult = _parseLinks(
input: text,
linkParamMap: linkParamMap,
);
_links.addAll(parsedLinksResult.links);
return LiteralSpan(
literal: parsedLinksResult.parsedContent,
isConstant: parsedLinksResult.links.isEmpty,
);
},
onMatch: (match) {
final parsed = _parseParamWithArg(
input: (match.group(1) ?? match.group(2))!,
paramCase: paramCase,
);
final parsedArg = parsed.arg;
if (parsedArg != null) return FunctionSpan(parsed.paramName, parsedArg);
return VariableSpan(parsed.paramName);
},
).toList();
}