Extending Qwiratry

Choosing the right extension point

=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

Qwiratry v0.0.9

Declarative query and data-walking architecture for Raku, with transformers, molds, walkers, and I/O pipelines.

Authors

  • Tim Nelson

License

Dependencies

SlangifyImplementation::Loader:ver<0.0.9+>Glob::Grammar

Test Dependencies

Provides

  • Qwiratry
  • Qwiratry::Context
  • Qwiratry::Format
  • Qwiratry::Format::Base
  • Qwiratry::Format::CSVdemo
  • Qwiratry::Format::JSONdemo
  • Qwiratry::Location
  • Qwiratry::Location::Base
  • Qwiratry::Location::File
  • Qwiratry::Mold
  • Qwiratry::Mold::Compiler
  • Qwiratry::Mold::Registry
  • Qwiratry::Mold::Slang
  • Qwiratry::Operator::Capability
  • Qwiratry::Operator::IO
  • Qwiratry::Operator::MapReduce
  • Qwiratry::Operator::Navigation
  • Qwiratry::Operator::Set
  • Qwiratry::Query::Evaluator::Eager
  • Qwiratry::Query::Evaluator::Filter
  • Qwiratry::Query::Evaluator::Join
  • Qwiratry::Query::Evaluator::Lazy
  • Qwiratry::Query::Evaluator::MapReduce
  • Qwiratry::Query::Evaluator::Navigation
  • Qwiratry::Query::Evaluator::Relational
  • Qwiratry::Query::Evaluator::Row
  • Qwiratry::Query::Evaluator::Set
  • Qwiratry::Query::Evaluator::Union
  • Qwiratry::Query::Extract
  • Qwiratry::Query::NamedJoins
  • Qwiratry::Query::RelationCommon
  • Qwiratry::Query::Runtime
  • Qwiratry::Query::Selector
  • Qwiratry::Query::Slang
  • Qwiratry::Query::Specificity
  • Qwiratry::Query::Topic
  • Qwiratry::QueryIterator
  • Qwiratry::QueryMatch
  • Qwiratry::Setup
  • Qwiratry::Strategy
  • Qwiratry::Strategy::ControlSignal
  • Qwiratry::Strategy::FinishResult
  • Qwiratry::Strategy::RewriteSpec
  • Qwiratry::Strategy::Traversal
  • Qwiratry::Suggest
  • Qwiratry::Table
  • Qwiratry::Table::Schema
  • Qwiratry::Transformer
  • Qwiratry::Transformer::Copy
  • Qwiratry::Transformer::TreeRewrite
  • Qwiratry::Tree::Navigator
  • Qwiratry::Tree::Navigator::Base
  • Qwiratry::Tree::Navigator::Filesystem
  • Qwiratry::Tree::Navigator::Match
  • Qwiratry::Tree::Navigator::RakuAST
  • Qwiratry::Tree::Replace
  • Qwiratry::Walker
  • Qwiratry::Walker::Capabilities
  • Qwiratry::Walker::Factory
  • Qwiratry::Walker::Implementation::Table
  • Qwiratry::Walker::Implementation::Tree
  • Qwiratry::Walker::Master
  • Qwiratry::Walker::Providing
  • X::Qwiratry

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.