[gnome-builder] project: add helper to generate project id



commit e899c1d12e2be23b8f753f3979257126c466331b
Author: Christian Hergert <chergert redhat com>
Date:   Mon Nov 20 23:27:51 2017 -0800

    project: add helper to generate project id
    
    This allows us to get the project id before we've created an
    IdeProject instance.

 src/libide/projects/ide-project.c |   22 +++++++++++++++++-----
 src/libide/projects/ide-project.h |    2 ++
 2 files changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/src/libide/projects/ide-project.c b/src/libide/projects/ide-project.c
index 6d1a44b..dba8887 100644
--- a/src/libide/projects/ide-project.c
+++ b/src/libide/projects/ide-project.c
@@ -99,12 +99,24 @@ ide_project_writer_unlock (IdeProject *self)
   g_rw_lock_writer_unlock (&self->rw_lock);
 }
 
-static gchar *
-ide_project_create_id (IdeProject *self)
+/**
+ * ide_project_create_id:
+ * @name: the name of the project
+ *
+ * Escapes the project name into something suitable using as an id.
+ * This can be uesd to determine the directory name when the project
+ * name should be used.
+ *
+ * Returns: (transfer full): a new string
+ *
+ * Since: 3.28
+ */
+gchar *
+ide_project_create_id (const gchar *name)
 {
-  g_assert (IDE_IS_PROJECT (self));
+  g_return_val_if_fail (name != NULL, NULL);
 
-  return g_strdelimit (g_strdup (self->name), " /|<>\n\t", '-');
+  return g_strdelimit (g_strdup (name), " /|<>\n\t", '-');
 }
 
 const gchar *
@@ -133,7 +145,7 @@ _ide_project_set_name (IdeProject  *self,
     {
       g_free (self->name);
       self->name = g_strdup (name);
-      self->id = ide_project_create_id (self);
+      self->id = ide_project_create_id (name);
       g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_NAME]);
     }
 }
diff --git a/src/libide/projects/ide-project.h b/src/libide/projects/ide-project.h
index 3590938..3c05a23 100644
--- a/src/libide/projects/ide-project.h
+++ b/src/libide/projects/ide-project.h
@@ -29,6 +29,8 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeProject, ide_project, IDE, PROJECT, IdeObject)
 
+IDE_AVAILABLE_IN_3_28
+gchar           *ide_project_create_id          (const gchar          *name);
 IDE_AVAILABLE_IN_ALL
 IdeProjectItem  *ide_project_get_root           (IdeProject           *self);
 IDE_AVAILABLE_IN_ALL


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]