From b496cea5827165bd23a503231f94f708a976cad4 Mon Sep 17 00:00:00 2001
From: Shin'ya UEOKA <ueokande@i-beam.org>
Date: Thu, 3 Oct 2019 12:32:32 +0000
Subject: Make KeySequence class

---
 src/content/domains/KeySequence.ts | 60 ++++++++++++++++----------------------
 1 file changed, 25 insertions(+), 35 deletions(-)

(limited to 'src/content/domains')

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);
+  }
+}
-- 
cgit v1.2.3