Documentation
¶
Overview ¶
Package dom provides the fundamental DOM implementation for Gost-DOM.
The DOM includes a Node implementation, and it's fundamental special types, such as Element, Document, Text, etc; as well as events througn the [EventTarget] type.
Specific implementation of HTML element types, including the HTMLDocument, is in the html package.
Index ¶
- Variables
- func IsDOMError(err error) bool
- func IsInvalidCharacterError(err error) bool
- func IsNotImplementedError(err error) bool
- func IsSyntaxError(err error) bool
- type Attr
- type Attributes
- type ChangeEvent
- type ChangeEventType
- type CharacterData
- type ChildNode
- type Closer
- type Comment
- type DOMError
- type DOMTokenList
- func (l DOMTokenList) Add(tokens ...string) error
- func (l DOMTokenList) All() iter.Seq[string]
- func (l DOMTokenList) Contains(token string) bool
- func (l DOMTokenList) Item(index int) (string, bool)
- func (l DOMTokenList) Length() int
- func (l DOMTokenList) Remove(token ...string)
- func (l DOMTokenList) Replace(oldToken string, newToken string) bool
- func (l DOMTokenList) SetValue(val string)
- func (l DOMTokenList) Toggle(token string) bool
- func (l DOMTokenList) Value() string
- type Document
- type DocumentEvent
- type DocumentFragment
- type DocumentParentWindowdeprecated
- type DocumentType
- type Element
- type ElementContainer
- type ElementParent
- type GetRootNodeOptions
- type HTMLCollection
- type NamedNodeMap
- type Node
- type NodeList
- type NodeType
- type NonDocumentTypeChildNode
- type NotImplementedError
- type ParentNode
- type RootNode
- type ShadowRoot
- type Text
Constants ¶
This section is empty.
Variables ¶
var ErrDOM = DOMError{}
var ErrInvalidCharacter = fmt.Errorf("%w: invalid character", ErrDOM)
ErrSyntax is returned when adding a token containing whitespace to a DOMTokenList. This corresponds to a SyntaxError in JavaScript. This is a special case of a DOMException
var ErrSyntax = fmt.Errorf("%w: syntax error", ErrDOM)
ErrSyntax is returned when adding an empty string to a DOMTokenList. This corresponds to a SyntaxError in JavaScript. This is a special case of a DOMException
Functions ¶
func IsDOMError ¶
func IsInvalidCharacterError ¶
func IsNotImplementedError ¶
func IsSyntaxError ¶
Types ¶
type Attr ¶
type Attr interface {
Node
LocalName() string
Name() string
NamespaceURI() string
OwnerElement() Element
Prefix() string
Value() string
SetValue(val string)
// contains filtered or unexported methods
}
Attr is the interface corresponding to the Attr DOM node
type Attributes ¶
type Attributes []Attr
TODO: In the DOM, this is a `NamedNodeMap`. Is that useful in Go?
func (Attributes) Length ¶
func (attrs Attributes) Length() int
type ChangeEvent ¶ added in v0.5.1
type ChangeEventType ¶ added in v0.6.0
type ChangeEventType string
const ( ChangeEventChildList ChangeEventType = "childList" ChangeEventAttributes ChangeEventType = "attributes" ChangeEventCData ChangeEventType = "characterData" )
type CharacterData ¶
CharacterData is a "base type" for Text, Comment, and [CDataSection], and [ProcessingInstruction].
See also: https://developer.mozilla.org/en-US/docs/Web/API/CharacterData
type DOMError ¶
type DOMError struct {
// contains filtered or unexported fields
}
DOMError corresponds to DOMException in JavaScript
type DOMTokenList ¶
type DOMTokenList struct {
// contains filtered or unexported fields
}
func NewClassList ¶
func NewClassList(element Element) DOMTokenList
func NewDOMTokenList ¶ added in v0.2.0
func NewDOMTokenList(attribute string, element Element) DOMTokenList
func (DOMTokenList) Add ¶
func (l DOMTokenList) Add(tokens ...string) error
func (DOMTokenList) Contains ¶
func (l DOMTokenList) Contains(token string) bool
func (DOMTokenList) Length ¶
func (l DOMTokenList) Length() int
func (DOMTokenList) Remove ¶
func (l DOMTokenList) Remove(token ...string)
Remove implements DOMTokenList.Remove
see also: https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/remove
func (DOMTokenList) SetValue ¶
func (l DOMTokenList) SetValue(val string)
func (DOMTokenList) Toggle ¶
func (l DOMTokenList) Toggle(token string) bool
func (DOMTokenList) Value ¶
func (l DOMTokenList) Value() string
type Document ¶
type Document interface {
RootNode
ActiveElement() Element
Body() Element
Head() Element
CreateDocumentFragment() DocumentFragment
CreateAttribute(string) Attr
// Deprecated: Use CreateTextNode instead.
CreateText(data string) Text
CreateTextNode(data string) Text
CreateComment(data string) Comment
CreateDocumentType(name string) DocumentType
CreateElementNS(string, string) Element
CreateElement(string) Element
DocumentElement() Element
GetElementsByTagName(string) NodeList
ImportNode(Node, bool) Node
// contains filtered or unexported methods
}
func NewDocument ¶
func NewDocument(window DocumentParentWindow) Document
type DocumentEvent ¶
type DocumentEvent = string
const ( DocumentEventDOMContentLoaded DocumentEvent = "DOMContentLoaded" DocumentEventLoad DocumentEvent = "load" )
type DocumentFragment ¶
type DocumentFragment interface {
RootNode
}
func NewDocumentFragment ¶
func NewDocumentFragment(ownerDocument Document) DocumentFragment
type DocumentParentWindow
deprecated
type DocumentParentWindow interface {
event.EventTarget
ParseFragment(ownerDocument Document, reader io.Reader) (DocumentFragment, error)
}
Deprecated: This interface is part of an implementation details, and it was an oversight that it wasn't placed in an internal package. This will be removed from the public API in a future version
type DocumentType ¶
func NewDocumentType ¶
func NewDocumentType(name string, ownerDocument Document) DocumentType
type Element ¶
type Element interface {
ElementContainer
ChildNode
NonDocumentTypeChildNode
ClassList() DOMTokenList
Closest(string) (Element, error)
HasAttribute(name string) bool
GetAttribute(name string) (string, bool)
SetAttribute(name string, value string)
RemoveAttribute(name string)
GetAttributeNode(string) Attr
SetAttributeNode(Attr) (Attr, error)
GetElementsByTagName(string) NodeList
RemoveAttributeNode(Attr) (Attr, error)
Attributes() NamedNodeMap
InsertAdjacentElement(position string, element Element) (Element, error)
InsertAdjacentHTML(position string, text string) error
InsertAdjacentText(position string, text string) error
OuterHTML() string
SetOuterHTML(string) error
InnerHTML() string
SetInnerHTML(string) error
TagName() string
Namespace() string
Matches(string) (bool, error)
ID() string
SetID(string)
// contains filtered or unexported methods
}
An Element in the document. Can be either an [HTMLElement] or an [XMLElement]
func NewElement ¶
type ElementContainer ¶
type ElementContainer interface {
Node
ElementParent
}
ElementContainer defines common functionality in Document, DocumentFragment, and Element. While they all have Node as the direct base class in the DOM spec; they share a common set of functions operating on elements
type ElementParent ¶ added in v0.8.0
type ElementParent = ParentNode
ElementParent is a type alias for ParentNode that allows it to be embedded in other interfaces and types, without conflicting with the ParentNode method on Node
type GetRootNodeOptions ¶
type GetRootNodeOptions bool
type HTMLCollection ¶ added in v0.2.0
type NamedNodeMap ¶
type Node ¶
type Node interface {
entity.ObjectIder
event.EventTarget
Logger() log.Logger
AppendChild(node Node) (Node, error)
GetRootNode(options ...GetRootNodeOptions) Node
ChildNodes() NodeList
CloneNode(deep bool) Node
IsConnected() bool
// IsSameNode shouldn't be used and may be removed in a future version.
IsSameNode(Node) bool
Contains(node Node) bool
InsertBefore(newNode Node, referenceNode Node) (Node, error)
NodeName() string
NodeType() NodeType
OwnerDocument() Document
// Deprecated: Call ParentNode() instead.
Parent() Node
ParentNode() Node
ParentElement() Element
RemoveChild(node Node) (Node, error)
ReplaceChild(node, child Node) (Node, error)
NextSibling() Node
PreviousSibling() Node
FirstChild() Node
LastChild() Node
TextContent() string
SetTextContent(value string)
Connected()
IsEqualNode(Node) bool
// SetSelf must be called when creating instances of structs embedding a Node.
//
// If this is not called, the specialised type, which is itself a Node, will
// not be returned from functions that should have returned it, e.g., through
// ChildNodes. Only the embedded Node will be returned, and any specialised
// behaviour, including HTML output, will not work.
//
// This function is a workaround to solve a fundamental problem. The DOM
// specifies a model that is fundamentally object-oriented, with sub-classes
// overriding behaviour in super-classes. This is not a behaviour that Go has.
SetSelf(node Node)
Observe(observer) Closer
// contains filtered or unexported methods
}
type NodeType ¶
type NodeType int
const ( NodeTypeElement NodeType = 1 NodeTypeAttribute NodeType = 2 NodeTypeText NodeType = 3 NodeTypeCDataSection NodeType = 4 NodeTypeProcessingInstruction NodeType = 7 NodeTypeComment NodeType = 8 NodeTypeDocument NodeType = 9 NodeTypeDocumentType NodeType = 10 NodeTypeDocumentFragment NodeType = 11 )
type NonDocumentTypeChildNode ¶ added in v0.6.0
type NotImplementedError ¶
type NotImplementedError error
type ParentNode ¶ added in v0.2.0
type ParentNode interface {
Children() HTMLCollection
FirstElementChild() Element
LastElementChild() Element
ChildElementCount() int
/*
Note that the IDL operation accepts either string or node values. This interface
requires an explicit a [Node]. Use [Document.CreateText] to convert a string to
a Node.
See also: https://developer.mozilla.org/en-US/docs/Web/API/Element
*/
Prepend(...Node) error
/*
Note that the IDL operation accepts either string or node values. This interface
requires an explicit a [Node]. Use [Document.CreateText] to convert a string to
a Node.
See also: https://developer.mozilla.org/en-US/docs/Web/API/Element
*/
Append(...Node) error
/*
Note that the IDL operation accepts either string or node values. This interface
requires an explicit a [Node]. Use [Document.CreateText] to convert a string to
a Node.
See also: https://developer.mozilla.org/en-US/docs/Web/API/Element
*/
ReplaceChildren(...Node) error
QuerySelector(string) (Element, error)
QuerySelectorAll(string) (NodeList, error)
}
type RootNode ¶
type RootNode interface {
ElementContainer
GetElementById(string) Element
}
RootNode implements defines common behaviour between Document and DocumentFragment. While they both have Node as the direct base class in the DOM spec; they share a common set of functions operating on elements.
type ShadowRoot ¶
type ShadowRoot interface {
DocumentFragment
}