86 lines
2.4 KiB
Dart
86 lines
2.4 KiB
Dart
import 'package:swagger_generator_flutter/core/config_repository.dart';
|
|
import 'package:swagger_generator_flutter/utils/string_utils/text_cleaner.dart';
|
|
|
|
/// Template service for generating comments and file headers
|
|
class TemplateService {
|
|
// No instance fields needed; all methods use ConfigRepository.
|
|
|
|
/// Generate comment block
|
|
static String generateComment(String text, {bool isBlock = false}) {
|
|
if (text.isEmpty) return '';
|
|
|
|
final cleanText = TextCleaner.cleanDescription(text);
|
|
|
|
if (isBlock) {
|
|
return '/**\n * $cleanText\n */';
|
|
} else {
|
|
return '/// $cleanText';
|
|
}
|
|
}
|
|
|
|
/// Generate file header
|
|
String generateFileHeader(
|
|
String description,
|
|
String source, {
|
|
String? fileName,
|
|
String? fileType,
|
|
}) {
|
|
// Load configuration repository synchronously
|
|
final config = ConfigRepository.loadSync();
|
|
final template = config.fileHeaderTemplate;
|
|
|
|
if (template != null && template.isNotEmpty) {
|
|
return _applyFileHeaderTemplate(
|
|
template,
|
|
description: description,
|
|
source: source,
|
|
fileName: fileName ?? '',
|
|
fileType: fileType ?? description,
|
|
generatorName: config.generatorName,
|
|
author: config.author,
|
|
copyright: config.copyright,
|
|
);
|
|
}
|
|
|
|
// Use default template
|
|
final generatorName = config.generatorName;
|
|
final author = config.author;
|
|
final copyright = config.copyright;
|
|
|
|
return '''
|
|
// $description
|
|
// 由 $generatorName by $author 生成
|
|
// $copyright
|
|
''';
|
|
}
|
|
|
|
/// Apply file header template
|
|
String _applyFileHeaderTemplate(
|
|
String template, {
|
|
required String description,
|
|
required String source,
|
|
required String fileName,
|
|
required String fileType,
|
|
required String generatorName,
|
|
required String author,
|
|
required String copyright,
|
|
}) {
|
|
var result = template;
|
|
|
|
// Replace template variables
|
|
result = result.replaceAll('{fileName}', fileName);
|
|
result = result.replaceAll('{fileType}', fileType);
|
|
result = result.replaceAll('{swaggerUrl}', source);
|
|
result = result.replaceAll('{generatorName}', generatorName);
|
|
result = result.replaceAll('{author}', author);
|
|
result = result.replaceAll('{copyright}', copyright);
|
|
|
|
// If template doesn't contain comments, add default format
|
|
if (!result.contains('//')) {
|
|
result = '// $description\n$result';
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|