mirror of https://github.com/jkjoy/sunpeiwen.git
50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import { ValueContainer } from './Ast';
|
|
import { MatcherFunction } from './Types';
|
|
/**
|
|
* Simple wrapper around the matcher function.
|
|
* Recommended return type for builder plugins.
|
|
*
|
|
* @typeParam L - the type of HTML Element in the targeted DOM AST.
|
|
* @typeParam V - the type of associated values.
|
|
*/
|
|
export declare class Picker<L, V> {
|
|
private f;
|
|
/**
|
|
* Create new Picker object.
|
|
*
|
|
* @typeParam L - the type of HTML Element in the targeted DOM AST.
|
|
* @typeParam V - the type of associated values.
|
|
*
|
|
* @param f - the function that matches an element
|
|
* and returns all associated values.
|
|
*/
|
|
constructor(f: MatcherFunction<L, V>);
|
|
/**
|
|
* Run the selectors decision tree against one HTML Element
|
|
* and return all matched associated values
|
|
* along with selector specificities.
|
|
*
|
|
* Client code then decides how to further process them
|
|
* (sort, filter, etc).
|
|
*
|
|
* @param el - an HTML Element.
|
|
*
|
|
* @returns all associated values along with
|
|
* selector specificities for all matched selectors.
|
|
*/
|
|
pickAll(el: L): ValueContainer<V>[];
|
|
/**
|
|
* Run the selectors decision tree against one HTML Element
|
|
* and choose the value from the most specific matched selector.
|
|
*
|
|
* @param el - an HTML Element.
|
|
*
|
|
* @param preferFirst - option to define which value to choose
|
|
* when there are multiple matches with equal specificity.
|
|
*
|
|
* @returns the value from the most specific matched selector
|
|
* or `null` if nothing matched.
|
|
*/
|
|
pick1(el: L, preferFirst?: boolean): V | null;
|
|
}
|