Extending Qwiratry
=begin rakudoc
Overview
Qwiratry has several extension points. Pick the guide based on what the new code changes: the representation being parsed or rendered, the location data comes from or goes to, the way data is traversed, or the behavior applied during traversal and transformation.
Extension Guide Index
| Guide | Use this when |
| Adding Formats | You are adding parse/render support for a data representation such as JSON, CSV, YAML, TOML, or a binary/text encoding. The data source itself is not changing. |
| Adding Tree Navigators | The existing tree walker should work, but Qwiratry needs to learn the children, parent, or attributes of a custom tree node model. |
| Adding Sources/Destinations | You are connecting pipelines to a place data comes from or goes to, such as local files, databases, HTTP APIs, object stores, queues, or search indexes. |
| Adding Walkers | You are adding traversal support for a new data model or execution domain, such as a graph, table-like source, logic database, document store, or other structure with its own query rules. |
| Adjusting Strategies | The existing walker can traverse the data, but you need custom behavior before elements, after elements, on matches, or when deciding what to follow. |
| Adjusting Transformers | You are changing mold execution, copying, rewriting, wrappers, validation, or other transformation behavior. |
| Other Extensions | Your work does not fit the focused guides, or you need shared extender-facing exception guidance. |
Rule Of Thumb
If it is a representation, extend
Qwiratry::Format.If it is a tree-shaped node model with ordinary tree traversal semantics, add a
TreeNavigator.If it is a place or connection, extend
Qwiratry::Location.If it changes traversal semantics for a data model, add or adjust a walker.
If it changes per-element behavior during traversal, use a strategy.
If it changes output construction from molds, use transformer extension points.
=end rakudoc