1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /**
- * Specificity arrays always have 4 numbers (integers) for quick comparison
- * comparing from left to right, the next number only has to be checked if
- * two numbers of the same index are equal.
- */
- export type SpecificityArray = [number, number, number, number];
- /**
- * A result of parsing a selector into an array of parts.
- * Calculating a specificity array is a matter of summing
- * over all the parts and adding the values to the right
- * bucket in a specificity array.
- *
- * @interface Part
- */
- export interface Part {
- selector: string;
- type: 'a' | 'b' | 'c';
- index: number;
- length: number;
- }
- /**
- * Returned by the calculate function. Represents the results
- * of parsing and calculating the specificity of a selector.
- *
- * @interface Specificity
- */
- export interface Specificity {
- selector: string;
- specificity: string;
- specificityArray: SpecificityArray;
- parts: Array<Part>;
- }
- /**
- * Calculates the specificity for the given selector string.
- * If the string contains a comma, each selector will be parsed
- * separately.
- *
- * @returns A list of specificity objects one for each selector in the
- * selector string.
- */
- export function calculate(selector: string): Array<Specificity>;
- /**
- * Compares two selectors. If a string, the string cannot contain a comma.
- *
- * @returns A value less than 0 if selector a is less specific than selector b.
- * A value more than 0 if selector a is more specific than selector b.
- * 0 if the two selectors have the same specificity.
- */
- export function compare(a: string | SpecificityArray, b: string | SpecificityArray): -1 | 0 | 1;
|