rExtractSummary function

String rExtractSummary(
  1. String txt
)

Implementation

String rExtractSummary(String txt) {
  String content = rExtract(txt, '> summary(ds)');

  // Normalize line endings for platform independence.

  if (Platform.isWindows) {
    content = content.replaceAll('\r\n', '\n');
  }

  // Extract variable names from the dataset.

  List<VariableInfo> vars = extractVariables(txt);
  List<String> varNames = vars.map((v) => v.name).toList();

  // Add a blank line between each sub-table.

  List<String> lines = content.split('\n');

  // Process each line to add spacing between variable summaries.

  for (int i = 0; i < lines.length; i++) {
    // Check if this appears to be a variable headers row by comparing with known variable names.

    if (i > 0 &&
        lines[i].trim().isNotEmpty &&
        !lines[i].trim().startsWith('> ')) {
      if (isHeaderRowWithVariables(lines[i], varNames)) {
        // Add an empty line before the variable header row.

        lines[i] = '\n${lines[i]}';
        continue;
      }
    }
  }

  // Join lines with platform-appropriate line endings.

  String separator = Platform.isWindows ? '\r\n' : '\n';
  content = lines.join(separator);

  // Replace multiple empty lines with a single empty line.

  if (Platform.isWindows) {
    content = content.replaceAll(RegExp(r'\r\n\s*\r\n\s*\r\n+'), '\r\n\r\n');
  } else {
    content = content.replaceAll(RegExp(r'\n\s*\n\s*\n+'), '\n\n');
  }

  // Clean the result.

  content = cleanString(content);

  return content;
}