henkan 2.4.11 → 2.4.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **generateAnkiNote**(`entry`, `customData?`, `additionalTags?`): `string`[]
10
10
 
11
- Defined in: [utils.ts:2591](https://github.com/Ronokof/Henkan/blob/main/src/utils.ts#L2591)
11
+ Defined in: [utils.ts:2643](https://github.com/Ronokof/Henkan/blob/main/src/utils.ts#L2643)
12
12
 
13
13
  Generates an array where each field holds an entry’s info wrapped in HTML tags.
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > **generateAnkiNotesFile**(`list`, `defaultNoteInfo?`, `customData?`, `additionalTags?`): `string`
10
10
 
11
- Defined in: [utils.ts:3020](https://github.com/Ronokof/Henkan/blob/main/src/utils.ts#L3020)
11
+ Defined in: [utils.ts:3072](https://github.com/Ronokof/Henkan/blob/main/src/utils.ts#L3072)
12
12
 
13
13
  Generates an Anki notes file with each entry’s info organized into fields, either in HTML or plain text.
14
14
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "henkan",
3
- "version": "2.4.11",
3
+ "version": "2.4.12",
4
4
  "description": "Converter & Simplifier for JMdict, KANJIDIC, KRADFILE2, RADKFILE2 and Tanaka Corpus",
5
5
  "keywords": [
6
6
  "fjsd",
package/src/utils.ts CHANGED
@@ -2141,12 +2141,28 @@ export function getWord(
2141
2141
 
2142
2142
  word.translations = [];
2143
2143
 
2144
+ const meanings: string[] | undefined =
2145
+ dictWord.hasPhrases === true && examples !== undefined ? [] : undefined;
2146
+ const seenPhrases: Set<string> = new Set<string>();
2147
+
2144
2148
  for (const dictMeaning of dictWord.meanings) {
2145
2149
  const translationTypes: string[] = [];
2146
2150
  const translations: string[] = dictMeaning.translations.map(
2147
2151
  (translation: string | { translation: string; type: string }) => {
2148
- if (typeof translation === "string") return translation;
2149
- else {
2152
+ if (typeof translation === "string") {
2153
+ if (meanings !== undefined) {
2154
+ const cleanTranslation: string = translation
2155
+ .replaceAll(/\([^)]*\)|\[[^\]]*\]|\{[^}]*\}/g, "")
2156
+ .trim();
2157
+
2158
+ if (!seenPhrases.has(cleanTranslation)) {
2159
+ seenPhrases.add(cleanTranslation);
2160
+ meanings.push(cleanTranslation);
2161
+ }
2162
+ }
2163
+
2164
+ return translation;
2165
+ } else {
2150
2166
  const translationNoteAndTag:
2151
2167
  | readonly [string, string]
2152
2168
  | readonly [string, string, POS | readonly POS[]] = noteMap.get(
@@ -2156,6 +2172,17 @@ export function getWord(
2156
2172
  translationTypes.push(translationNoteAndTag[1]);
2157
2173
  word.tags!.push(`word::${translationNoteAndTag[0]}`);
2158
2174
 
2175
+ if (meanings !== undefined) {
2176
+ const cleanTranslation: string = translation.translation
2177
+ .replaceAll(/\([^)]*\)|\[[^\]]*\]|\{[^}]*\}/g, "")
2178
+ .trim();
2179
+
2180
+ if (!seenPhrases.has(cleanTranslation)) {
2181
+ seenPhrases.add(cleanTranslation);
2182
+ meanings.push(cleanTranslation);
2183
+ }
2184
+ }
2185
+
2159
2186
  return translation.translation;
2160
2187
  }
2161
2188
  },
@@ -2208,6 +2235,8 @@ export function getWord(
2208
2235
  word.tags!.push("word::usually_in_kana_for_all_senses");
2209
2236
  }
2210
2237
 
2238
+ seenPhrases.clear();
2239
+
2211
2240
  if (kanjiDic !== undefined && word.kanjiForms !== undefined) {
2212
2241
  const kanji: Kanji[] = [];
2213
2242
  const seenChars: Set<string> = new Set<string>();
@@ -2240,9 +2269,9 @@ export function getWord(
2240
2269
  if (kanji.length > 0) word.kanji = kanji;
2241
2270
  }
2242
2271
 
2243
- if (dictWord.hasPhrases === true && examples !== undefined) {
2272
+ if (meanings !== undefined) {
2244
2273
  const exampleList: readonly TanakaExample[] =
2245
- examples instanceof Map ? (examples.get(dictWord.id) ?? []) : examples;
2274
+ examples instanceof Map ? (examples.get(dictWord.id) ?? []) : examples!;
2246
2275
 
2247
2276
  const rkf: ReadingsKanjiFormsPair = getValidForms(
2248
2277
  dictWord.readings,
@@ -2258,43 +2287,28 @@ export function getWord(
2258
2287
  ? new Set<string>(rkf.kanjiForms.map((kf: DictKanjiForm) => kf.form))
2259
2288
  : undefined;
2260
2289
 
2261
- const meanings: string[] = new Set<string>(
2262
- dictWord.meanings.flatMap((m: DictMeaning) =>
2263
- m.translations.map((t: DictTranslation) => {
2264
- if (typeof t === "string")
2265
- return t.replaceAll(/\([^)]*\)|\[[^\]]*\]|\{[^}]*\}/g, "").trim();
2266
- else
2267
- return t.translation
2268
- .replaceAll(/\([^)]*\)|\[[^\]]*\]|\{[^}]*\}/g, "")
2269
- .trim();
2270
- }),
2271
- ),
2272
- )
2273
- .values()
2274
- .toArray();
2275
-
2276
- let kanjiFormExamples: {
2290
+ let readingMatchingKanjiFormExamples: {
2277
2291
  ex: TanakaExample;
2278
2292
  partIndex: number;
2279
2293
  form: string;
2294
+ referenceIDMatch?: true | undefined;
2280
2295
  includesTranslation?: true | undefined;
2281
2296
  }[] = [];
2282
- let readingMatchingKanjiFormExamples: {
2297
+ let kanjiFormExamples: {
2283
2298
  ex: TanakaExample;
2284
2299
  partIndex: number;
2285
2300
  form: string;
2286
2301
  includesTranslation?: true | undefined;
2287
2302
  }[] = [];
2303
+
2288
2304
  let readingExamples: {
2289
2305
  ex: TanakaExample;
2290
2306
  partIndex: number;
2291
2307
  referenceIDMatch?: true | undefined;
2292
2308
  includesTranslation?: true | undefined;
2293
2309
  }[] = [];
2294
- let readingMatchingKanjiForms: Set<string> = new Set<string>();
2295
- const readingMatchingKanjiFormsWithTranslations: Set<string> =
2296
- new Set<string>();
2297
- const seenPhrases: Set<string> = new Set<string>();
2310
+
2311
+ let hasReadingMatchingKanjiFormWithTranslation: boolean = false;
2298
2312
 
2299
2313
  for (const example of exampleList)
2300
2314
  for (let i: number = 0; i < example.parts.length; i++) {
@@ -2324,12 +2338,15 @@ export function getWord(
2324
2338
  ex: example,
2325
2339
  partIndex: i,
2326
2340
  form: part.baseForm,
2341
+ ...(referenceIDMatch ? { referenceIDMatch: true } : {}),
2327
2342
  ...(includesTranslation ? { includesTranslation: true } : {}),
2328
2343
  });
2329
2344
 
2330
- readingMatchingKanjiForms.add(part.baseForm);
2331
- if (includesTranslation)
2332
- readingMatchingKanjiFormsWithTranslations.add(part.baseForm);
2345
+ if (
2346
+ !hasReadingMatchingKanjiFormWithTranslation &&
2347
+ includesTranslation
2348
+ )
2349
+ hasReadingMatchingKanjiFormWithTranslation = true;
2333
2350
  } else
2334
2351
  kanjiFormExamples.push({
2335
2352
  ex: example,
@@ -2353,9 +2370,7 @@ export function getWord(
2353
2370
  ex: example,
2354
2371
  partIndex: i,
2355
2372
  ...(referenceIDMatch ? { referenceIDMatch: true } : {}),
2356
- ...(!referenceIDMatch && includesTranslation
2357
- ? { includesTranslation: true }
2358
- : {}),
2373
+ ...(includesTranslation ? { includesTranslation: true } : {}),
2359
2374
  });
2360
2375
 
2361
2376
  seenPhrases.add(example.phrase);
@@ -2364,36 +2379,39 @@ export function getWord(
2364
2379
  }
2365
2380
  }
2366
2381
 
2367
- if (readingMatchingKanjiFormsWithTranslations.size > 0) {
2368
- readingMatchingKanjiForms = readingMatchingKanjiFormsWithTranslations;
2369
-
2370
- readingMatchingKanjiFormExamples =
2371
- readingMatchingKanjiFormExamples.filter(
2372
- (ex: {
2373
- ex: TanakaExample;
2374
- partIndex: number;
2375
- form: string;
2376
- includesTranslation?: true | undefined;
2377
- }) =>
2378
- ex.includesTranslation === true ||
2379
- ex.ex.parts.some(
2380
- (part: ExamplePart) =>
2381
- readingMatchingKanjiForms.has(part.baseForm) &&
2382
- part.glossNumber !== undefined,
2383
- ),
2384
- );
2385
- }
2382
+ if (readingMatchingKanjiFormExamples.length > 0) {
2383
+ if (hasReadingMatchingKanjiFormWithTranslation)
2384
+ readingMatchingKanjiFormExamples =
2385
+ readingMatchingKanjiFormExamples.filter(
2386
+ (ex: {
2387
+ ex: TanakaExample;
2388
+ partIndex: number;
2389
+ form: string;
2390
+ referenceIDMatch?: true | undefined;
2391
+ includesTranslation?: true | undefined;
2392
+ }) =>
2393
+ ex.includesTranslation === true ||
2394
+ ex.referenceIDMatch === true ||
2395
+ ex.ex.parts.some(
2396
+ (part: ExamplePart) =>
2397
+ ex.form === part.baseForm && part.glossNumber !== undefined,
2398
+ ),
2399
+ );
2386
2400
 
2387
- const hasKfExamplesWithTranslation: boolean = kanjiFormExamples.some(
2388
- (ex: {
2389
- ex: TanakaExample;
2390
- partIndex: number;
2391
- form: string;
2392
- includesTranslation?: true | undefined;
2393
- }) => ex.includesTranslation === true,
2394
- );
2401
+ kanjiFormExamples.length = 0;
2402
+ }
2395
2403
 
2396
- if (kanjiFormExamples.length > 0 && readingMatchingKanjiForms.size > 0)
2404
+ if (
2405
+ kanjiFormExamples.length > 0 &&
2406
+ kanjiFormExamples.some(
2407
+ (ex: {
2408
+ ex: TanakaExample;
2409
+ partIndex: number;
2410
+ form: string;
2411
+ includesTranslation?: true | undefined;
2412
+ }) => ex.includesTranslation === true,
2413
+ )
2414
+ )
2397
2415
  kanjiFormExamples = kanjiFormExamples.filter(
2398
2416
  (ex: {
2399
2417
  ex: TanakaExample;
@@ -2401,14 +2419,11 @@ export function getWord(
2401
2419
  form: string;
2402
2420
  includesTranslation?: true | undefined;
2403
2421
  }) =>
2404
- readingMatchingKanjiForms.has(ex.form) &&
2405
- (!hasKfExamplesWithTranslation ||
2406
- ex.includesTranslation === true ||
2407
- ex.ex.parts.some(
2408
- (part: ExamplePart) =>
2409
- readingMatchingKanjiForms.has(part.baseForm) &&
2410
- part.glossNumber !== undefined,
2411
- )),
2422
+ ex.includesTranslation === true ||
2423
+ ex.ex.parts.some(
2424
+ (part: ExamplePart) =>
2425
+ ex.form === part.baseForm && part.glossNumber !== undefined,
2426
+ ),
2412
2427
  );
2413
2428
 
2414
2429
  if (
@@ -2431,16 +2446,24 @@ export function getWord(
2431
2446
  }) => ex.includesTranslation === true || ex.referenceIDMatch === true,
2432
2447
  );
2433
2448
 
2434
- let wordExamples: { ex: TanakaExample; partIndex: number }[] = [
2449
+ let wordExamples: (
2450
+ | {
2451
+ ex: TanakaExample;
2452
+ partIndex: number;
2453
+ form: string;
2454
+ includesTranslation?: true | undefined;
2455
+ }
2456
+ | {
2457
+ ex: TanakaExample;
2458
+ partIndex: number;
2459
+ referenceIDMatch?: true | undefined;
2460
+ includesTranslation?: true | undefined;
2461
+ }
2462
+ )[] = [
2435
2463
  ...(word.kanjiForms !== undefined
2436
2464
  ? [...readingMatchingKanjiFormExamples, ...kanjiFormExamples]
2437
2465
  : readingExamples),
2438
- ].toSorted(
2439
- (
2440
- a: { ex: TanakaExample; partIndex: number },
2441
- b: { ex: TanakaExample; partIndex: number },
2442
- ) => a.ex.phrase.length - b.ex.phrase.length,
2443
- );
2466
+ ];
2444
2467
 
2445
2468
  seenPhrases.clear();
2446
2469
 
@@ -2473,8 +2496,21 @@ export function getWord(
2473
2496
  if (glossSpecificExamples.length > 0) {
2474
2497
  if (glossSpecificExamples.length < 5) {
2475
2498
  wordExamples = wordExamples.filter(
2476
- (ex: { ex: TanakaExample; partIndex: number }) =>
2477
- !seenPhrases.has(ex.ex.phrase),
2499
+ (
2500
+ ex:
2501
+ | {
2502
+ ex: TanakaExample;
2503
+ partIndex: number;
2504
+ form: string;
2505
+ includesTranslation?: true | undefined;
2506
+ }
2507
+ | {
2508
+ ex: TanakaExample;
2509
+ partIndex: number;
2510
+ referenceIDMatch?: true | undefined;
2511
+ includesTranslation?: true | undefined;
2512
+ },
2513
+ ) => !seenPhrases.has(ex.ex.phrase),
2478
2514
  );
2479
2515
 
2480
2516
  if (wordExamples.length > 0)
@@ -2493,14 +2529,30 @@ export function getWord(
2493
2529
  glossSpecificExamples.length === 0
2494
2530
  ? wordExamples.slice(0, 5)
2495
2531
  : wordExamples
2496
- ).map((ex: { ex: TanakaExample; partIndex: number }) => ({
2497
- phrase: ex.ex.furigana ?? ex.ex.phrase,
2498
- translation: ex.ex.translation,
2499
- originalPhrase: ex.ex.phrase,
2500
- ...(ex.ex.glossNumber !== undefined
2501
- ? { glossNumber: ex.ex.glossNumber }
2502
- : {}),
2503
- }));
2532
+ ).map(
2533
+ (
2534
+ ex:
2535
+ | {
2536
+ ex: TanakaExample;
2537
+ partIndex: number;
2538
+ form: string;
2539
+ includesTranslation?: true | undefined;
2540
+ }
2541
+ | {
2542
+ ex: TanakaExample;
2543
+ partIndex: number;
2544
+ referenceIDMatch?: true | undefined;
2545
+ includesTranslation?: true | undefined;
2546
+ },
2547
+ ) => ({
2548
+ phrase: ex.ex.furigana ?? ex.ex.phrase,
2549
+ translation: ex.ex.translation,
2550
+ originalPhrase: ex.ex.phrase,
2551
+ ...(ex.ex.glossNumber !== undefined
2552
+ ? { glossNumber: ex.ex.glossNumber }
2553
+ : {}),
2554
+ }),
2555
+ );
2504
2556
 
2505
2557
  word.tags!.push("word::has_phrases");
2506
2558
  if (glossSpecificExamples.length > 0)