Prechádzať zdrojové kódy

[new]修复mac端转换换行的问题

zk 10 mesiacov pred
rodič
commit
a5f552036f
1 zmenil súbory, kde vykonal 12 pridanie a 6 odobranie
  1. 12 6
      lib/string_get_runner.dart

+ 12 - 6
lib/string_get_runner.dart

@@ -27,6 +27,7 @@ class StringXmlWatcherBuilder implements Builder {
 
   @override
   Future<void> build(BuildStep buildStep) async {
+    print('string_get_runner build');
     final xmlFiles = await buildStep.findAssets(_targetXmlGlob).toList();
     final (buffer, multiBuffer) = await _processXmlFiles(buildStep, xmlFiles);
 
@@ -55,18 +56,15 @@ class StringXmlWatcherBuilder implements Builder {
         .writeln('  static const Map<String, Map<String, String>> values = {');
     multiBuffer.writeln('    \'zh_CN\': {'); // 默认基准语言
 
-    print('zkzkzk xmlFiles ${xmlFiles.length}');
     // 遍历所有 XML 文件
     for (final file in xmlFiles) {
-      print('zkzkzk file ${file.path}');
       try {
         final content = await buildStep.readAsString(file);
         final document = XmlDocument.parse(content);
-        print('zkzkzk document ${document.toString()}');
         // 遍历所有 <string> 元素
         for (final element in document.findAllElements('string')) {
           final name = element.getAttribute('name');
-          final value = _sanitizeValue(element.text);
+          final value = processXmlText(element.text);
 
           if (name != null) {
             final camelCaseName = _toCamelCase(name);
@@ -76,7 +74,7 @@ class StringXmlWatcherBuilder implements Builder {
           }
         }
       } catch (e) {
-        print('❌ Error processing file ${file.path}: $e');
+        print('❌ (string_get_runner)Error processing file ${file.path}: $e');
       }
     }
 
@@ -85,10 +83,18 @@ class StringXmlWatcherBuilder implements Builder {
     multiBuffer.writeln('  };');
     multiBuffer.writeln('}');
 
+    print('string_get_runner file generated successfully!');
     return (buffer, multiBuffer);
   }
 
-  String _sanitizeValue(String value) => value.replaceAll('\r\n', '').trim();
+  String processXmlText(String original) {
+    return original
+        .replaceAll('\r\n', ' ')
+        .replaceAll('\n', ' ')
+        .replaceAll(RegExp(r'\s+'), ' ')
+        .trim()
+        .replaceAll("'", "\\'");
+  }
 
   String _toCamelCase(String snakeCase) {
     return snakeCase.split('_').map((word) {