php-internal-docs
8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
text.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2018-2023 Alexander Borisov
3
*
4
* Author: Alexander Borisov <borisov@lexbor.com>
5
*/
6
7
#include "
lexbor/html/tree/insertion_mode.h
"
8
#include "
lexbor/html/tree/open_elements.h
"
9
#include "
lexbor/html/tree/open_elements.h
"
10
#include "
lexbor/html/interfaces/style_element.h
"
11
12
13
bool
14
lxb_html_tree_insertion_mode_text
(
lxb_html_tree_t
*tree,
15
lxb_html_token_t
*token)
16
{
17
lxb_dom_node_t
*node;
18
lxb_html_style_element_t
*style;
19
20
switch
(token->
tag_id
) {
21
case
LXB_TAG__TEXT
: {
22
tree->
status
=
lxb_html_tree_insert_character
(tree, token,
NULL
);
23
if
(tree->
status
!=
LXB_STATUS_OK
) {
24
return
lxb_html_tree_process_abort
(tree);
25
}
26
27
break
;
28
}
29
30
case
LXB_TAG__END_OF_FILE
: {
31
lxb_dom_node_t
*node;
32
33
lxb_html_tree_parse_error
(tree, token,
34
LXB_HTML_RULES_ERROR_UNENOFFI
);
35
36
node =
lxb_html_tree_current_node
(tree);
37
38
if
(
lxb_html_tree_node_is
(node,
LXB_TAG_SCRIPT
)) {
39
/* TODO: mark the script element as "already started" */
40
}
41
42
lxb_html_tree_open_elements_pop
(tree);
43
44
tree->
mode
= tree->
original_mode
;
45
46
return
false
;
47
}
48
49
/* TODO: need to implement */
50
case
LXB_TAG_SCRIPT
:
51
lxb_html_tree_open_elements_pop
(tree);
52
53
tree->
mode
= tree->
original_mode
;
54
55
break
;
56
57
case
LXB_TAG_STYLE
:
58
node =
lxb_html_tree_open_elements_pop
(tree);
59
60
tree->
mode
= tree->
original_mode
;
61
62
if
(!tree->
document
->
css_init
) {
63
break
;
64
}
65
66
style =
lxb_html_interface_style
(node);
67
68
tree->
status
=
lxb_html_style_element_parse
(style);
69
if
(tree->
status
!=
LXB_STATUS_OK
) {
70
return
lxb_html_tree_process_abort
(tree);
71
}
72
73
tree->
status
=
lxb_html_document_stylesheet_add
(tree->
document
,
74
style->
stylesheet
);
75
if
(tree->
status
!=
LXB_STATUS_OK
) {
76
return
lxb_html_tree_process_abort
(tree);
77
}
78
79
break
;
80
81
default
:
82
lxb_html_tree_open_elements_pop
(tree);
83
84
tree->
mode
= tree->
original_mode
;
85
86
break
;
87
}
88
89
return
true
;
90
}
LXB_STATUS_OK
@ LXB_STATUS_OK
Definition
base.h:49
lxb_dom_node_t
struct lxb_dom_node lxb_dom_node_t
Definition
interface.h:38
NULL
#define NULL
Definition
gdcache.h:45
lxb_html_tree_t
struct lxb_html_tree lxb_html_tree_t
Definition
base.h:28
lxb_html_interface_style
#define lxb_html_interface_style(obj)
Definition
interface.h:77
lxb_html_style_element_t
struct lxb_html_style_element lxb_html_style_element_t
Definition
interface.h:152
LXB_HTML_RULES_ERROR_UNENOFFI
@ LXB_HTML_RULES_ERROR_UNENOFFI
Definition
error.h:78
insertion_mode.h
lxb_html_document_stylesheet_add
lxb_status_t lxb_html_document_stylesheet_add(lxb_html_document_t *document, lxb_css_stylesheet_t *sst)
Definition
document.c:482
lxb_html_tree_insertion_mode_text
bool lxb_html_tree_insertion_mode_text(lxb_html_tree_t *tree, lxb_html_token_t *token)
Definition
text.c:14
lxb_html_tree_process_abort
bool lxb_html_tree_process_abort(lxb_html_tree_t *tree)
Definition
tree.c:224
lxb_html_tree_insert_character
lxb_status_t lxb_html_tree_insert_character(lxb_html_tree_t *tree, lxb_html_token_t *token, lxb_dom_node_t **ret_node)
Definition
tree.c:669
lxb_html_tree_parse_error
void lxb_html_tree_parse_error(lxb_html_tree_t *tree, lxb_html_token_t *token, lxb_html_tree_error_id_t id)
Definition
tree.c:237
open_elements.h
lxb_html_tree_open_elements_pop
lxb_inline lxb_dom_node_t * lxb_html_tree_open_elements_pop(lxb_html_tree_t *tree)
Definition
open_elements.h:87
lxb_html_document::css_init
bool css_init
Definition
document.h:66
lxb_html_style_element::stylesheet
lxb_css_stylesheet_t * stylesheet
Definition
style_element.h:20
lxb_html_token_t
Definition
token.h:33
lxb_html_token_t::tag_id
lxb_tag_id_t tag_id
Definition
token.h:48
lxb_html_tree::original_mode
lxb_html_tree_insertion_mode_f original_mode
Definition
tree.h:63
lxb_html_tree::status
lxb_status_t status
Definition
tree.h:66
lxb_html_tree::mode
lxb_html_tree_insertion_mode_f mode
Definition
tree.h:62
lxb_html_tree::document
lxb_html_document_t * document
Definition
tree.h:42
lxb_html_style_element_parse
lxb_status_t lxb_html_style_element_parse(lxb_html_style_element_t *element)
Definition
style_element.c:47
style_element.h
LXB_TAG__END_OF_FILE
@ LXB_TAG__END_OF_FILE
Definition
const.h:25
LXB_TAG_SCRIPT
@ LXB_TAG_SCRIPT
Definition
const.h:185
LXB_TAG_STYLE
@ LXB_TAG_STYLE
Definition
const.h:195
LXB_TAG__TEXT
@ LXB_TAG__TEXT
Definition
const.h:26
lxb_html_tree_current_node
lxb_inline lxb_dom_node_t * lxb_html_tree_current_node(lxb_html_tree_t *tree)
Definition
tree.h:286
lxb_html_tree_node_is
lxb_inline bool lxb_html_tree_node_is(lxb_dom_node_t *node, lxb_tag_id_t tag_id)
Definition
tree.h:280
ext
dom
lexbor
lexbor
html
tree
insertion_mode
text.c
Generated on Sat Aug 23 2025 01:46:06 for php-internal-docs by
1.13.2