generateExtensionFromDart function

String generateExtensionFromDart(
  1. String source, {
  2. String? extensionName,
  3. String? partOf,
})

Extension-only Dart from a hand-written STTheme file. Does not emit appST.

Implementation

String generateExtensionFromDart(
  String source, {
  String? extensionName,
  String? partOf,
}) {
  final tokens = parseStDartSource(source);
  if (tokens.isEmpty) {
    throw const FormatException(
      'No STExtra, extra colors (\'name\': STColor), or extra components found.',
    );
  }
  final name =
      extensionName ??
      (tokens.variableName == null
          ? 'STAppExtras'
          : stDefaultExtensionName(tokens.variableName!));
  final buf = StringBuffer();
  buf.writeln('// GENERATED CODE - do not modify by hand.');
  buf.writeln('// dart run flutter_scale_theme_kit:generate');
  buf.writeln();
  if (partOf != null) {
    buf.writeln("part of '$partOf';");
    buf.writeln();
  } else {
    buf.writeln("import 'package:flutter/material.dart';");
    buf.writeln(
      "import 'package:flutter_scale_theme_kit/flutter_scale_theme_kit.dart';",
    );
    buf.writeln();
  }
  emitStResolvedExtension(
    buf,
    extras: tokens.extras,
    extraColors: tokens.extraColors,
    extraComponents: tokens.extraComponents,
    extensionName: name,
  );
  return buf.toString();
}