net.html #

net/http is an HTML written in pure V.


import net.html

fn main() {
    doc := html.parse('<html><body><h1 class="title">Hello world!</h1></body></html>')
    tag := doc.get_tag('h1')[0] // <h1>Hello world!</h1>
    println( // h1
    println(tag.content) // Hello world!
    println(tag.attributes) // {'class':'title'}
    println(tag.str()) // <h1 class="title">Hello world!</h1>

More examples found on parser_test.v and html_test.v

fn parse #

fn parse(text string) DocumentObjectModel

parse parses and returns the DOM from the given text.

fn parse_file #

fn parse_file(filename string) DocumentObjectModel

parse_file parses and returns the DOM from the contents of a file.

struct DocumentObjectModel #

struct DocumentObjectModel {
	root           &Tag
	constructed    bool
	btree          BTree
	all_tags       []&Tag
	all_attributes map[string][]&Tag
	close_tags     map[string]bool
	attributes     map[string][]string
	tag_attributes map[string][][]&Tag
	tag_type       map[string][]&Tag
	debug_file     os.File

The W3C Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document.

fn (DocumentObjectModel) get_tag_by_attribute_value #

fn (mut dom DocumentObjectModel) get_tag_by_attribute_value(name string, value string) []&Tag

get_tag_by_attribute_value retrieves all the tags in the document that has the given attribute name and value.

fn (DocumentObjectModel) get_tag #

fn (dom DocumentObjectModel) get_tag(name string) []&Tag

get_tag retrieves all the tags in the document that has the given tag name.

fn (DocumentObjectModel) get_tag_by_attribute #

fn (dom DocumentObjectModel) get_tag_by_attribute(name string) []&Tag

get_tag_by_attribute retrieves all the tags in the document that has the given attribute name.

fn (DocumentObjectModel) get_root #

fn (dom DocumentObjectModel) get_root() &Tag

get_root returns the root of the document.

fn (DocumentObjectModel) get_tags #

fn (dom DocumentObjectModel) get_tags() []&Tag

get_tags returns all of the tags stored in the document.

struct Parser #

struct Parser {
	dom                DocumentObjectModel
	lexical_attributes LexicalAttributes = LexicalAttributes{
		current_tag: &Tag{}
	filename    string = 'direct-parse'
	initialized bool
	tags        []&Tag
	debug_file  os.File

Parser is responsible for reading the HTML strings and converting them into a DocumentObjectModel.

fn (Parser) add_code_tag #

fn (mut parser Parser) add_code_tag(name string)

This function is used to add a tag for the parser ignore it's content.
For example, if you have an html or XML with a custom tag, like <script>, using this function, like add_code_tag('script') will make all script tags content be jumped, so you still have its content, but will not confuse the parser with it's > or <.

fn (Parser) split_parse #

fn (mut parser Parser) split_parse(data string)

split_parse parses the HTML fragment

fn (Parser) parse_html #

fn (mut parser Parser) parse_html(data string)

parse_html parses the given HTML string

fn (Parser) finalize #

fn (mut parser Parser) finalize()

finalize finishes the parsing stage .

fn (Parser) get_dom #

fn (mut parser Parser) get_dom() DocumentObjectModel

get_dom returns the parser's current DOM representation.

struct Tag #

struct Tag {
pub mut:
	name               string
	content            string
	children           []&Tag
	attributes         map[string]string
	last_attribute     string
	parent             &Tag = 0
	position_in_parent int
	closed             bool
	close_type         CloseTagType = .in_name

Tag holds the information of an HTML tag.

fn (Tag) text #

fn (tag Tag) text() string

text returns the text contents of the tag.

fn (Tag) str #

fn (tag &Tag) str() string