Tools for learning Japanese.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 rivejä
1.9 KiB

  1. import { createReadStream, createWriteStream } from 'fs';
  2. import { describe, it, expect } from 'vitest';
  3. import { createDownloader, Kanjidic, Jmdict, createXmlToJsonLines } from '../src';
  4. describe('downloader', () => {
  5. describe.skip('kanjidic', () => {
  6. it.skip('works', async () => {
  7. const readStream = await createDownloader({
  8. type: Kanjidic.SOURCE_ID,
  9. });
  10. return new Promise<void>((resolve) => {
  11. const out = createWriteStream('kanjidic2.xml');
  12. out.on('finish', () => {
  13. resolve();
  14. });
  15. readStream.pipe(out);
  16. });
  17. });
  18. it.skip('converts XML to JSON', () => new Promise<void>((resolve) => {
  19. const readStream = createReadStream('kanjidic2.xml', { encoding: 'utf-8' });
  20. const transform = createXmlToJsonLines({
  21. entryTagName: 'character',
  22. });
  23. const out = createWriteStream('kanjidic2.jsonl');
  24. out.on('finish', () => {
  25. resolve();
  26. });
  27. readStream
  28. .pipe(transform)
  29. .pipe(out);
  30. }));
  31. });
  32. describe.skip('jmdict', () => {
  33. it('works', async () => {
  34. const readStream = await createDownloader({
  35. type: Jmdict.SOURCE_ID,
  36. });
  37. return new Promise<void>((resolve) => {
  38. const out = createWriteStream('jmdict.xml');
  39. out.on('finish', () => {
  40. resolve();
  41. });
  42. readStream.pipe(out);
  43. });
  44. }, { timeout: 300000 });
  45. it('converts XML to JSON', () => new Promise<void>((resolve) => {
  46. const readStream = createReadStream('jmdict.full.xml', { encoding: 'utf-8' });
  47. const transform = createXmlToJsonLines({
  48. entryTagName: 'entry',
  49. });
  50. const out = createWriteStream('jmdict.jsonl');
  51. out.on('finish', () => {
  52. resolve();
  53. });
  54. readStream
  55. .pipe(transform)
  56. .pipe(out);
  57. }), { timeout: 300000 });
  58. });
  59. });