Skip to content

Commit 78826c7

Browse files
committed
refactor
1 parent 1ecbc7c commit 78826c7

16 files changed

+104
-104
lines changed

dictionary/parser.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ const unescapedWord = allAtLeastOnce(
6868
match(WORDS, "word"),
6969
backtick
7070
.with(character)
71-
.skip(backtick)
72-
.map((character) => character),
71+
.skip(backtick),
7372
comment.map(() => ""),
7473
),
7574
)

src/dictionary.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,19 @@ function update(): void {
3636
}
3737
redefineSet(
3838
contentWordSet,
39-
(definition) =>
40-
definition.type !== "filler" &&
41-
definition.type !== "particle definition",
39+
({ type }) =>
40+
type !== "filler" &&
41+
type !== "particle definition",
4242
);
43-
redefineSetWithTypes(prepositionSet, "preposition");
43+
redefineSetWithType(prepositionSet, "preposition");
4444
redefineSet(
4545
preverbSet,
4646
(definition) =>
4747
(definition.type === "verb" && definition.predicateType != null) ||
4848
definition.type === "modal verb",
4949
);
50-
redefineSetWithTypes(fillerSet, "filler");
51-
redefineSetWithTypes(numeralSet, "numeral");
50+
redefineSetWithType(fillerSet, "filler");
51+
redefineSetWithType(numeralSet, "numeral");
5252
redefineSet(tokiPonaWordSet, () => true);
5353
}
5454
function redefineSet(
@@ -62,9 +62,9 @@ function redefineSet(
6262
}
6363
}
6464
}
65-
function redefineSetWithTypes(
65+
function redefineSetWithType(
6666
set: Set<string>,
67-
type: Definition["type"],
67+
compareType: Definition["type"],
6868
): void {
69-
redefineSet(set, (definition) => definition.type === type);
69+
redefineSet(set, ({ type }) => type === compareType);
7070
}

src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ function main(): void {
141141
errorDisplay.innerText = errorsFixable(flattenError(error))
142142
? DICTIONARY_LOADING_FAILED_FIXABLE_MESSAGE
143143
: DICTIONARY_LOADING_FAILED_UNFIXABLE_MESSAGE;
144-
// deno-lint-ignore no-console
144+
// deno-lint-ignore no-console
145145
console.error(error);
146146
}
147147
}

