@atomist/sdm
Version:
Atomist Software Delivery Machine SDK
47 lines • 1.51 kB
TypeScript
import { Mapping } from "./Mapping";
/**
* Style of logical composition
*/
export declare enum PredicateMappingCompositionStyle {
And = "and",
Or = "or",
Not = "not"
}
/**
* Mapping to a boolean
*/
export interface PredicateMapping<F> extends Mapping<F, boolean> {
/**
* If this predicate has internal structure,
* the components and how they are applied.
* For internal and tooling use.
*/
readonly structure?: {
components: Array<PredicateMapping<F>>;
readonly compositionStyle: PredicateMappingCompositionStyle;
};
}
/**
* Implemented by types whose behavior is potentially explicable by a single PredicateMapping
*/
export interface Predicated<F> {
/**
* The test for the contribution. Contributions may be
* applied in various ways.
*/
test?: PredicateMapping<F>;
}
/**
* Function that can visit a PredicateMappings.
* @return whether to visit the mapping's subcomponents, if any
*/
export declare type PredicateMappingVisitor<F> = (pm: PredicateMapping<F>) => boolean;
/**
* Visit the PredicateMappings, returning whether to continue
* @param pm predicate mapping to visit. Always visits root,
* and any subcomponents as long as the visitor returns true
* @param v visitor
* @return {boolean} whether to visit the mapping's structure, if any
*/
export declare function visitPredicateMappings<F>(pm: PredicateMapping<F>, v: PredicateMappingVisitor<F>): void;
//# sourceMappingURL=PredicateMapping.d.ts.map