mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
net.html: fix text parsing for inline tags (#18085)
This commit is contained in:
parent
d086cc26cd
commit
0898f57995
@ -13,3 +13,20 @@ fn test_parse() {
|
||||
assert h1_tag.str() == '<h1 class="title" >Hello world!</h1>'
|
||||
// assert h1_tag.str() == '<h1 class="title">Hello world!</h1>'
|
||||
}
|
||||
|
||||
fn test_parse_inline_tags() {
|
||||
doc := parse('<html><body><p>before <span>in between</span> after</p></body></html>')
|
||||
tags := doc.get_tag('span')
|
||||
assert tags.len == 1
|
||||
|
||||
span_tag := tags[0]
|
||||
assert span_tag.str() == '<span>in between</span>'
|
||||
|
||||
p_tags := doc.get_tag('p')
|
||||
assert p_tags.len == 1
|
||||
|
||||
p_tag := p_tags[0]
|
||||
assert p_tag.str() == '<p>before <span>in between</span><text> after</text></p>'
|
||||
|
||||
assert p_tag.text() == 'before in between after'
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ mut:
|
||||
opened_code_type string
|
||||
line_count int
|
||||
outside_tag bool
|
||||
text_after_tag bool
|
||||
lexeme_builder strings.Builder = strings.new_builder(100)
|
||||
code_tags map[string]bool = {
|
||||
'script': true
|
||||
@ -221,10 +222,7 @@ pub fn (mut parser Parser) split_parse(data string) {
|
||||
if parser.lexical_attributes.current_tag.name.len > 1
|
||||
&& parser.lexical_attributes.current_tag.name[0] == 47
|
||||
&& !blank_string(temp_string) {
|
||||
parser.tags << &Tag{
|
||||
name: 'text'
|
||||
content: temp_string
|
||||
}
|
||||
parser.lexical_attributes.text_after_tag = true
|
||||
} else {
|
||||
parser.lexical_attributes.current_tag.content = temp_string // verify later who has this content
|
||||
}
|
||||
@ -234,6 +232,14 @@ pub fn (mut parser Parser) split_parse(data string) {
|
||||
parser.generate_tag()
|
||||
parser.lexical_attributes.open_tag = true
|
||||
parser.lexical_attributes.outside_tag = false
|
||||
|
||||
if parser.lexical_attributes.text_after_tag == true {
|
||||
parser.tags << &Tag{
|
||||
name: 'text'
|
||||
content: temp_string
|
||||
}
|
||||
parser.lexical_attributes.text_after_tag = false
|
||||
}
|
||||
} else {
|
||||
parser.lexical_attributes.lexeme_builder.write_u8(chr)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user