src/parser/composer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export function multiplePredicates(
131131
case "associated": {
132132
return [
133133
multiplePhrases(predicates.predicates, andParticle),
134-
...nullableAsArray(predicates.objects).map((_) => "e"),
134+
...nullableAsArray(predicates.objects).map(() => "e"),
135135
...nullableAsArray(predicates.objects)
136136
.map((objects) => multiplePhrases(objects, "e")),
137137
...predicates.prepositions.map(preposition),

src/parser/filter.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,34 +28,34 @@ export const WORD_UNIT_RULES: ReadonlyArray<(wordUnit: WordUnit) => boolean> = [
2828
];
2929
export const NANPA_RULES: ReadonlyArray<(nanpa: Nanpa) => boolean> = [
3030
// disallow "nanpa ala nanpa"
31-
(modifier) =>
32-
modifier.nanpa.type !== "x ala x" ||
31+
({ nanpa: { type } }) =>
32+
type !== "x ala x" ||
3333
throwError(new UnrecognizedError('"nanpa ala nanpa"')),
3434

3535
// nanpa construction cannot contain preposition
36-
(modifier) =>
37-
modifier.phrase.type !== "preposition" ||
36+
({ phrase: { type } }) =>
37+
type !== "preposition" ||
3838
throwError(new UnrecognizedError("preposition inside nanpa")),
3939

4040
// nanpa construction cannot contain preverb
41-
(modifier) =>
42-
modifier.phrase.type !== "preverb" ||
41+
({ phrase: { type } }) =>
42+
type !== "preverb" ||
4343
throwError(new UnrecognizedError("preverb inside nanpa")),
4444

4545
// nanpa construction cannot contain pi
46-
(modifier) =>
47-
modifier.phrase.type !== "default" ||
48-
modifier.phrase.modifiers.every((modifier) => modifier.type !== "pi") ||
46+
({ phrase }) =>
47+
phrase.type !== "default" ||
48+
phrase.modifiers.every(({ type }) => type !== "pi") ||
4949
throwError(new UnrecognizedError("pi inside nanpa")),
5050

5151
// nanpa construction cannot contain nanpa
52-
(modifier) =>
53-
modifier.phrase.type !== "default" ||
54-
modifier.phrase.modifiers.every((modifier) => modifier.type !== "nanpa") ||
52+
({ phrase }) =>
53+
phrase.type !== "default" ||
54+
phrase.modifiers.every(({ type }) => type !== "nanpa") ||
5555
throwError(new UnrecognizedError("nanpa inside nanpa")),
5656

5757
// nanpa cannot have emphasis particle
58-
(modifier) => modifier.phrase.emphasis == null,
58+
({ phrase: { emphasis } }) => emphasis == null,
5959
];
6060
export const MODIFIER_RULES: ReadonlyArray<(modifier: Modifier) => boolean> = [
6161
// pi cannot contain preposition
@@ -101,18 +101,18 @@ export const MULTIPLE_MODIFIERS_RULES: ReadonlyArray<
101101
> = [
102102
// // no multiple pi
103103
// (modifiers) =>
104-
// modifiers.filter((modifier) => modifier.type === "pi").length <= 1 ||
104+
// modifiers.filter(({type}) => type === "pi").length <= 1 ||
105105
// throwError(new UnrecognizedError("multiple pi")),
106106

107107
// no multiple nanpa
108108
(modifiers) =>
109-
modifiers.filter((modifier) => modifier.type === "nanpa").length <= 1 ||
109+
modifiers.filter(({ type }) => type === "nanpa").length <= 1 ||
110110
throwError(new UnrecognizedError("multiple nanpa")),
111111

112112
// no multiple proper words
113113
(modifiers) =>
114114
modifiers
115-
.filter((modifier) => modifier.type === "proper words")
115+
.filter(({ type }) => type === "proper words")
116116
.length <= 1 ||
117117
throwError(new UnrecognizedError("multiple proper words")),
118118

@@ -188,7 +188,7 @@ export const PHRASE_RULE: ReadonlyArray<(phrase: Phrase) => boolean> = [
188188
if (
189189
phrase.emphasis == null ||
190190
everyWordUnitInPhrase(phrase)
191-
.every((wordUnit) => wordUnit.emphasis == null)
191+
.every(({ emphasis }) => emphasis == null)
192192
) {
193193
return true;
194194
} else {
@@ -224,7 +224,7 @@ export const PREPOSITION_RULE: ReadonlyArray<(phrase: Preposition) => boolean> =
224224
(preposition) =>
225225
preposition.emphasis == null ||
226226
everyWordUnitInPreposition(preposition)
227-
.every((wordUnit) => wordUnit.emphasis == null) ||
227+
.every(({ emphasis }) => emphasis == null) ||
228228
throwError(new UnrecognizedError("nested emphasis")),
229229
];
230230
export const CLAUSE_RULE: ReadonlyArray<(clause: Clause) => boolean> = [
@@ -320,7 +320,7 @@ export const SENTENCE_RULE: ReadonlyArray<(sentence: Sentence) => boolean> = [
320320

321321
// There can't be more than 1 "x ala x" or "seme"
322322
(sentence) => {
323-
if (sentence.interrogative) {
323+
if (sentence.interrogative != null) {
324324
const interrogative = everyWordUnitInSentence(sentence)
325325
.filter((wordUnit) => {
326326
switch (wordUnit.type) {
@@ -347,7 +347,7 @@ export const MULTIPLE_SENTENCES_RULE: ReadonlyArray<
347347
> = [
348348
// Only allow at most 2 sentences
349349
(sentences) =>
350-
sentences.filter((sentence) => sentence.type !== "filler").length <= 2 ||
350+
sentences.filter(({ type }) => type !== "filler").length <= 2 ||
351351
throwError(new UnrecognizedError("multiple sentences")),
352352
];
353353
export function filter<T>(

src/parser/lexer.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ const cartoucheElement = choiceOnlyOne(
133133
throw new UnrecognizedError("excess dots");
134134
}
135135
}),
136-
singleUcsurWord.map((word) => word[0]),
136+
singleUcsurWord.map(([letter]) => letter),
137137
match(/[a-zA-Z]/, "Latin letter")
138138
.map((letter) => letter.toLowerCase())
139139
.skip(spaces),
@@ -160,8 +160,7 @@ function longContainer<T>(
160160
): Parser<T> {
161161
return specificSpecialUcsur(left)
162162
.with(inside)
163-
.skip(specificSpecialUcsur(right))
164-
.map((inside) => inside);
163+
.skip(specificSpecialUcsur(right));
165164
}
166165
const longSpaceContainer = longContainer(
167166
START_OF_LONG_GLYPH,

src/parser/parser.ts

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,7 @@ const pi = choice(
284284
specificToken("headed long glyph start")
285285
.filter(({ words }) => filterCombinedGlyphs(words, "pi"))
286286
.with(phrase)
287-
.skip(specificToken("headless long glyph end"))
288-
.map((phrase) => phrase),
287+
.skip(specificToken("headless long glyph end")),
289288
specificWord("pi").with(phrase),
290289
);
291290
const modifiers = sequence(
@@ -395,23 +394,23 @@ const preposition = choice<Preposition>(
395394
})),
396395
sequence(
397396
specificToken("headed long glyph start")
398-
.map((words) => {
399-
if (words.words.length > 2) {
397+
.map(({ words }) => {
398+
if (words.length > 2) {
400399
throw new UnrecognizedError(
401-
`combined glyphs of ${words.words.length} words`,
400+
`combined glyphs of ${words.length} words`,
402401
);
403402
} else {
404-
const word = words.words[0];
403+
const [word] = words;
405404
if (!prepositionSet.has(word)) {
406405
throw new UnrecognizedError(`"${word}" as preposition`);
407406
} else {
408-
return words.words;
407+
return words;
409408
}
410409
}
411410
}),
412411
phrase,
413-
specificToken("headless long glyph end"),
414412
)
413+
.skip(specificToken("headless long glyph end"))
415414
.map<Preposition>(([words, phrase]) => {
416415
const modifiers = words
417416
.slice(1)
@@ -617,16 +616,16 @@ const la = choice(
617616
);
618617
const filler = choice<Filler>(
619618
specificToken("space long glyph")
620-
.map((longGlyph) =>
621-
longGlyph.words.length === 1
619+
.map(({ words, spaceLength }) =>
620+
words.length === 1
622621
? {
623622
type: "long word",
624-
word: longGlyph.words[0],
625-
length: longGlyph.spaceLength,
623+
word: words[0],
624+
length: spaceLength,
626625
}
627626
: throwError(
628627
new UnexpectedError(
629-
describe({ type: "combined glyphs", words: longGlyph.words }),
628+
describe({ type: "combined glyphs", words: words }),
630629
"simple glyph",
631630
),
632631
)
@@ -690,16 +689,15 @@ const sentence = choice<Sentence>(
690689
interrogative: null,
691690
};
692691
const wordUnits = everyWordUnitInSentence(sentence);
693-
const interrogative =
694-
wordUnits.some((wordUnit) => wordUnit.type === "x ala x")
695-
? "x ala x"
696-
: wordUnits.some((wordUnit) =>
697-
(wordUnit.type === "default" ||
698-
wordUnit.type === "reduplication") &&
699-
wordUnit.word === "seme"
700-
)
701-
? "seme"
702-
: null;
692+
const interrogative = wordUnits.some(({ type }) => type === "x ala x")
693+
? "x ala x"
694+
: wordUnits.some((wordUnit) =>
695+
(wordUnit.type === "default" ||
696+
wordUnit.type === "reduplication") &&
697+
wordUnit.word === "seme"
698+
)
699+
? "seme"
700+
: null;
703701
return { ...sentence, interrogative };
704702
},
705703
)

src/parser/parser_lib.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,9 +265,9 @@ export function withSource<T>(
265265
parser: Parser<T>,
266266
): Parser<readonly [value: T, source: string]> {
267267
return new Parser((src) =>
268-
parser.unmemoizedParser(src).map((value) => ({
269-
value: [value.value, src.slice(0, src.length - value.rest.length)],
270-
rest: value.rest,
268+
parser.unmemoizedParser(src).map(({ value, rest }) => ({
269+
value: [value, src.slice(0, src.length - rest.length)],
270+
rest,
271271
}))
272272
);
273273
}

src/settings_frontend.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const REDUNDANCY_UPDATER: Updater<RedundancySettings> = {
3636
? value as RedundancySettings
3737
: null,
3838
stringify: (value) => value,
39-
load: (input) => input.value as RedundancySettings,
39+
load: ({ value }) => value as RedundancySettings,
4040
set: (input, value) => {
4141
input.value = value;
4242
},

src/translator/composer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ export function noun(phrases: English.NounPhrase, depth: number): string {
3030
switch (phrases.type) {
3131
case "simple": {
3232
const text = [
33-
...phrases.determiner.map((determiner) => word(determiner.determiner)),
33+
...phrases.determiner.map(({ determiner }) => word(determiner)),
3434
...phrases.adjective.map(adjective),
3535
word(phrases.noun),
3636
...nullableAsArray(phrases.postAdjective)
37-
.map((adjective) => `${adjective.adjective} ${adjective.name}`),
37+
.map(({ adjective, name }) => `${adjective} ${name}`),
3838
...phrases.preposition.map(preposition),
3939
]
4040
.join(" ");

src/translator/determiner.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,19 @@ import { word } from "./word.ts";
1010
function prettyPrintDeterminers(
1111
determiners: ReadonlyArray<English.Determiner>,
1212
): string {
13-
return `(${
14-
determiners.map((determiner) => determiner.determiner).join(` `)
15-
})`;
13+
return `(${determiners.map(({ determiner }) => determiner).join(` `)})`;
1614
}
1715
function filterKind(
1816
determiners: ReadonlyArray<English.Determiner>,
1917
kinds: ReadonlyArray<Dictionary.DeterminerType>,
2018
): ReadonlyArray<English.Determiner> {
21-
return determiners.filter((determiner) => kinds.includes(determiner.kind));
19+
return determiners.filter(({ kind }) => kinds.includes(kind));
2220
}
2321
function filterQuantity(
2422
determiners: ReadonlyArray<English.Determiner>,
25-
quantity: Dictionary.Quantity,
23+
targetQuantity: Dictionary.Quantity,
2624
): ReadonlyArray<English.Determiner> {
27-
return determiners.filter((determiner) => determiner.quantity === quantity);
25+
return determiners.filter(({ quantity }) => quantity === targetQuantity);
2826
}
2927
function check(
3028
quantities: ReadonlyArray<Dictionary.Quantity>,
@@ -37,7 +35,7 @@ function check(
3735
export function findNumber(
3836
determiners: ReadonlyArray<English.Determiner>,
3937
): Dictionary.Quantity {
40-
const quantities = determiners.map((determiner) => determiner.quantity);
38+
const quantities = determiners.map(({ quantity }) => quantity);
4139
if (quantities.every((quantity) => quantity === `both`)) {
4240
return "both";
4341
} else if (check(quantities, "singular", "plural")) {

0 commit comments

Comments
 (0)