Add support for exporting to Netscape HTML
This commit is contained in:
parent
e29562ddcb
commit
ab7b069769
1 changed files with 83 additions and 6 deletions
|
@ -702,6 +702,48 @@ string_append_item (GString* string,
|
||||||
g_free (metadata);
|
g_free (metadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
string_append_netscape_item (GString* string,
|
||||||
|
KatzeItem* item)
|
||||||
|
{
|
||||||
|
g_return_if_fail (KATZE_IS_ITEM (item));
|
||||||
|
|
||||||
|
if (KATZE_IS_ARRAY (item))
|
||||||
|
{
|
||||||
|
KatzeItem* _item;
|
||||||
|
KatzeArray* array = KATZE_ARRAY (item);
|
||||||
|
GList* list;
|
||||||
|
|
||||||
|
g_string_append (string, "\t<DT><H3 FOLDED ADD_DATE=\"\">");
|
||||||
|
g_string_append (string, katze_item_get_name (item));
|
||||||
|
g_string_append (string, "</H3>\n");
|
||||||
|
g_string_append (string, "\t<DL><P>\n");
|
||||||
|
KATZE_ARRAY_FOREACH_ITEM_L (_item, array, list)
|
||||||
|
{
|
||||||
|
g_string_append (string, "\t");
|
||||||
|
string_append_netscape_item (string, _item);
|
||||||
|
}
|
||||||
|
g_string_append (string, "\t</DL><P>\n");
|
||||||
|
|
||||||
|
g_list_free (list);
|
||||||
|
}
|
||||||
|
else if (katze_item_get_uri (item))
|
||||||
|
{
|
||||||
|
g_string_append (string, "\t<DT><A HREF=\"");
|
||||||
|
g_string_append (string, katze_item_get_uri (item));
|
||||||
|
g_string_append (string, "\" ADD_DATE=\"\" LAST_VISIT=\"\" LAST_MODIFIED=\"\">");
|
||||||
|
g_string_append (string, katze_item_get_name (item));
|
||||||
|
g_string_append (string, "</A>\n");
|
||||||
|
|
||||||
|
if (item->text && g_strcmp0 (item->text, ""))
|
||||||
|
{
|
||||||
|
g_string_append (string, "\t<DD>");
|
||||||
|
g_string_append (string, katze_item_get_text (item));
|
||||||
|
g_string_append (string, "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static gchar*
|
static gchar*
|
||||||
katze_item_metadata_to_xbel (KatzeItem* item)
|
katze_item_metadata_to_xbel (KatzeItem* item)
|
||||||
{
|
{
|
||||||
|
@ -788,15 +830,48 @@ katze_array_to_xbel (KatzeArray* array,
|
||||||
return g_string_free (markup, FALSE);
|
return g_string_free (markup, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gchar*
|
||||||
|
katze_array_to_netscape_html (KatzeArray* array,
|
||||||
|
GError** error)
|
||||||
|
{
|
||||||
|
KatzeItem* item;
|
||||||
|
GList* list;
|
||||||
|
|
||||||
|
/* The header, including the text, is the same as used in other browsers,
|
||||||
|
see http://msdn.microsoft.com/en-us/library/aa753582(v=vs.85).aspx */
|
||||||
|
GString* markup = g_string_new (
|
||||||
|
"<!DOCTYPE NETSCAPE-Bookmark-file-1>\n"
|
||||||
|
"<!--This is an automatically generated file.\n"
|
||||||
|
"It will be read and overwritten.\n"
|
||||||
|
"Do Not Edit! -->\n"
|
||||||
|
"<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">\n"
|
||||||
|
"<Title>Bookmarks</Title>\n"
|
||||||
|
"<H1>Bookmarks</H1>\n"
|
||||||
|
"\n");
|
||||||
|
g_string_append (markup, "<DL><P>\n");
|
||||||
|
KATZE_ARRAY_FOREACH_ITEM_L (item, array, list)
|
||||||
|
string_append_netscape_item (markup, item);
|
||||||
|
g_string_append (markup, "</DL><P>\n");
|
||||||
|
|
||||||
|
g_list_free (list);
|
||||||
|
return g_string_free (markup, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
midori_array_to_file_xbel (KatzeArray* array,
|
midori_array_to_file_format (KatzeArray* array,
|
||||||
const gchar* filename,
|
const gchar* filename,
|
||||||
|
const gchar* format,
|
||||||
GError** error)
|
GError** error)
|
||||||
{
|
{
|
||||||
gchar* data;
|
gchar* data;
|
||||||
FILE* fp;
|
FILE* fp;
|
||||||
|
|
||||||
if (!(data = katze_array_to_xbel (array, error)))
|
if (!g_strcmp0 (format, "xbel"))
|
||||||
|
data = katze_array_to_xbel (array, error);
|
||||||
|
if (!g_strcmp0 (format, "netscape"))
|
||||||
|
data = katze_array_to_netscape_html (array, error);
|
||||||
|
|
||||||
|
if (!data)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (!(fp = fopen (filename, "w")))
|
if (!(fp = fopen (filename, "w")))
|
||||||
{
|
{
|
||||||
|
@ -833,8 +908,10 @@ midori_array_to_file (KatzeArray* array,
|
||||||
g_return_val_if_fail (filename, FALSE);
|
g_return_val_if_fail (filename, FALSE);
|
||||||
g_return_val_if_fail (!error || !*error, FALSE);
|
g_return_val_if_fail (!error || !*error, FALSE);
|
||||||
|
|
||||||
if (!g_strcmp0 (format, "xbel"))
|
if (!g_strcmp0 (format, "xbel")
|
||||||
return midori_array_to_file_xbel (array, filename, error);
|
|| !g_strcmp0 (format, "netscape"))
|
||||||
|
return midori_array_to_file_format (array, filename, format, error);
|
||||||
|
|
||||||
g_critical ("Cannot write KatzeArray to unknown format '%s'.", format);
|
g_critical ("Cannot write KatzeArray to unknown format '%s'.", format);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue