astro-ghostcms/.pnpm-store/v3/files/a3/963efa2b82354f5db0e346993f8...

49 lines
1.5 KiB
Plaintext

import { EmojiItemRegex, SetEmojiItemRegex } from './base.js';
type SlicePosition = 'start' | 'end';
type SliceValue = number | 'full';
/**
* Slice of sequence
*/
interface SimilarRegexItemSlice {
index: number;
slice: SliceValue;
}
/**
* Similar sequence
*/
interface SimilarRegexItemSequence {
type: SlicePosition;
slices: SimilarRegexItemSlice[];
}
/**
* Result if findSimilarRegexItemSequences()
*/
interface SimilarRegexItemSequenceResult {
score: number;
sequences: SimilarRegexItemSequence[];
}
/**
* Find similar item sequences
*
* Returns sequence(s) with highest score. Only one of results should be
* applied to items. If there are multiple sequences, clone items list,
* attempt to apply each sequence, run further optimisations on each fork
* and see which one returns better result.
*
* Returns undefined if no common sequences found
*/
declare function findSimilarRegexItemSequences(items: EmojiItemRegex[]): SimilarRegexItemSequenceResult | undefined;
/**
* Merge similar sequences
*
* Accepts callback to run optimisation on created subset
*/
declare function mergeSimilarRegexItemSequences(items: EmojiItemRegex[], merge: SimilarRegexItemSequence, optimise?: (set: SetEmojiItemRegex) => EmojiItemRegex): EmojiItemRegex[];
/**
* Merge similar items
*/
declare function mergeSimilarItemsInSet(set: SetEmojiItemRegex): EmojiItemRegex;
export { findSimilarRegexItemSequences, mergeSimilarItemsInSet, mergeSimilarRegexItemSequences };