generateExtensionFromDart function
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();
}