Skip to content

Commit

Permalink
net.html: fix text parsing for inline tags (#18085)
Browse files Browse the repository at this point in the history
  • Loading branch information
Casper64 committed Apr 30, 2023
1 parent d086cc2 commit 0898f57
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
17 changes: 17 additions & 0 deletions vlib/net/html/html_test.v
Expand Up @@ -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 changes: 10 additions & 4 deletions vlib/net/html/parser.v
Expand Up @@ -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
Expand Down Expand Up @@ -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
}
Expand All @@ -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)
}
Expand Down

0 comments on commit 0898f57

Please sign in to comment.