Ver Fonte

REXM: Reviewed `UpdateSourceMetadata()`

Ray há 1 semana atrás
pai
commit
4020885c35
1 ficheiros alterados com 14 adições e 13 exclusões
  1. 14 13
      tools/rexm/rexm.c

+ 14 - 13
tools/rexm/rexm.c

@@ -2305,7 +2305,7 @@ static void UpdateSourceMetadata(const char *exSrcPath, const rlExampleInfo *inf
 
         char *exText = LoadFileText(exSourcePath);
         char *exTextUpdated[6] = { 0 };     // Pointers to multiple updated text versions
-        char *exTextUpdatedPtr = NULL;
+        char *exTextUpdatedPtr = exText;    // Pointer to current valid text version
 
         char exNameFormated[256] = { 0 };   // Example name without category and using spaces
         int exNameIndex = TextFindIndex(info->name, "_");
@@ -2315,8 +2315,9 @@ static void UpdateSourceMetadata(const char *exSrcPath, const rlExampleInfo *inf
 
         // Update example header title (line #3 - ALWAYS)
         // String: "*   raylib [shaders] example - texture drawing"
-        exTextUpdated[0] = TextReplaceBetween(exText, 
+        exTextUpdated[0] = TextReplaceBetween(exTextUpdatedPtr, 
             TextFormat("%s] example - %s", info->category, exNameFormated), "*   raylib [", "\n");
+        if (exTextUpdated[0] != NULL) exTextUpdatedPtr = exTextUpdated[0];
 
         // Update example complexity rating
         // String: "*   Example complexity rating: [★★☆☆] 2/4"
@@ -2328,45 +2329,45 @@ static void UpdateSourceMetadata(const char *exSrcPath, const rlExampleInfo *inf
             if (i < info->stars) strcpy(starsText + 3*i, "★");
             else strcpy(starsText + 3*i, "☆");
         }
-        exTextUpdated[1] = TextReplaceBetween(exTextUpdated[0], 
+        exTextUpdated[1] = TextReplaceBetween(exTextUpdatedPtr, 
             TextFormat("%s] %i", starsText, info->stars), "*   Example complexity rating: [", "/4\n");
+        if (exTextUpdated[1] != NULL) exTextUpdatedPtr = exTextUpdated[1];
 
         // Update example creation/update raylib versions
         // String: "*   Example originally created with raylib 2.0, last time updated with raylib 3.7
-        exTextUpdated[2] = TextReplaceBetween(exTextUpdated[1], 
+        exTextUpdated[2] = TextReplaceBetween(exTextUpdatedPtr, 
             TextFormat("%s, last time updated with raylib %s", info->verCreated, info->verUpdated), "*   Example originally created with raylib ", "\n");
+        if (exTextUpdated[2] != NULL) exTextUpdatedPtr = exTextUpdated[2];
 
         // Update copyright message
         // String: "*   Copyright (c) 2019-2025 Contributor Name (@github_user) and Ramon Santamaria (@raysan5)"
         if (info->yearCreated == info->yearReviewed)
         {
-            exTextUpdated[3] = TextReplaceBetween(exTextUpdated[2],
+            exTextUpdated[3] = TextReplaceBetween(exTextUpdatedPtr,
                 TextFormat("%i %s (@%s", info->yearCreated, info->author, info->authorGitHub), "Copyright (c) ", ")");
+            if (exTextUpdated[3] != NULL) exTextUpdatedPtr = exTextUpdated[3];
         }
         else
         {
-            exTextUpdated[3] = TextReplaceBetween(exTextUpdated[2],
+            exTextUpdated[3] = TextReplaceBetween(exTextUpdatedPtr,
                 TextFormat("%i-%i %s (@%s", info->yearCreated, info->yearReviewed, info->author, info->authorGitHub), "Copyright (c) ", ")");
+            if (exTextUpdated[3] != NULL) exTextUpdatedPtr = exTextUpdated[3];
         }
 
         // Update window title
         // String: "InitWindow(screenWidth, screenHeight, "raylib [shaders] example - texture drawing");"
         exTextUpdated[4] = TextReplaceBetween(exTextUpdated[3], 
             TextFormat("raylib [%s] example - %s", info->category, exNameFormated), "InitWindow(screenWidth, screenHeight, \"", "\");");
+        if (exTextUpdated[4] != NULL) exTextUpdatedPtr = exTextUpdated[4];
 
         // Update contributors names
         // String: "*   Example contributed by Contributor Name (@github_user) and reviewed by Ramon Santamaria (@raysan5)"
         // WARNING: Not all examples are contributed by someone, so the result of this replace can be NULL (string not found)
-        if (exTextUpdated[4] != NULL)
-        {
-            exTextUpdated[5] = TextReplaceBetween(exTextUpdated[4],
+        exTextUpdated[5] = TextReplaceBetween(exTextUpdatedPtr,
                 TextFormat("%s (@%s", info->author, info->authorGitHub), "*   Example contributed by ", ")");
-        }
-        else exTextUpdatedPtr = exTextUpdated[3];
-
         if (exTextUpdated[5] != NULL) exTextUpdatedPtr = exTextUpdated[5];
             
-        SaveFileText(exSourcePath, exTextUpdatedPtr);
+        if (exTextUpdatedPtr != NULL) SaveFileText(exSourcePath, exTextUpdatedPtr);
 
         for (int i = 0; i < 6; i++) { MemFree(exTextUpdated[i]); exTextUpdated[i] = NULL; }