diff --git a/vlib/net/html/html_test.v b/vlib/net/html/html_test.v
index 51271cd9e5..2a518a2ddb 100644
--- a/vlib/net/html/html_test.v
+++ b/vlib/net/html/html_test.v
@@ -13,3 +13,20 @@ fn test_parse() {
assert h1_tag.str() == '
Hello world!
'
// assert h1_tag.str() == 'Hello world!
'
}
+
+fn test_parse_inline_tags() {
+ doc := parse('before in between after
')
+ tags := doc.get_tag('span')
+ assert tags.len == 1
+
+ span_tag := tags[0]
+ assert span_tag.str() == 'in between'
+
+ p_tags := doc.get_tag('p')
+ assert p_tags.len == 1
+
+ p_tag := p_tags[0]
+ assert p_tag.str() == 'before in between after
'
+
+ assert p_tag.text() == 'before in between after'
+}
diff --git a/vlib/net/html/parser.v b/vlib/net/html/parser.v
index 73997b6b9e..c54f1590fe 100644
--- a/vlib/net/html/parser.v
+++ b/vlib/net/html/parser.v
@@ -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)
}