Meeseeks v0.3.1 Meeseeks.Document
A Meeseeks.Document
represents a flattened, queryable view of an HTML
document in which:
- The nodes (element, comment, or text) have been provided an id
- Parent-child relationships have been made explicit
Examples
The actual contents of a document become quickly unwieldly in iex, so
the inspect value of a document is always %Meeseeks.Document{...}
regardless of the content. The example below ignores this fact for
educational purposes.
iex> tuple_tree = {"html", [],
[{"head", [], []},
{"body", [],
[{"h1", [{"id", "greeting"}], ["Hello, World!"]},
{"div", [], [
{"p", [], ["1"]},
{"p", [], ["2"]},
{"p", [], ["3"]}]}]}]}
{...}
iex> document = Meeseeks.Document(tuple_tree)
%Meeseeks.Document{
id_counter: 12,
roots: [1],
nodes: %{1 => %Meeseeks.Document.Element{attributes: [], children: [3, 2],
id: 1, namespace: nil, parent: nil, tag: "html"},
2 => %Meeseeks.Document.Element{attributes: [], children: [], id: 2,
namespace: nil, parent: 1, tag: "head"},
3 => %Meeseeks.Document.Element{attributes: [], children: [6, 4], id: 3,
namespace: nil, parent: 1, tag: "body"},
4 => %Meeseeks.Document.Element{attributes: [{"id", "greeting"}],
children: [5], id: 4, namespace: nil, parent: 3, tag: "h1"},
5 => %Meeseeks.Document.Text{content: "Hello, World!", id: 5, parent: 4},
6 => %Meeseeks.Document.Element{attributes: [], children: [7, 9, 11],
id: 6, namespace: nil, parent: 3, tag: "div"},
7 => %Meeseeks.Document.Element{attributes: [], children: [8], id: 7,
namespace: nil, parent: 6, tag: "p"},
8 => %Meeseeks.Document.Text{content: "1", id: 8, parent: 7},
9 => %Meeseeks.Document.Element{attributes: [], children: [10], id: 9,
namespace: nil, parent: 6, tag: "p"},
10 => %Meeseeks.Document.Text{content: "2", id: 10, parent: 9},
11 => %Meeseeks.Document.Element{attributes: [], children: [12], id: 11,
namespace: nil, parent: 6, tag: "p"},
12 => %Meeseeks.Document.Text{content: "3", id: 12, parent: 11}}}
iex> Meeseeks.Document.children(document, 6)
[7, 9, 11]
iex> Meeseeks.Document.descendants(document, 6)
[7, 8, 9, 10, 11, 12]
Summary
Functions
Returns the node ids of node_id's children in the context of the document
Returns the node ids of node_id's descendants in the context of the document
Checks if a node_id refers to a Meeseeks.Document.Element
in the context
of the document
Returns the node referred to by node_id in the context of the document
Returns all of the document's nodes
Returns the nodes referred to by node_ids in the context of the document
Creates a document from a Meeseeks.TupleTree
Returns the node ids of the siblings that come after node_id in the context of the document
Returns the node ids of node_id's siblings in the context of the document
Types
Functions
Returns the node ids of node_id's children in the context of the document.
Returns all children, not just those that are Meeseeks.Document.Element
s.
Returns children in depth-first order.
Returns the node ids of node_id's descendants in the context of the document.
Returns all descendants, not just those that are Meeseeks.Document.Element
s.
Returns descendants in depth-first order.
Checks if a node_id refers to a Meeseeks.Document.Element
in the context
of the document.
Returns the node referred to by node_id in the context of the document.
Returns all of the document's nodes.
Returns nodes in depth-first order.
Returns the nodes referred to by node_ids in the context of the document.
Returns nodes in the order they are provided if node_ids are provided.
Creates a document from a Meeseeks.TupleTree
.
Indexes nodes in depth-first order.
Generally be called via Meeseeks.Parser.parse
, not directly.
Returns the node ids of the siblings that come after node_id in the context of the document.
Returns all of these siblings, not just those that are Meeseeks.Document.Element
s
Returns siblings in depth-first order.
Returns the node ids of node_id's siblings in the context of the document.
Returns all siblings, including node_id itself, and not just those
that are Meeseeks.Document.Element
s.
Returns siblings in depth-first order.