p1: /v2/scrape, /v1/fetch, auth, CLI, contract tests
Single Fetcher.Fetch on the Guard that holds DenyPrefixes. skipTlsVerification is ignored. No 502. keys add writes the secret only to --out. Release binary has no -test-allow-prefix.
This commit is contained in:
+108
@@ -0,0 +1,108 @@
|
||||
package dom
|
||||
|
||||
import "golang.org/x/net/html"
|
||||
|
||||
// Warning: It is not meant to be called directly and may change signature from release to release!
|
||||
func UNSTABLE_initGetNeighbor(
|
||||
firstChildFunc func(node *html.Node) *html.Node,
|
||||
prevNextFunc func(node *html.Node) *html.Node,
|
||||
goUpUntilFunc func(node *html.Node) bool,
|
||||
) func(*html.Node) *html.Node {
|
||||
|
||||
return func(node *html.Node) *html.Node {
|
||||
// First look at the children
|
||||
if child := firstChildFunc(node); child != nil {
|
||||
return child
|
||||
}
|
||||
|
||||
// Otherwise my prev/next sibling
|
||||
if sibling := prevNextFunc(node); sibling != nil {
|
||||
return sibling
|
||||
}
|
||||
|
||||
for {
|
||||
// Finally, continously go upwards until we find an element with a sibling
|
||||
node = node.Parent
|
||||
if node == nil {
|
||||
// We reached the top
|
||||
return nil
|
||||
}
|
||||
|
||||
if goUpUntilFunc(node) {
|
||||
// Don't go too far up...
|
||||
return nil
|
||||
}
|
||||
|
||||
sibling := prevNextFunc(node)
|
||||
if sibling != nil {
|
||||
return sibling
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
|
||||
|
||||
var goUpForever = func(node *html.Node) bool { return false }
|
||||
var skipFirstChild = func(node *html.Node) *html.Node { return nil }
|
||||
|
||||
func GetPrevNeighborNode(node *html.Node) *html.Node {
|
||||
return UNSTABLE_initGetNeighbor(
|
||||
FirstChildNode,
|
||||
PrevSiblingNode,
|
||||
goUpForever,
|
||||
)(node)
|
||||
}
|
||||
func GetPrevNeighborElement(node *html.Node) *html.Node {
|
||||
return UNSTABLE_initGetNeighbor(
|
||||
FirstChildElement,
|
||||
PrevSiblingElement,
|
||||
goUpForever,
|
||||
)(node)
|
||||
}
|
||||
func GetPrevNeighborNodeExcludingOwnChild(node *html.Node) *html.Node {
|
||||
return UNSTABLE_initGetNeighbor(
|
||||
skipFirstChild,
|
||||
PrevSiblingNode,
|
||||
goUpForever,
|
||||
)(node)
|
||||
}
|
||||
func GetPrevNeighborElementExcludingOwnChild(node *html.Node) *html.Node {
|
||||
return UNSTABLE_initGetNeighbor(
|
||||
skipFirstChild,
|
||||
PrevSiblingElement,
|
||||
goUpForever,
|
||||
)(node)
|
||||
}
|
||||
|
||||
// - - - - - - - - //
|
||||
|
||||
func GetNextNeighborNode(node *html.Node) *html.Node {
|
||||
return UNSTABLE_initGetNeighbor(
|
||||
FirstChildNode,
|
||||
NextSiblingNode,
|
||||
goUpForever,
|
||||
)(node)
|
||||
}
|
||||
func GetNextNeighborElement(node *html.Node) *html.Node {
|
||||
return UNSTABLE_initGetNeighbor(
|
||||
FirstChildElement,
|
||||
NextSiblingElement,
|
||||
goUpForever,
|
||||
)(node)
|
||||
}
|
||||
func GetNextNeighborNodeExcludingOwnChild(node *html.Node) *html.Node {
|
||||
return UNSTABLE_initGetNeighbor(
|
||||
skipFirstChild,
|
||||
NextSiblingNode,
|
||||
goUpForever,
|
||||
)(node)
|
||||
}
|
||||
func GetNextNeighborElementExcludingOwnChild(node *html.Node) *html.Node {
|
||||
return UNSTABLE_initGetNeighbor(
|
||||
skipFirstChild,
|
||||
NextSiblingElement,
|
||||
goUpForever,
|
||||
)(node)
|
||||
}
|
||||
Reference in New Issue
Block a user