nrbExportFileName function

String nrbExportFileName(
  1. String name,
  2. String extension
)

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';
}