46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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 }; | 
