prepareReplacement function
Prepare replacement string by substituting page context variables
Replaces page context variables in the replacement string with actual values from the page URL. Useful for converting relative URLs to absolute URLs.
Parameters
node- PageNode containing page data and URLreplacement- Replacement string potentially containing context variables
Supported Variables
- ${pageUrl} - Full page URL (e.g.,
https://example.com/page?q=1) - ${rootUrl} - Origin only (e.g.,
https://example.com)
Returns
Replacement string with context variables substituted. If URL parsing fails, variables are left unchanged.
Examples
// Assuming page URL is 'https://example.com/page'
prepareReplacement(node, 'Visit ${pageUrl}');
// Returns: 'Visit https://example.com/page'
prepareReplacement(node, '${rootUrl}/api/data');
// Returns: 'https://example.com/api/data'
prepareReplacement(node, 'No variables here');
// Returns: 'No variables here'
Use Cases
Convert Relative to Absolute URLs
applyRegexpTransform(node, '/images/photo.jpg', r'/^//${rootUrl}/');
// Returns: 'https://example.com/images/photo.jpg'
Add Page Reference
applyRegexpTransform(node, 'Link', r'/Link/Link (from ${pageUrl})/');
// Returns: 'Link (from https://example.com/page)'
Implementation
String prepareReplacement(PageNode node, String replacement) {
var result = replacement;
try {
final pageUri = Uri.parse(node.pageData.url);
// Replace pageUrl with full URL
result = result.replaceAll(r'${pageUrl}', node.pageData.url);
// Replace rootUrl with origin (scheme + authority)
result = result.replaceAll(r'${rootUrl}', pageUri.origin);
} catch (e) {
// If URL parsing fails, leave replacement unchanged
}
return result;
}