package
0.0.0-20230623162953-994bc1c10b84
Repository: https://github.com/viant/dm.git
Documentation: pkg.go.dev
# README
Usage
In order to change to update the DOM, you need to create DOM
representation. DOM
representation can be shared across the app:
template := []byte("<html>...</html>")
dom, err := html.New(template)
// handle error
You can specify some options while creating DOM
:
BufferSize
- initial buffer size for eachDOM
session,int
wrapper*Filters
- represents allowed tags and attributes
bufferSize := option.BufferSize(1024)
filter := option.NewFilters(
option.NewFilter("div", "class"),
option.NewFilter("img", "src"),
)
dom, err := option.New(template, bufferSize, filter)
// handle error
Then you need to create a Document
:
document := dom.Document()
documentWithBuffer := dom.Document(option.NewBuffer(1024))
If you don't provide a Buffer
, will be created one with BufferSize
specified while creating DOM
Now you can get/set Attribute, get/set InnerHTML by using selectors.
Selectors order: Tag
-> Attribute
-> Attribute value
. Selectors are optional, it means if you don't specify Attribute
only
tag will be checked.
Usage:
template := `
<!DOCTYPE html>
<html lang="en">
<head>
<title>Index</title>
</head>
<body>
<p class="[class]">Classes</p>
<img src="[src]" alt="alt"/>
<div hidden="[hidden]">This is div inner</div>
</body>
</html>`
dom, err := New(template)
if err != nil {
fmt.Println(err)
return
}
filter := option.NewFilters(
option.NewFilter("div", "hidden"),
option.NewFilter("img", "src"),
)
bufferSize := option.BufferSize(1024)
document := dom.Document(filter, bufferSize)
elemIt := document.Select("div", "hidden")
for elemIt.Has() {
elem, _ := elemIt.Next()
fmt.Println(elem.InnerHTML())
_ = elem.SetInnerHTML("This will be new InnerHTML")
attribute, ok := elem.MatchAttribute("hidden", "[hidden]")
if ok {
attribute.Set("true")
fmt.Println(attribute.Value())
}
}
attributeIt := document.SelectAttributes("img", "src", "[src]")
for attributeIt.Has() {
attribute, _ := attributeIt.Next()
attribute.Set("abcdef.jpg")
fmt.Println(attribute.Value())
}
fmt.Println(document.Render())
// Output:
//This is div inner
//true
//abcdef.jpg
//
//<!DOCTYPE html>
//<html lang="en">
//<head>
// <title>Index</title>
//</head>
//<body>
// <p class="[class]">Classes</p>
// <img src="abcdef.jpg" alt="alt"/>
// <div hidden="true">This will be new InnerHTML</div>
//</body>
//</html>
Options
Options supported:
*Buffer
- you can reuse Buffers by passing one while creating theDOM
usingVirutalDOM.DOM()
manually, or by usingPool
created viaNewPool(size int, dom *VirtualDOM)
# Structs
No description provided by the author
No description provided by the author
Buffer hold the current DOM value.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Pool represents sharable Document instances.