jsonLine method

String jsonLine(
  1. String line
)

Highlights a line of JSON.

Implementation

String jsonLine(String line) {
  var out = line;

  // Keys
  out = out.replaceAllMapped(
    RegExp(r'(\")([^\"]+)(\"\s*:)'),
    (m) => '${m[1]}${theme.accent}${theme.bold}${m[2]}${theme.reset}${m[3]}',
  );

  // String values
  out = out.replaceAllMapped(
    RegExp(r'(:\s*)(\"[^\"]*\")'),
    (m) => '${m[1]}${theme.highlight}${m[2]}${theme.reset}',
  );

  // Numbers, booleans, null
  out = out.replaceAllMapped(
    RegExp(r'(:\s*)(-?\d+(?:\.\d+)?|true|false|null)\b'),
    (m) => '${m[1]}${theme.selection}${m[2]}${theme.reset}',
  );

  // Punctuation
  out = out.replaceAllMapped(
    RegExp(r'[\[\]\{\}\,\:]'),
    (m) => '${theme.dim}${m[0]}${theme.reset}',
  );

  return out;
}