nrbExportFileName function
Returns a portable report filename with exactly one export extension.
Implementation
String nrbExportFileName(String name, String extension) {
if (!const ['.xlsx', '.pdf', '.docx'].contains(extension.toLowerCase())) {
throw ArgumentError.value(
extension,
'extension',
'Unsupported report extension',
);
}
var base = name.trim().replaceAll(RegExp(r'[\x00-\x1f\\/:*?"<>|]'), '_');
base = base.replaceAll(RegExp(r'[. ]+$'), '');
while (base.toLowerCase().endsWith(extension.toLowerCase())) {
base = base.substring(0, base.length - extension.length).trim();
}
base = base.replaceAll(RegExp(r'[. ]+$'), '');
if (base.isEmpty) base = 'NRB_Report';
if (RegExp(
r'^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)',
caseSensitive: false,
).hasMatch(base)) {
base = '_$base';
}
return '$base$extension';
}