TraversalJoin appends a relative traversal to an absolute traversal to produce a new absolute traversal.
(abs Traversal, rel Traversal)
| 25 | // TraversalJoin appends a relative traversal to an absolute traversal to |
| 26 | // produce a new absolute traversal. |
| 27 | func TraversalJoin(abs Traversal, rel Traversal) Traversal { |
| 28 | if abs.IsRelative() { |
| 29 | panic("first argument to TraversalJoin must be absolute") |
| 30 | } |
| 31 | if !rel.IsRelative() { |
| 32 | panic("second argument to TraversalJoin must be relative") |
| 33 | } |
| 34 | |
| 35 | ret := make(Traversal, len(abs)+len(rel)) |
| 36 | copy(ret, abs) |
| 37 | copy(ret[len(abs):], rel) |
| 38 | return ret |
| 39 | } |
| 40 | |
| 41 | // TraverseRel applies the receiving traversal to the given value, returning |
| 42 | // the resulting value. This is supported only for relative traversals, |