[gnome-builder] doap: add load_from_data method



commit ea5500581be550d6bdab828ce131b25ffec6ef95
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Sat Jan 23 20:26:01 2016 +0100

    doap: add load_from_data method
    
    This is needed for gitg since it gets the file from the git
    blob data.

 libide/doap/ide-doap.c |   59 +++++++++++++++++++++++++++++++++++-------------
 libide/doap/ide-doap.h |    4 +++
 2 files changed, 47 insertions(+), 16 deletions(-)
---
diff --git a/libide/doap/ide-doap.c b/libide/doap/ide-doap.c
index add5b67..1bf0542 100644
--- a/libide/doap/ide-doap.c
+++ b/libide/doap/ide-doap.c
@@ -521,23 +521,11 @@ ide_doap_parse_maintainer (IdeDoap   *self,
   return TRUE;
 }
 
-gboolean
-ide_doap_load_from_file (IdeDoap       *self,
-                         GFile         *file,
-                         GCancellable  *cancellable,
-                         GError       **error)
+static gboolean
+load_doap (IdeDoap       *self,
+           XmlReader     *reader,
+           GError       **error)
 {
-  g_autoptr(XmlReader) reader = NULL;
-
-  g_return_val_if_fail (IDE_IS_DOAP (self), FALSE);
-  g_return_val_if_fail (G_IS_FILE (file), FALSE);
-  g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), FALSE);
-
-  reader = xml_reader_new ();
-
-  if (!xml_reader_load_from_file (reader, file, cancellable, error))
-    return FALSE;
-
   if (!xml_reader_read_start_element (reader, "Project"))
     {
       g_set_error (error,
@@ -601,3 +589,42 @@ ide_doap_load_from_file (IdeDoap       *self,
 
   return TRUE;
 }
+
+gboolean
+ide_doap_load_from_file (IdeDoap       *self,
+                         GFile         *file,
+                         GCancellable  *cancellable,
+                         GError       **error)
+{
+  g_autoptr(XmlReader) reader = NULL;
+
+  g_return_val_if_fail (IDE_IS_DOAP (self), FALSE);
+  g_return_val_if_fail (G_IS_FILE (file), FALSE);
+  g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), FALSE);
+
+  reader = xml_reader_new ();
+
+  if (!xml_reader_load_from_file (reader, file, cancellable, error))
+    return FALSE;
+
+  return load_doap (self, reader, error);
+}
+
+gboolean
+ide_doap_load_from_data (IdeDoap       *self,
+                         const gchar   *data,
+                         gsize          length,
+                         GError       **error)
+{
+  g_autoptr(XmlReader) reader = NULL;
+
+  g_return_val_if_fail (IDE_IS_DOAP (self), FALSE);
+  g_return_val_if_fail (data != NULL, FALSE);
+
+  reader = xml_reader_new ();
+
+  if (!xml_reader_load_from_data (reader, (const gchar *)data, length, NULL, NULL))
+    return FALSE;
+
+  return load_doap (self, reader, error);
+}
diff --git a/libide/doap/ide-doap.h b/libide/doap/ide-doap.h
index 7faa574..0751313 100644
--- a/libide/doap/ide-doap.h
+++ b/libide/doap/ide-doap.h
@@ -41,6 +41,10 @@ gboolean       ide_doap_load_from_file    (IdeDoap        *self,
                                            GFile          *file,
                                            GCancellable   *cancellable,
                                            GError        **error);
+gboolean       ide_doap_load_from_data    (IdeDoap        *self,
+                                           const gchar    *data,
+                                           gsize           length,
+                                           GError        **error);
 const gchar   *ide_doap_get_name          (IdeDoap        *self);
 const gchar   *ide_doap_get_shortdesc     (IdeDoap        *self);
 const gchar   *ide_doap_get_description   (IdeDoap        *self);


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