#ifndef EL__DOCUMENT_HTML_PARSER_PARSE_H #define EL__DOCUMENT_HTML_PARSER_PARSE_H struct html_context; struct document_options; struct part; struct string; /* Flags for get_attr_value(). */ enum html_attr_flags { HTML_ATTR_NONE = 0, /* If HTML_ATTR_TEST is set then we only test for existence of * an attribute of that @name. In that mode it returns NULL if * attribute was not found, and a pointer to start of the attribute * if it was found. */ HTML_ATTR_TEST = 1, /* If HTML_ATTR_EAT_NL is not set, newline and tabs chars are * replaced by spaces in returned value, else these chars are * skipped. */ HTML_ATTR_EAT_NL = 2, /* If HTML_ATTR_NO_CONV is set, then convert_string() is not called * on value. Unused for now. */ /* HTML_ATTR_NO_CONV = 4, */ }; /* Parses html element attributes. * - e is attr pointer previously get from parse_element, * DON'T PASS HERE ANY OTHER VALUE!!! * - name is searched attribute * * Returns allocated string containing the attribute, or NULL on unsuccess. */ unsigned char *get_attr_value(register unsigned char *e, unsigned char *name, struct document_options *options, enum html_attr_flags flags); /* Wrappers for get_attr_value(). */ #define get_attr_val(e, name, options) get_attr_value(e, name, options, HTML_ATTR_NONE) #define get_url_val(e, name, options) get_attr_value(e, name, options, HTML_ATTR_EAT_NL) #define has_attr(e, name, options) (!!get_attr_value(e, name, options, HTML_ATTR_TEST)) /* Interface for both the renderer and the table handling */ void parse_html(unsigned char *html, unsigned char *eof, struct part *part, unsigned char *head, struct html_context *html_context); /* Interface for element handlers */ typedef void (element_handler_T)(struct html_context *, unsigned char *attr, unsigned char *html, unsigned char *eof, unsigned char **end); /* Interface for the table handling */ int parse_element(unsigned char *, unsigned char *, unsigned char **, int *, unsigned char **, unsigned char **); int get_num(unsigned char *, unsigned char *, struct document_options *); int get_width(unsigned char *, unsigned char *, int, struct html_context *); unsigned char *skip_comment(unsigned char *, unsigned char *); void scan_http_equiv(unsigned char *s, unsigned char *eof, struct string *head, struct string *title, struct document_options *options); /* Lifecycle functions for the tags fastfind cache, if being in use. */ void free_tags_lookup(void); void init_tags_lookup(void); #endif