lol_html/parser/state_machine/syntax/text/script_data/
mod.rs

1#[macro_use]
2mod escaped;
3
4#[macro_use]
5mod double_escaped;
6
7define_state_group!(script_data_states_group = {
8
9    script_data_state {
10        memchr(b'<') => ( emit_text?; mark_tag_start; --> #[inline] script_data_less_than_sign_state )
11        eoc  => ( emit_text?; )
12        eof  => ( emit_text_and_eof?; )
13    }
14
15    script_data_less_than_sign_state {
16        b'/' => ( --> #[inline] script_data_end_tag_open_state )
17        b'!' => ( unmark_tag_start;  --> script_data_escape_start_state )
18        eof  => ( emit_text_and_eof?; )
19        _    => ( unmark_tag_start; emit_text?; reconsume in script_data_state )
20    }
21
22    script_data_end_tag_open_state {
23        alpha => ( create_end_tag; start_token_part; update_tag_name_hash; --> script_data_end_tag_name_state )
24        eof   => ( emit_text_and_eof?; )
25        _     => ( unmark_tag_start; emit_text?; reconsume in script_data_state )
26    }
27
28    script_data_end_tag_name_state {
29        whitespace => (
30            if is_appropriate_end_tag
31                ( finish_tag_name?; --> before_attribute_name_state )
32            else
33                ( unmark_tag_start; emit_text?; reconsume in script_data_state )
34        )
35
36        b'/' => (
37            if is_appropriate_end_tag
38                ( finish_tag_name?; --> self_closing_start_tag_state )
39            else
40                ( unmark_tag_start; emit_text?; reconsume in script_data_state )
41        )
42
43        b'>' => (
44            if is_appropriate_end_tag
45                ( finish_tag_name?; emit_tag?; --> dyn next_text_parsing_state )
46            else
47                ( unmark_tag_start; emit_text?; reconsume in script_data_state )
48        )
49
50        alpha => ( update_tag_name_hash; )
51        eof   => ( emit_text_and_eof?; )
52        _     => ( unmark_tag_start; emit_text?; reconsume in script_data_state )
53    }
54
55});