generateOneLine method

String generateOneLine({
  1. required String path,
})

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;
}