generateOneLine method
Implementation
String generateOneLine({required String path}) {
bool namedWithParent = config.namedWithParent ??
true; // 默认: true. 当 = false 时, 输出 static const String assets/全部路径 = "assets/xxx"
bool leadingWithPackageName = config.leadingWithPackageName ?? false;
bool uniqifyName = config.uniqifyName ?? true; // 默认: true
String regexPattern = config.filenameSplitPattern ?? "[-_]";
// var
int startIndex = namedWithParent ? path.split("/").length - 2 : 1;
String varString = generateVarName(
path: path, startIndex: startIndex, regexPattern: regexPattern);
if (existingVarNames.contains(varString) && uniqifyName) {
// 存在相同的名字
final newPath = convertAllExtensionsToCamelCase(path);
varString = generateVarName(
path: newPath, startIndex: startIndex, regexPattern: regexPattern);
}
// 处理冲突
int sameNameCount = existingVarNames
.where((string) {
return string == varString;
})
.toList()
.length;
while (existingVarNames.contains(varString)) {
if (uniqifyName) {}
if (startIndex > 1) {
startIndex--;
varString = generateVarName(
path: path, startIndex: startIndex, regexPattern: regexPattern);
} else {
varString += "${sameNameCount + 1}";
}
}
// value
String valueString =
"${leadingWithPackageName ? "package/$packageName/" : ""}$path";
if (varString.isEmpty || valueString.isEmpty) {
return '';
}
String result = "$staticConstString $varString = '$valueString';";
existingVarNames.add(varString);
return result;
}