607 lines
22 KiB
Cython
607 lines
22 KiB
Cython
from libc.stdint cimport uint8_t, uint32_t, uintptr_t
|
|
|
|
|
|
cdef extern from "lexbor/core/core.h" nogil:
|
|
ctypedef uint32_t lxb_codepoint_t
|
|
ctypedef unsigned char lxb_char_t
|
|
ctypedef unsigned int lxb_status_t
|
|
ctypedef enum lexbor_status_t:
|
|
LXB_STATUS_OK = 0x0000
|
|
LXB_STATUS_ERROR = 0x0001
|
|
LXB_STATUS_ERROR_MEMORY_ALLOCATION
|
|
LXB_STATUS_ERROR_OBJECT_IS_NULL
|
|
LXB_STATUS_ERROR_SMALL_BUFFER
|
|
LXB_STATUS_ERROR_INCOMPLETE_OBJECT
|
|
LXB_STATUS_ERROR_NO_FREE_SLOT
|
|
LXB_STATUS_ERROR_TOO_SMALL_SIZE
|
|
LXB_STATUS_ERROR_NOT_EXISTS
|
|
LXB_STATUS_ERROR_WRONG_ARGS
|
|
LXB_STATUS_ERROR_WRONG_STAGE
|
|
LXB_STATUS_ERROR_UNEXPECTED_RESULT
|
|
LXB_STATUS_ERROR_UNEXPECTED_DATA
|
|
LXB_STATUS_ERROR_OVERFLOW
|
|
LXB_STATUS_CONTINUE
|
|
LXB_STATUS_SMALL_BUFFER
|
|
LXB_STATUS_ABORTED
|
|
LXB_STATUS_STOPPED
|
|
LXB_STATUS_NEXT
|
|
LXB_STATUS_STOP
|
|
|
|
lexbor_str_t* lexbor_str_destroy(lexbor_str_t *str, lexbor_mraw_t *mraw, bint destroy_obj)
|
|
|
|
lexbor_str_t* lexbor_str_create()
|
|
lxb_char_t * lexbor_str_data_noi(lexbor_str_t *str)
|
|
|
|
cdef extern from "lexbor/html/html.h" nogil:
|
|
ctypedef unsigned int lxb_html_document_opt_t
|
|
|
|
ctypedef struct lxb_html_tokenizer_t
|
|
ctypedef struct lxb_html_form_element_t
|
|
ctypedef struct lxb_html_head_element_t
|
|
ctypedef struct lxb_html_body_element_t
|
|
ctypedef struct lxb_dom_element_t
|
|
ctypedef struct lexbor_mraw_t
|
|
ctypedef struct lexbor_hash_t
|
|
ctypedef struct lxb_dom_document_type_t
|
|
ctypedef void lxb_dom_interface_t
|
|
ctypedef uintptr_t lxb_tag_id_t
|
|
ctypedef uintptr_t lxb_ns_id_t
|
|
ctypedef lxb_dom_interface_t *(*lxb_dom_interface_destroy_f)(lxb_dom_interface_t *intrfc)
|
|
ctypedef lxb_dom_interface_t *(*lxb_dom_interface_create_f)(lxb_dom_document_t *document, lxb_tag_id_t tag_id,
|
|
lxb_ns_id_t ns)
|
|
|
|
ctypedef struct lxb_dom_event_target_t:
|
|
void *events
|
|
|
|
ctypedef struct lexbor_str_t:
|
|
lxb_char_t *data
|
|
size_t length
|
|
|
|
ctypedef struct lxb_dom_node_t:
|
|
lxb_dom_event_target_t event_target
|
|
|
|
uintptr_t local_name
|
|
uintptr_t prefix
|
|
uintptr_t ns
|
|
|
|
lxb_dom_document_t *owner_document
|
|
|
|
lxb_dom_node_t *next
|
|
lxb_dom_node_t *prev
|
|
lxb_dom_node_t *parent
|
|
lxb_dom_node_t *first_child
|
|
lxb_dom_node_t *last_child
|
|
void *user
|
|
|
|
lxb_dom_node_type_t type
|
|
|
|
ctypedef struct lxb_dom_document_t:
|
|
lxb_dom_node_t node
|
|
|
|
lxb_dom_document_cmode_t compat_mode
|
|
lxb_dom_document_dtype_t type
|
|
|
|
lxb_dom_document_type_t *doctype
|
|
lxb_dom_element_t *element
|
|
|
|
lxb_dom_interface_create_f create_interface
|
|
lxb_dom_interface_destroy_f destroy_interface
|
|
|
|
lexbor_mraw_t *mraw
|
|
lexbor_mraw_t *text
|
|
lexbor_hash_t *tags
|
|
lexbor_hash_t *attrs
|
|
lexbor_hash_t *prefix
|
|
lexbor_hash_t *ns
|
|
void *parser
|
|
void *user
|
|
|
|
bint tags_inherited
|
|
bint ns_inherited
|
|
|
|
bint scripting
|
|
|
|
ctypedef struct lxb_html_document_t:
|
|
lxb_dom_document_t dom_document
|
|
|
|
void *iframe_srcdoc
|
|
|
|
lxb_html_head_element_t *head
|
|
lxb_html_body_element_t *body
|
|
lxb_html_document_ready_state_t ready_state
|
|
lxb_html_document_opt_t opt
|
|
|
|
ctypedef enum lxb_html_document_ready_state_t:
|
|
LXB_HTML_DOCUMENT_READY_STATE_UNDEF = 0x00
|
|
LXB_HTML_DOCUMENT_READY_STATE_LOADING = 0x01
|
|
LXB_HTML_DOCUMENT_READY_STATE_INTERACTIVE = 0x02
|
|
LXB_HTML_DOCUMENT_READY_STATE_COMPLETE = 0x03
|
|
|
|
ctypedef enum lxb_html_parser_state_t:
|
|
LXB_HTML_PARSER_STATE_BEGIN = 0x00
|
|
LXB_HTML_PARSER_STATE_PROCESS = 0x01
|
|
LXB_HTML_PARSER_STATE_END = 0x02
|
|
LXB_HTML_PARSER_STATE_FRAGMENT_PROCESS = 0x03
|
|
LXB_HTML_PARSER_STATE_ERROR = 0x04
|
|
|
|
ctypedef enum lxb_dom_node_type_t:
|
|
LXB_DOM_NODE_TYPE_ELEMENT = 0x01
|
|
LXB_DOM_NODE_TYPE_ATTRIBUTE = 0x02
|
|
LXB_DOM_NODE_TYPE_TEXT = 0x03
|
|
LXB_DOM_NODE_TYPE_CDATA_SECTION = 0x04
|
|
LXB_DOM_NODE_TYPE_ENTITY_REFERENCE = 0x05
|
|
LXB_DOM_NODE_TYPE_ENTITY = 0x06
|
|
LXB_DOM_NODE_TYPE_PROCESSING_INSTRUCTION = 0x07
|
|
LXB_DOM_NODE_TYPE_COMMENT = 0x08
|
|
LXB_DOM_NODE_TYPE_DOCUMENT = 0x09
|
|
LXB_DOM_NODE_TYPE_DOCUMENT_TYPE = 0x0A
|
|
LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT = 0x0B
|
|
LXB_DOM_NODE_TYPE_NOTATION = 0x0C
|
|
LXB_DOM_NODE_TYPE_LAST_ENTRY = 0x0D
|
|
|
|
ctypedef enum lxb_dom_document_cmode_t:
|
|
LXB_DOM_DOCUMENT_CMODE_NO_QUIRKS = 0x00
|
|
LXB_DOM_DOCUMENT_CMODE_QUIRKS = 0x01
|
|
LXB_DOM_DOCUMENT_CMODE_LIMITED_QUIRKS = 0x02
|
|
|
|
ctypedef enum lxb_dom_document_dtype_t:
|
|
LXB_DOM_DOCUMENT_DTYPE_UNDEF = 0x00,
|
|
LXB_DOM_DOCUMENT_DTYPE_HTML = 0x01,
|
|
LXB_DOM_DOCUMENT_DTYPE_XML = 0x02
|
|
|
|
ctypedef enum lxb_html_serialize_opt_t:
|
|
LXB_HTML_SERIALIZE_OPT_UNDEF = 0x00
|
|
LXB_HTML_SERIALIZE_OPT_SKIP_WS_NODES = 0x01
|
|
LXB_HTML_SERIALIZE_OPT_SKIP_COMMENT = 0x02
|
|
LXB_HTML_SERIALIZE_OPT_RAW = 0x04
|
|
LXB_HTML_SERIALIZE_OPT_WITHOUT_CLOSING = 0x08
|
|
LXB_HTML_SERIALIZE_OPT_TAG_WITH_NS = 0x10
|
|
LXB_HTML_SERIALIZE_OPT_WITHOUT_TEXT_INDENT = 0x20
|
|
LXB_HTML_SERIALIZE_OPT_FULL_DOCTYPE = 0x40
|
|
|
|
ctypedef struct lexbor_array_t:
|
|
void **list
|
|
size_t size
|
|
size_t length
|
|
|
|
ctypedef struct lexbor_array_obj_t:
|
|
uint8_t *list
|
|
size_t size
|
|
size_t length
|
|
size_t struct_size
|
|
|
|
ctypedef struct lxb_html_tree_pending_table_t
|
|
ctypedef bint lxb_html_tree_insertion_mode_f
|
|
ctypedef lxb_status_t lxb_html_tree_append_attr_f
|
|
|
|
ctypedef struct lxb_html_tree_t:
|
|
|
|
lxb_html_tokenizer_t *tkz_ref
|
|
|
|
lxb_html_document_t *document
|
|
lxb_dom_node_t *fragment
|
|
|
|
lxb_html_form_element_t *form
|
|
|
|
lexbor_array_t *open_elements
|
|
lexbor_array_t *active_formatting
|
|
lexbor_array_obj_t *template_insertion_modes
|
|
|
|
lxb_html_tree_pending_table_t *pending_table
|
|
|
|
lexbor_array_obj_t *parse_errors
|
|
|
|
bint foster_parenting
|
|
bint frameset_ok
|
|
bint scripting
|
|
|
|
lxb_html_tree_insertion_mode_f mode
|
|
lxb_html_tree_insertion_mode_f original_mode
|
|
lxb_html_tree_append_attr_f before_append_attr
|
|
|
|
lxb_status_t status
|
|
|
|
size_t ref_count
|
|
|
|
ctypedef struct lxb_html_parser_t:
|
|
lxb_html_tokenizer_t *tkz
|
|
lxb_html_tree_t *tree
|
|
lxb_html_tree_t *original_tree
|
|
|
|
lxb_dom_node_t *root
|
|
lxb_dom_node_t *form
|
|
|
|
lxb_html_parser_state_t state
|
|
lxb_status_t status
|
|
|
|
size_t ref_count
|
|
|
|
ctypedef struct lxb_html_element_t
|
|
|
|
# Functions
|
|
lxb_html_document_t * lxb_html_document_create()
|
|
lxb_html_element_t * lxb_html_document_create_element(lxb_html_document_t *document,
|
|
const lxb_char_t *local_name, size_t lname_len,
|
|
void *reserved_for_opt)
|
|
lxb_status_t lxb_html_document_parse(lxb_html_document_t *document, const lxb_char_t *html, size_t size)
|
|
lxb_dom_node_t * lxb_html_document_parse_fragment(lxb_html_document_t *document,
|
|
lxb_dom_element_t *element,
|
|
const lxb_char_t *html,
|
|
size_t size)
|
|
lxb_html_body_element_t * lxb_html_document_body_element_noi(lxb_html_document_t *document)
|
|
lxb_html_head_element_t * lxb_html_document_head_element_noi(lxb_html_document_t *document)
|
|
lxb_dom_element_t * lxb_dom_document_element(lxb_dom_document_t *document)
|
|
|
|
lxb_status_t lxb_html_serialize_tree_str(lxb_dom_node_t *node, lexbor_str_t *str)
|
|
lxb_status_t lxb_html_serialize_deep_str(lxb_dom_node_t *node, lexbor_str_t *str)
|
|
lxb_html_element_t* lxb_html_element_inner_html_set(lxb_html_element_t *element,
|
|
const lxb_char_t *html, size_t size)
|
|
|
|
cdef class LexborNode:
|
|
cdef:
|
|
lxb_dom_node_t *node
|
|
public LexborHTMLParser parser
|
|
cdef bint _is_fragment_root
|
|
|
|
@staticmethod
|
|
cdef LexborNode new(lxb_dom_node_t *node, LexborHTMLParser parser)
|
|
cdef void set_as_fragment_root(self)
|
|
cdef inline LexborNode _get_node(self)
|
|
|
|
|
|
cdef bint is_empty_text_node(lxb_dom_node_t *node)
|
|
cdef inline bint _is_whitespace_only(const lxb_char_t *buffer, size_t buffer_length) nogil
|
|
|
|
|
|
cdef class LexborCSSSelector:
|
|
cdef lxb_css_parser_t* parser
|
|
cdef lxb_selectors_t * selectors
|
|
cdef lxb_css_selectors_t * css_selectors
|
|
cdef public list results
|
|
cdef public LexborNode current_node
|
|
cdef int _create_css_parser(self) except -1
|
|
cpdef list find(self, str query, LexborNode node)
|
|
cpdef list find_first(self, str query, LexborNode node)
|
|
cpdef list _find(self, str query, LexborNode node, bint only_first)
|
|
cpdef int any_matches(self, str query, LexborNode node) except -1
|
|
|
|
cdef class LexborHTMLParser:
|
|
cdef lxb_html_document_t *document
|
|
cdef lxb_html_document_t *_fragment_document
|
|
cdef bint _is_fragment
|
|
cdef public bytes raw_html
|
|
cdef LexborCSSSelector _selector
|
|
cdef inline void _new_html_document(self)
|
|
cdef inline lxb_status_t _parse_html_document(self, char *html, size_t html_len) nogil
|
|
cdef inline lxb_status_t _parse_html_fragment(self, char *html, size_t html_len) nogil
|
|
cdef int _parse_html(self, char *html, size_t html_len) except -1
|
|
cdef object cached_script_texts
|
|
cdef object cached_script_srcs
|
|
|
|
@staticmethod
|
|
cdef LexborHTMLParser from_document(lxb_html_document_t * document, bytes raw_html)
|
|
cdef inline lxb_html_document_t* main_document(self) nogil
|
|
|
|
cdef extern from "lexbor/dom/dom.h" nogil:
|
|
ctypedef enum lexbor_action_t:
|
|
LEXBOR_ACTION_OK = 0x00
|
|
LEXBOR_ACTION_STOP = 0x01
|
|
LEXBOR_ACTION_NEXT = 0x02
|
|
|
|
ctypedef lexbor_action_t (*lxb_dom_node_simple_walker_f)(lxb_dom_node_t *node, void *ctx)
|
|
|
|
ctypedef struct lxb_dom_character_data_t:
|
|
lxb_dom_node_t node
|
|
lexbor_str_t data
|
|
|
|
ctypedef struct lxb_dom_text_t:
|
|
lxb_dom_character_data_t char_data
|
|
|
|
ctypedef uintptr_t lxb_dom_attr_id_t
|
|
ctypedef struct lxb_dom_collection_t:
|
|
lexbor_array_t array
|
|
lxb_dom_document_t *document
|
|
|
|
ctypedef struct lxb_dom_attr_t:
|
|
lxb_dom_node_t node
|
|
|
|
lxb_dom_attr_id_t upper_name
|
|
lxb_dom_attr_id_t qualified_name
|
|
|
|
lexbor_str_t *value
|
|
|
|
lxb_dom_element_t *owner
|
|
|
|
lxb_dom_attr_t *next
|
|
lxb_dom_attr_t *prev
|
|
|
|
lxb_dom_collection_t * lxb_dom_collection_make(lxb_dom_document_t *document, size_t start_list_size)
|
|
lxb_char_t * lxb_dom_node_text_content(lxb_dom_node_t *node, size_t *len)
|
|
lxb_status_t lxb_dom_node_text_content_set(lxb_dom_node_t *node, const lxb_char_t *content, size_t len)
|
|
bint lxb_dom_node_is_empty(lxb_dom_node_t *node)
|
|
void lxb_dom_node_remove(lxb_dom_node_t *node)
|
|
void * lxb_dom_document_destroy_text_noi(lxb_dom_document_t *document, lxb_char_t *text)
|
|
lxb_dom_node_t * lxb_dom_document_root(lxb_dom_document_t *document)
|
|
lxb_dom_element_t * lxb_dom_interface_element(lxb_dom_node_t *node)
|
|
lxb_char_t * lxb_dom_element_qualified_name(lxb_dom_element_t *element, size_t *len)
|
|
lxb_dom_node_t * lxb_dom_node_destroy(lxb_dom_node_t *node)
|
|
lxb_dom_node_t * lxb_dom_node_destroy_deep(lxb_dom_node_t *root)
|
|
lxb_dom_attr_t * lxb_dom_element_first_attribute_noi(lxb_dom_element_t *element)
|
|
|
|
const lxb_char_t * lxb_dom_attr_local_name_noi(lxb_dom_attr_t *attr, size_t *len)
|
|
const lxb_char_t * lxb_dom_attr_value_noi(lxb_dom_attr_t *attr, size_t *len)
|
|
|
|
lxb_dom_attr_t * lxb_dom_element_set_attribute(lxb_dom_element_t *element,
|
|
const lxb_char_t *qualified_name, size_t qn_len,
|
|
const lxb_char_t *value, size_t value_len)
|
|
lxb_status_t lxb_dom_element_remove_attribute(lxb_dom_element_t *element,
|
|
const lxb_char_t *qualified_name, size_t qn_len)
|
|
lxb_dom_attr_t * lxb_dom_element_attr_by_name(lxb_dom_element_t *element,
|
|
const lxb_char_t *qualified_name, size_t length)
|
|
lxb_tag_id_t lxb_dom_node_tag_id_noi(lxb_dom_node_t *node)
|
|
lxb_dom_node_t * lxb_dom_document_import_node(lxb_dom_document_t *doc, lxb_dom_node_t *node, bint deep)
|
|
void lxb_dom_node_insert_after(lxb_dom_node_t *to, lxb_dom_node_t *node)
|
|
lxb_status_t lxb_dom_node_replace_all(lxb_dom_node_t *parent, lxb_dom_node_t *node)
|
|
void lxb_dom_node_insert_child(lxb_dom_node_t *to, lxb_dom_node_t *node)
|
|
void lxb_dom_node_insert_before(lxb_dom_node_t *to, lxb_dom_node_t *node)
|
|
void lxb_dom_node_insert_after(lxb_dom_node_t *to, lxb_dom_node_t *node)
|
|
lxb_dom_text_t * lxb_dom_document_create_text_node(lxb_dom_document_t *document, const lxb_char_t *data, size_t len)
|
|
void lxb_dom_node_simple_walk(lxb_dom_node_t *root, lxb_dom_node_simple_walker_f walker_cb, void *ctx)
|
|
lxb_dom_node_t* lxb_dom_node_clone(lxb_dom_node_t *node, bint deep)
|
|
|
|
|
|
cdef extern from "lexbor/dom/interfaces/element.h" nogil:
|
|
lxb_status_t lxb_dom_elements_by_tag_name(lxb_dom_element_t *root, lxb_dom_collection_t *collection,
|
|
const lxb_char_t *qualified_name, size_t len)
|
|
|
|
|
|
cdef extern from "lexbor/dom/interfaces/document.h" nogil:
|
|
lxb_html_document_t * lxb_html_document_destroy(lxb_html_document_t *document)
|
|
|
|
|
|
cdef extern from "lexbor/dom/collection.h" nogil:
|
|
size_t lxb_dom_collection_length_noi(lxb_dom_collection_t *col)
|
|
|
|
lxb_dom_element_t * lxb_dom_collection_element_noi(lxb_dom_collection_t *col, size_t idx)
|
|
lxb_dom_collection_t * lxb_dom_collection_destroy(lxb_dom_collection_t *col, bint self_destroy)
|
|
|
|
|
|
cdef extern from "lexbor/css/css.h" nogil:
|
|
ctypedef struct lxb_css_parser_t:
|
|
lxb_css_memory_t* memory
|
|
ctypedef struct lxb_css_syntax_tokenizer_t
|
|
ctypedef struct lxb_css_memory_t
|
|
|
|
lxb_css_parser_t * lxb_css_parser_create()
|
|
lxb_status_t lxb_css_parser_init(lxb_css_parser_t *parser, lxb_css_syntax_tokenizer_t *tkz)
|
|
lxb_css_parser_t * lxb_css_parser_destroy(lxb_css_parser_t *parser, bint self_destroy)
|
|
lxb_css_memory_t * lxb_css_memory_destroy(lxb_css_memory_t *memory, bint self_destroy)
|
|
void lxb_css_selector_list_destroy_memory(lxb_css_selector_list_t *list)
|
|
|
|
|
|
cdef extern from "lexbor/tag/tag.h" nogil:
|
|
ctypedef enum lxb_tag_id_enum_t:
|
|
LXB_TAG__UNDEF = 0x0000
|
|
LXB_TAG__END_OF_FILE = 0x0001
|
|
LXB_TAG__TEXT = 0x0002
|
|
LXB_TAG__DOCUMENT = 0x0003
|
|
LXB_TAG__EM_COMMENT = 0x0004
|
|
LXB_TAG__EM_DOCTYPE = 0x0005
|
|
LXB_TAG_A = 0x0006
|
|
LXB_TAG_ABBR = 0x0007
|
|
LXB_TAG_ACRONYM = 0x0008
|
|
LXB_TAG_ADDRESS = 0x0009
|
|
LXB_TAG_ALTGLYPH = 0x000a
|
|
LXB_TAG_ALTGLYPHDEF = 0x000b
|
|
LXB_TAG_ALTGLYPHITEM = 0x000c
|
|
LXB_TAG_ANIMATECOLOR = 0x000d
|
|
LXB_TAG_ANIMATEMOTION = 0x000e
|
|
LXB_TAG_ANIMATETRANSFORM = 0x000f
|
|
LXB_TAG_ANNOTATION_XML = 0x0010
|
|
LXB_TAG_APPLET = 0x0011
|
|
LXB_TAG_AREA = 0x0012
|
|
LXB_TAG_ARTICLE = 0x0013
|
|
LXB_TAG_ASIDE = 0x0014
|
|
LXB_TAG_AUDIO = 0x0015
|
|
LXB_TAG_B = 0x0016
|
|
LXB_TAG_BASE = 0x0017
|
|
LXB_TAG_BASEFONT = 0x0018
|
|
LXB_TAG_BDI = 0x0019
|
|
LXB_TAG_BDO = 0x001a
|
|
LXB_TAG_BGSOUND = 0x001b
|
|
LXB_TAG_BIG = 0x001c
|
|
LXB_TAG_BLINK = 0x001d
|
|
LXB_TAG_BLOCKQUOTE = 0x001e
|
|
LXB_TAG_BODY = 0x001f
|
|
LXB_TAG_BR = 0x0020
|
|
LXB_TAG_BUTTON = 0x0021
|
|
LXB_TAG_CANVAS = 0x0022
|
|
LXB_TAG_CAPTION = 0x0023
|
|
LXB_TAG_CENTER = 0x0024
|
|
LXB_TAG_CITE = 0x0025
|
|
LXB_TAG_CLIPPATH = 0x0026
|
|
LXB_TAG_CODE = 0x0027
|
|
LXB_TAG_COL = 0x0028
|
|
LXB_TAG_COLGROUP = 0x0029
|
|
LXB_TAG_DATA = 0x002a
|
|
LXB_TAG_DATALIST = 0x002b
|
|
LXB_TAG_DD = 0x002c
|
|
LXB_TAG_DEL = 0x002d
|
|
LXB_TAG_DESC = 0x002e
|
|
LXB_TAG_DETAILS = 0x002f
|
|
LXB_TAG_DFN = 0x0030
|
|
LXB_TAG_DIALOG = 0x0031
|
|
LXB_TAG_DIR = 0x0032
|
|
LXB_TAG_DIV = 0x0033
|
|
LXB_TAG_DL = 0x0034
|
|
LXB_TAG_DT = 0x0035
|
|
LXB_TAG_EM = 0x0036
|
|
LXB_TAG_EMBED = 0x0037
|
|
LXB_TAG_FEBLEND = 0x0038
|
|
LXB_TAG_FECOLORMATRIX = 0x0039
|
|
LXB_TAG_FECOMPONENTTRANSFER = 0x003a
|
|
LXB_TAG_FECOMPOSITE = 0x003b
|
|
LXB_TAG_FECONVOLVEMATRIX = 0x003c
|
|
LXB_TAG_FEDIFFUSELIGHTING = 0x003d
|
|
LXB_TAG_FEDISPLACEMENTMAP = 0x003e
|
|
LXB_TAG_FEDISTANTLIGHT = 0x003f
|
|
LXB_TAG_FEDROPSHADOW = 0x0040
|
|
LXB_TAG_FEFLOOD = 0x0041
|
|
LXB_TAG_FEFUNCA = 0x0042
|
|
LXB_TAG_FEFUNCB = 0x0043
|
|
LXB_TAG_FEFUNCG = 0x0044
|
|
LXB_TAG_FEFUNCR = 0x0045
|
|
LXB_TAG_FEGAUSSIANBLUR = 0x0046
|
|
LXB_TAG_FEIMAGE = 0x0047
|
|
LXB_TAG_FEMERGE = 0x0048
|
|
LXB_TAG_FEMERGENODE = 0x0049
|
|
LXB_TAG_FEMORPHOLOGY = 0x004a
|
|
LXB_TAG_FEOFFSET = 0x004b
|
|
LXB_TAG_FEPOINTLIGHT = 0x004c
|
|
LXB_TAG_FESPECULARLIGHTING = 0x004d
|
|
LXB_TAG_FESPOTLIGHT = 0x004e
|
|
LXB_TAG_FETILE = 0x004f
|
|
LXB_TAG_FETURBULENCE = 0x0050
|
|
LXB_TAG_FIELDSET = 0x0051
|
|
LXB_TAG_FIGCAPTION = 0x0052
|
|
LXB_TAG_FIGURE = 0x0053
|
|
LXB_TAG_FONT = 0x0054
|
|
LXB_TAG_FOOTER = 0x0055
|
|
LXB_TAG_FOREIGNOBJECT = 0x0056
|
|
LXB_TAG_FORM = 0x0057
|
|
LXB_TAG_FRAME = 0x0058
|
|
LXB_TAG_FRAMESET = 0x0059
|
|
LXB_TAG_GLYPHREF = 0x005a
|
|
LXB_TAG_H1 = 0x005b
|
|
LXB_TAG_H2 = 0x005c
|
|
LXB_TAG_H3 = 0x005d
|
|
LXB_TAG_H4 = 0x005e
|
|
LXB_TAG_H5 = 0x005f
|
|
LXB_TAG_H6 = 0x0060
|
|
LXB_TAG_HEAD = 0x0061
|
|
LXB_TAG_HEADER = 0x0062
|
|
LXB_TAG_HGROUP = 0x0063
|
|
LXB_TAG_HR = 0x0064
|
|
LXB_TAG_HTML = 0x0065
|
|
LXB_TAG_I = 0x0066
|
|
LXB_TAG_IFRAME = 0x0067
|
|
LXB_TAG_IMAGE = 0x0068
|
|
LXB_TAG_IMG = 0x0069
|
|
LXB_TAG_INPUT = 0x006a
|
|
LXB_TAG_INS = 0x006b
|
|
LXB_TAG_ISINDEX = 0x006c
|
|
LXB_TAG_KBD = 0x006d
|
|
LXB_TAG_KEYGEN = 0x006e
|
|
LXB_TAG_LABEL = 0x006f
|
|
LXB_TAG_LEGEND = 0x0070
|
|
LXB_TAG_LI = 0x0071
|
|
LXB_TAG_LINEARGRADIENT = 0x0072
|
|
LXB_TAG_LINK = 0x0073
|
|
LXB_TAG_LISTING = 0x0074
|
|
LXB_TAG_MAIN = 0x0075
|
|
LXB_TAG_MALIGNMARK = 0x0076
|
|
LXB_TAG_MAP = 0x0077
|
|
LXB_TAG_MARK = 0x0078
|
|
LXB_TAG_MARQUEE = 0x0079
|
|
LXB_TAG_MATH = 0x007a
|
|
LXB_TAG_MENU = 0x007b
|
|
LXB_TAG_META = 0x007c
|
|
LXB_TAG_METER = 0x007d
|
|
LXB_TAG_MFENCED = 0x007e
|
|
LXB_TAG_MGLYPH = 0x007f
|
|
LXB_TAG_MI = 0x0080
|
|
LXB_TAG_MN = 0x0081
|
|
LXB_TAG_MO = 0x0082
|
|
LXB_TAG_MS = 0x0083
|
|
LXB_TAG_MTEXT = 0x0084
|
|
LXB_TAG_MULTICOL = 0x0085
|
|
LXB_TAG_NAV = 0x0086
|
|
LXB_TAG_NEXTID = 0x0087
|
|
LXB_TAG_NOBR = 0x0088
|
|
LXB_TAG_NOEMBED = 0x0089
|
|
LXB_TAG_NOFRAMES = 0x008a
|
|
LXB_TAG_NOSCRIPT = 0x008b
|
|
LXB_TAG_OBJECT = 0x008c
|
|
LXB_TAG_OL = 0x008d
|
|
LXB_TAG_OPTGROUP = 0x008e
|
|
LXB_TAG_OPTION = 0x008f
|
|
LXB_TAG_OUTPUT = 0x0090
|
|
LXB_TAG_P = 0x0091
|
|
LXB_TAG_PARAM = 0x0092
|
|
LXB_TAG_PATH = 0x0093
|
|
LXB_TAG_PICTURE = 0x0094
|
|
LXB_TAG_PLAINTEXT = 0x0095
|
|
LXB_TAG_PRE = 0x0096
|
|
LXB_TAG_PROGRESS = 0x0097
|
|
LXB_TAG_Q = 0x0098
|
|
LXB_TAG_RADIALGRADIENT = 0x0099
|
|
LXB_TAG_RB = 0x009a
|
|
LXB_TAG_RP = 0x009b
|
|
LXB_TAG_RT = 0x009c
|
|
LXB_TAG_RTC = 0x009d
|
|
LXB_TAG_RUBY = 0x009e
|
|
LXB_TAG_S = 0x009f
|
|
LXB_TAG_SAMP = 0x00a0
|
|
LXB_TAG_SCRIPT = 0x00a1
|
|
LXB_TAG_SECTION = 0x00a2
|
|
LXB_TAG_SELECT = 0x00a3
|
|
LXB_TAG_SLOT = 0x00a4
|
|
LXB_TAG_SMALL = 0x00a5
|
|
LXB_TAG_SOURCE = 0x00a6
|
|
LXB_TAG_SPACER = 0x00a7
|
|
LXB_TAG_SPAN = 0x00a8
|
|
LXB_TAG_STRIKE = 0x00a9
|
|
LXB_TAG_STRONG = 0x00aa
|
|
LXB_TAG_STYLE = 0x00ab
|
|
LXB_TAG_SUB = 0x00ac
|
|
LXB_TAG_SUMMARY = 0x00ad
|
|
LXB_TAG_SUP = 0x00ae
|
|
LXB_TAG_SVG = 0x00af
|
|
LXB_TAG_TABLE = 0x00b0
|
|
LXB_TAG_TBODY = 0x00b1
|
|
LXB_TAG_TD = 0x00b2
|
|
LXB_TAG_TEMPLATE = 0x00b3
|
|
LXB_TAG_TEXTAREA = 0x00b4
|
|
LXB_TAG_TEXTPATH = 0x00b5
|
|
LXB_TAG_TFOOT = 0x00b6
|
|
LXB_TAG_TH = 0x00b7
|
|
LXB_TAG_THEAD = 0x00b8
|
|
LXB_TAG_TIME = 0x00b9
|
|
LXB_TAG_TITLE = 0x00ba
|
|
LXB_TAG_TR = 0x00bb
|
|
LXB_TAG_TRACK = 0x00bc
|
|
LXB_TAG_TT = 0x00bd
|
|
LXB_TAG_U = 0x00be
|
|
LXB_TAG_UL = 0x00bf
|
|
LXB_TAG_VAR = 0x00c0
|
|
LXB_TAG_VIDEO = 0x00c1
|
|
LXB_TAG_WBR = 0x00c2
|
|
LXB_TAG_XMP = 0x00c3
|
|
LXB_TAG__LAST_ENTRY = 0x00c4
|
|
|
|
|
|
cdef extern from "lexbor/selectors/selectors.h" nogil:
|
|
ctypedef struct lxb_css_selectors_t
|
|
|
|
ctypedef struct lxb_selectors_t
|
|
ctypedef struct lxb_css_selector_list_t
|
|
ctypedef struct lxb_css_selector_specificity_t
|
|
ctypedef lxb_status_t (*lxb_selectors_cb_f)(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx)
|
|
ctypedef enum lxb_selectors_opt_t:
|
|
LXB_SELECTORS_OPT_DEFAULT = 0x00
|
|
LXB_SELECTORS_OPT_MATCH_ROOT = 1 << 1
|
|
LXB_SELECTORS_OPT_MATCH_FIRST = 1 << 2
|
|
|
|
void lxb_selectors_opt_set(lxb_selectors_t *selectors, lxb_selectors_opt_t opt)
|
|
lxb_css_selectors_t * lxb_css_selectors_create()
|
|
lxb_status_t lxb_css_selectors_init(lxb_css_selectors_t *selectors)
|
|
void lxb_css_parser_selectors_set(lxb_css_parser_t *parser, lxb_css_selectors_t *selectors)
|
|
lxb_css_selector_list_t * lxb_css_selectors_parse(lxb_css_parser_t *parser, const lxb_char_t *data, size_t length)
|
|
lxb_css_selectors_t * lxb_css_selectors_destroy(lxb_css_selectors_t *selectors, bint self_destroy)
|
|
|
|
lxb_selectors_t * lxb_selectors_create()
|
|
lxb_status_t lxb_selectors_init(lxb_selectors_t *selectors)
|
|
lxb_selectors_t * lxb_selectors_destroy(lxb_selectors_t *selectors, bint self_destroy)
|
|
lxb_status_t lxb_selectors_find(lxb_selectors_t *selectors, lxb_dom_node_t *root,
|
|
lxb_css_selector_list_t *list, lxb_selectors_cb_f cb, void *ctx)
|