]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level_metadata.c
(#824) Introduce UndoHistory
[nothing.git] / src / game / level_metadata.c
index 2fe1d6d4b4769db9f48dfe66ab779fbacb39f06b..1fdcd6a5a4db1a0ca5190ce4508a475abdf2de73 100644 (file)
@@ -14,6 +14,30 @@ struct LevelMetadata
     const char *title;
 };
 
+LevelMetadata *create_level_metadata(const char *title)
+{
+    trace_assert(title);
+
+    Lt *lt = create_lt();
+
+    LevelMetadata *level_metadata = PUSH_LT(
+        lt, nth_calloc(1, sizeof(LevelMetadata)), free);
+    if (level_metadata == NULL) {
+        RETURN_LT(lt, NULL);
+    }
+    level_metadata->lt = lt;
+
+    level_metadata->title = PUSH_LT(
+        lt,
+        trim_endline(string_duplicate(title, NULL)),
+        free);
+    if (level_metadata->title == NULL) {
+        RETURN_LT(lt, NULL);
+    }
+
+    return level_metadata;
+}
+
 LevelMetadata *create_level_metadata_from_file(const char *filename)
 {
     trace_assert(filename);
@@ -33,27 +57,12 @@ LevelMetadata *create_level_metadata_from_line_stream(LineStream *line_stream)
 {
     trace_assert(line_stream);
 
-    Lt *lt = create_lt();
-    if (lt == NULL) {
+    const char *line = line_stream_next(line_stream);
+    if (line == NULL) {
         return NULL;
     }
 
-    LevelMetadata *level_metadata = PUSH_LT(
-        lt, nth_alloc(sizeof(LevelMetadata)), free);
-    if (level_metadata == NULL) {
-        RETURN_LT(lt, NULL);
-    }
-    level_metadata->lt = lt;
-
-    level_metadata->title = PUSH_LT(
-        lt,
-        string_duplicate(line_stream_next(line_stream), NULL),
-        free);
-    if (level_metadata->title == NULL) {
-        RETURN_LT(lt, NULL);
-    }
-
-    return level_metadata;
+    return create_level_metadata(line);
 }
 
 void destroy_level_metadata(LevelMetadata *level_metadata)