Skip to main content

GitAdapter

Struct GitAdapter 

Source
pub struct GitAdapter { /* private fields */ }
Expand description

A git repository, exposed as an arbor.

Implementations§

Source§

impl GitAdapter

Source

pub fn open(path: &Path) -> Result<Self, GitError>

Open the repository at path (any directory inside it).

Source

pub fn locator(&self, node: NodeId) -> String

A human-readable locator: /commits/<short>/path, /branches/<name>/path, …

Trait Implementations§

Source§

impl AstAdapter for GitAdapter

Source§

fn children_named(&self, node: NodeId, name: &str) -> Vec<NodeId>

Literal names under /commits go straight through rev-parse — unique prefixes, HEAD~2, v1.0^{} — with no enumeration.

Source§

fn traits(&self, node: NodeId) -> Vec<String>

<commit>, <branch>, <tag>, <tree>, <blob>.

Source§

fn property(&self, node: NodeId, name: &str) -> Option<Value>

Commit header fields (ref aliases answer for their commit).

Source§

fn provenance(&self, node: NodeId) -> Provenance

Data provenance: the repository path as the source; the nearest commit-backed ancestor’s author date as the instant (a tree entry answers “this repo, as of that commit” — the same instant ::date mints). The structural dirs and the root have no commit ancestor and answer source only. No dpid — the commit hash stays on ::hash / ::::short.

Source§

fn default_value(&self, node: NodeId) -> Option<Value>

A blob’s content (text, lossily decoded).

Source§

fn aliased_metadata(&self, _node: NodeId) -> &'static [&'static str]

Commits: ;;;short, ;;;n-parents, ;;;tags, ;;;n-tags. Entries: ;;;type, ;;;mode, ;;;size, ;;;hash. Ruling #29: this adapter’s property surface is closed — a commit object cannot grow fields — so its annotations answer at :: too. hash is in the list on purpose: commits expose the oid as a property and tree entries as metadata, but it is one concept — this node’s object id — and aliasing is what makes ::hash answer everywhere in the arbor instead of falling silently null on entries.

Source§

fn resolve( &self, node: NodeId, property: &str, _hint: Option<&str>, ) -> Option<NodeId>

::parent~> — the first parent (the hint is unused: the target is inherently a commit).

Every parent is an outgoing parent edge (merges fan out).

The commits whose parent is here (the children — served from the enumeration, so this loads the commit list).

Source§

fn root(&self) -> NodeId

The root node — the initial navigation context.
Source§

fn children(&self, node: NodeId) -> Vec<NodeId>

The tree children of node, in document order. Read more
Source§

fn name(&self, node: NodeId) -> Option<String>

The name of node — the label of its incoming tree edge. Read more
Source§

fn parent(&self, node: NodeId) -> Option<NodeId>

The parent of node, or None for the root.
Source§

fn metadata(&self, node: NodeId, key: &str) -> Option<Value>

Adapter-defined metadata — ::::key (a filesystem adapter’s size, modified, permissions, …). None if absent.
Source§

fn answers_to(&self, node: NodeId, name: &str) -> bool

Whether node answers to name as a literal spelling (ruling #30). The default is canonical equality. An adapter may declare per-node aliases — a social feed spelling a handle @alice while the stripped alice is the hop name — and the engine consults this wherever a literal name is matched, on every axis, so one override keeps /@alice and //@alice in agreement. :::name stays canonical (locators and reflection print it; an alias is a way in, never a way out), and name patterns (~(...), *) test the canonical name only.
Source§

fn external_ref( &self, _node: NodeId, _property: &str, _hint: Option<&str>, ) -> Option<String>

The external reference node’s property holds, if any: an adapter-defined identifier of a document outside this arbor — for html, the anchor’s absolute URL, a relative href joined against the document’s own URL. A #fragment part is the crossref within the target document and rides along (URI semantics). Consulted by ::property--> when in-document resolution misses: a mounted document with that identifier answers (the fragment’s element, else its root), an unmounted one lands among the run’s unresolved external references for the host’s acquisition loop. The engine itself never fetches.
Source§

fn resolve_fragment(&self, _node: NodeId, _fragment: &str) -> Option<NodeId>

The element fragment names inside the document node belongs to — html’s id lookup. The landing rung of a fragment-carrying external reference, once its document is mounted.
Source§

fn ref_property(&self, _node: NodeId) -> Option<String>

The property carrying node’s own reference, for the bare arrow (//a-->): an html anchor’s href, an iframe’s src. None for a node that references nothing.
Source§

fn ref_label(&self, _node: NodeId, _property: &str) -> Option<String>

The relation name a resolution edge from node via property carries — html’s rel attribute. None falls back to the property name as the edge label.
A property of the crosslink source --label--> target — the $-::prop read. Adapters whose edges carry data (a property graph’s relationship properties) override this; None if the edge is bare or unknown. Where parallel edges share source, label, and target, the adapter answers for one of them, consistently.
Source§

fn quantifier_bound(&self) -> usize

The quantifier bound N_max: the depth to which open-ended path quantifiers (+, *, {m,}) expand, and the ceiling of any explicit {m,n} (the effective upper bound is min(n, N_max)). An adapter whose natural structures run deep may raise it; the CLI overrides it per run (qua --quantifier-bound).
Source§

fn allow_shell(&self) -> bool

Whether the sh(...) pipeline stage may run external commands. False by default — query text stays inert data — and enabled per run by the CLI (qua --allow-shell) through the AllowShell wrapper.
Source§

fn invocation_instant(&self) -> Option<(i64, u32)>

The invocation instant now() denotes (spec: The Temporal Fragment, Determinism): one UTC timeline point bound by the runner BEFORE evaluation begins — evaluation itself never reads a clock. None by default (a library run is fully deterministic; now() reads as null); the CLI binds it at startup — pinnable with qua --now — through the WithNow wrapper.
Source§

fn unit_scale(&self, expr: &str) -> Option<(f64, String)>

The scale of a unit expression — (factor, canonical SI-base expansion) — for the unital reading’s criterion text (spec: The Quantital Fragment). The default answers from the engine’s frozen built-in table; a unit-aware adapter (kaiv) overrides it to include the mounted document’s own custom units, so [::range < '50kellicam'] resolves through the document’s .!units imports.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.