Skip to content

Commit 3a0df96

Browse files
committed
rule の name を optional にする
1 parent 8d5c2a3 commit 3a0df96

24 files changed

+908
-2338
lines changed

src/assets/rules/jis_kana.json

Lines changed: 189 additions & 589 deletions
Large diffs are not rendered by default.

src/assets/rules/naginatashiki_v15.json

Lines changed: 514 additions & 1445 deletions
Large diffs are not rendered by default.

src/assets/rules/nicola.json

Lines changed: 95 additions & 191 deletions
Large diffs are not rendered by default.

src/browser/osKeyboardLayout.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { KeyboardLayout } from "../core/keyboardLayout";
33
import {
44
findMatchedKeyboardLayout,
55
loadPresetKeyboardLayoutQwertyJis
6-
} from "../impl/defaultKeyboardLayout";
6+
} from "../impl/presetKeyboardLayout";
77

88
export async function detectKeyboardLayout(
99
window: any

src/core/builderKanaGraph.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { RuleStroke } from "./ruleStroke";
66
import { VirtualKeys } from "./virtualKey";
77

88
const defaultRule = new Rule(
9-
"test-rule",
109
[
1110
new RuleEntry(
1211
[new RuleStroke(VirtualKeys.A, AndModifier.empty)],

src/core/inputEvent.test.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { StrokeEdge, StrokeNode } from "./builderStrokeGraph";
33
import { InputEvent, InputStroke, matchCandidateEdge } from "./inputEvent";
44
import { KeyboardState } from "./keyboardState";
55
import { AndModifier } from "./modifier";
6-
import { Rule } from "./rule";
76
import { RuleStroke } from "./ruleStroke";
87
import { VirtualKeys } from "./virtualKey";
98

@@ -14,7 +13,6 @@ test("シンプルな入力で matched", () => {
1413

1514
const dummyNode1 = new StrokeNode(0, [], []);
1615
const dummyNode2 = new StrokeNode(0, [], []);
17-
const rule = new Rule("dummy-rule", [], (v) => v);
1816
const edge = new StrokeEdge(
1917
new RuleStroke(VirtualKeys.A, AndModifier.empty),
2018
dummyNode1,
@@ -31,7 +29,6 @@ test("シンプルな入力で none", () => {
3129

3230
const dummyNode1 = new StrokeNode(0, [], []);
3331
const dummyNode2 = new StrokeNode(0, [], []);
34-
const rule = new Rule("dummy-rule", [], (v) => v);
3532
const edge = new StrokeEdge(
3633
new RuleStroke(VirtualKeys.A, AndModifier.empty),
3734
dummyNode1,
@@ -47,7 +44,6 @@ test("シフトキー単打で none", () => {
4744

4845
const dummyNode1 = new StrokeNode(0, [], []);
4946
const dummyNode2 = new StrokeNode(0, [], []);
50-
const rule = new Rule("dummy-rule", [], (v) => v);
5147
const edge = new StrokeEdge(
5248
new RuleStroke(VirtualKeys.A, AndModifier.empty),
5349
dummyNode1,

src/core/rule.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,14 @@ nk/ん/k
8787
export class Rule {
8888
/**
8989
*
90-
* @param name 入力ルールの名前
9190
* @param entries 入力ルールのエントリ
9291
* @param normalize 入力ワードのかな文字を正規化する関数
92+
* @param name 入力ルールの名前
9393
*/
9494
constructor(
95-
readonly name: string,
9695
readonly entries: RuleEntry[],
9796
readonly normalize: normalizerFunc,
97+
readonly name: string = "",
9898
) {
9999
this.entries = extendCommonPrefixOverlappedEntriesDeeply(entries);
100100

src/core/ruleMerger.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
11
import { Rule, RuleEntry } from "./rule";
22

3-
// entires と modifierGroups を結合した新しい Rule を返す
3+
// entries を結合した新しい Rule を返す
44
export function mergeRule(
55
thisRule: Rule,
6-
other: Rule
6+
other: Rule,
7+
newName: string = "",
78
): Rule {
9+
const newRule = new Rule(
10+
mergeEntries(thisRule, other),
11+
(v: string) => other.normalize(thisRule.normalize(v)),
12+
newName,
13+
);
14+
return newRule;
15+
}
16+
17+
18+
export function mergeEntries(
19+
thisRule: Rule,
20+
other: Rule
21+
): RuleEntry[] {
822
const thisEntryHashMap = new Map<string, RuleEntry[]>();
923
thisRule.entries.forEach((entry) => {
1024
if (thisEntryHashMap.has(entry.output)) {
@@ -23,10 +37,5 @@ export function mergeRule(
2337
return true;
2438
}
2539
});
26-
const newRule = new Rule(
27-
thisRule.name,
28-
[...thisRule.entries, ...toBeAddedEntries],
29-
(v: string) => other.normalize(thisRule.normalize(v))
30-
);
31-
return newRule;
40+
return [...thisRule.entries, ...toBeAddedEntries];
3241
}

src/impl/alphaNumericRule.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect, test } from "vitest";
22
import { newAlphaNumericRuleByLayout } from "./alphaNumericRule";
3-
import { loadPresetKeyboardLayoutQwertyJis } from "./defaultKeyboardLayout";
3+
import { loadPresetKeyboardLayoutQwertyJis } from "./presetKeyboardLayout";
44

55
test("import alphaNumericRule", () => {
66
const alphaNumericRule = newAlphaNumericRuleByLayout(

src/impl/alphaNumericRule.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ export function newAlphaNumericRuleByLayout(
99
([key, stroke]) => new RuleEntry([stroke], key, [], false)
1010
);
1111
return new Rule(
12-
"alpha-numeric",
1312
entries,
14-
defaultAlphaNumericNormalize
13+
defaultAlphaNumericNormalize,
14+
"alphanumeric",
1515
);
1616
}

0 commit comments

Comments
 (0)