20d03e43aa
Previously the description was used in the treeview if the title was not present, however this is not possible in some cases, as it may contain markup. The the RSS code is changed so now if there is no title, the description is used as the title, but with the html stripped from it. We also have to consider that some description elements may simply contain an html tag (and therefore no text). In that case the URI is used as the title.
85 lines
2 KiB
C
85 lines
2 KiB
C
/*
|
|
Copyright (C) 2009 Dale Whittaker <dayul@users.sf.net>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
See the file COPYING for the full license text.
|
|
*/
|
|
|
|
#ifndef __FEED_PARSE_H__
|
|
#define __FEED_PARSE_H__
|
|
|
|
#include <midori/midori.h>
|
|
|
|
#if HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
#include <libsoup/soup.h>
|
|
#include <libxml/parser.h>
|
|
#include <libxml/HTMLparser.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define FEED_PARSE_ERROR g_quark_from_string("FEED_PARSE_ERROR")
|
|
|
|
typedef enum
|
|
{
|
|
FEED_PARSE_ERROR_PARSE,
|
|
FEED_PARSE_ERROR_INVALID_FORMAT,
|
|
FEED_PARSE_ERROR_INVALID_VERSION,
|
|
FEED_PARSE_ERROR_MISSING_ELEMENT
|
|
|
|
} FeedBarError;
|
|
|
|
typedef struct _FeedParser
|
|
{
|
|
xmlDocPtr doc; /* The XML document */
|
|
xmlNodePtr node; /* The XML node at a specific point */
|
|
KatzeItem* item;
|
|
GError** error;
|
|
|
|
gboolean (*isvalid) (struct _FeedParser* fparser);
|
|
gboolean (*update) (struct _FeedParser* fparser);
|
|
void (*preparse) (struct _FeedParser* fparser);
|
|
void (*parse) (struct _FeedParser* fparser);
|
|
void (*postparse) (struct _FeedParser* fparser);
|
|
|
|
} FeedParser;
|
|
|
|
#define feed_parser_set_error(fparser, err, msg) \
|
|
*(fparser)->error = g_error_new ( \
|
|
FEED_PARSE_ERROR, (err), (msg))
|
|
|
|
gchar*
|
|
feed_get_element_string (FeedParser* fparser);
|
|
|
|
gchar*
|
|
feed_remove_markup (gchar* markup);
|
|
|
|
gchar*
|
|
feed_get_element_markup (FeedParser* fparser);
|
|
|
|
gint64
|
|
feed_get_element_date (FeedParser* fparser);
|
|
|
|
KatzeItem*
|
|
feed_item_exists (KatzeArray* array,
|
|
KatzeItem* item);
|
|
void
|
|
feed_parse_node (FeedParser* fparser);
|
|
|
|
gboolean
|
|
parse_feed (gchar* data,
|
|
gint64 length,
|
|
GSList* parsers,
|
|
KatzeArray* array,
|
|
GError** error);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __FEED_PARSE_H__ */
|
|
|