diff options
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/domains/KeySequence.ts | 60 | ||||
-rw-r--r-- | src/content/repositories/KeymapRepository.ts | 4 | ||||
-rw-r--r-- | src/content/usecases/KeymapUseCase.ts | 4 |
3 files changed, 29 insertions, 39 deletions
diff --git a/src/content/domains/KeySequence.ts b/src/content/domains/KeySequence.ts index 61ceab1..abae61a 100644 --- a/src/content/domains/KeySequence.ts +++ b/src/content/domains/KeySequence.ts @@ -1,14 +1,9 @@ import Key from './Key'; export default class KeySequence { - private keys: Key[]; - - private constructor(keys: Key[]) { - this.keys = keys; - } - - static from(keys: Key[]): KeySequence { - return new KeySequence(keys); + constructor( + public readonly keys: Key[], + ) { } push(key: Key): number { @@ -31,34 +26,29 @@ export default class KeySequence { return true; } - getKeyArray(): Key[] { - return this.keys; - } -} - -export const fromMapKeys = (keys: string): KeySequence => { - const fromMapKeysRecursive = ( - remainings: string, mappedKeys: Key[], - ): Key[] => { - if (remainings.length === 0) { - return mappedKeys; - } - - let nextPos = 1; - if (remainings.startsWith('<')) { - let ltPos = remainings.indexOf('>'); - if (ltPos > 0) { - nextPos = ltPos + 1; + static fromMapKeys(keys: string): KeySequence { + const fromMapKeysRecursive = ( + remaining: string, mappedKeys: Key[], + ): Key[] => { + if (remaining.length === 0) { + return mappedKeys; } - } - return fromMapKeysRecursive( - remainings.slice(nextPos), - mappedKeys.concat([Key.fromMapKey(remainings.slice(0, nextPos))]) - ); - }; + let nextPos = 1; + if (remaining.startsWith('<')) { + let ltPos = remaining.indexOf('>'); + if (ltPos > 0) { + nextPos = ltPos + 1; + } + } - let data = fromMapKeysRecursive(keys, []); - return KeySequence.from(data); -}; + return fromMapKeysRecursive( + remaining.slice(nextPos), + mappedKeys.concat([Key.fromMapKey(remaining.slice(0, nextPos))]) + ); + }; + let data = fromMapKeysRecursive(keys, []); + return new KeySequence(data); + } +} diff --git a/src/content/repositories/KeymapRepository.ts b/src/content/repositories/KeymapRepository.ts index d7b5b7d..4463678 100644 --- a/src/content/repositories/KeymapRepository.ts +++ b/src/content/repositories/KeymapRepository.ts @@ -7,7 +7,7 @@ export default interface KeymapRepository { clear(): void; } -let current: KeySequence = KeySequence.from([]); +let current: KeySequence = new KeySequence([]); export class KeymapRepositoryImpl { @@ -17,6 +17,6 @@ export class KeymapRepositoryImpl { } clear(): void { - current = KeySequence.from([]); + current = new KeySequence([]); } } diff --git a/src/content/usecases/KeymapUseCase.ts b/src/content/usecases/KeymapUseCase.ts index d0d039a..0f654c8 100644 --- a/src/content/usecases/KeymapUseCase.ts +++ b/src/content/usecases/KeymapUseCase.ts @@ -5,7 +5,7 @@ import AddonEnabledRepository from '../repositories/AddonEnabledRepository'; import * as operations from '../../shared/operations'; import { Keymaps } from '../../shared/Settings'; import Key from '../domains/Key'; -import KeySequence, * as keySequenceUtils from '../domains/KeySequence'; +import KeySequence from '../domains/KeySequence'; type KeymapEntityMap = Map<KeySequence, operations.Operation>; @@ -71,7 +71,7 @@ export default class KeymapUseCase { }; let entries = Object.entries(keymaps).map((entry) => { return [ - keySequenceUtils.fromMapKeys(entry[0]), + KeySequence.fromMapKeys(entry[0]), entry[1], ]; }) as [KeySequence, operations.Operation][]; |