Skip to content

Commit

Permalink
refactor: refactor cspell-trie-lib (#2254)
Browse files Browse the repository at this point in the history
* dev: trie - rename util.ts to trie-util.ts
* refactor: move files into folders to reduce noise.
  • Loading branch information
Jason3S committed Jan 14, 2022
1 parent e12926d commit cf2745c
Show file tree
Hide file tree
Showing 50 changed files with 115 additions and 99 deletions.
1 change: 1 addition & 0 deletions packages/cspell-trie-lib/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"files": [
"dist",
"!**/__mocks__",
"!**/test/**",
"!**/*.test.*",
"!**/*.spec.*",
"!**/*.map"
Expand Down
2 changes: 1 addition & 1 deletion packages/cspell-trie-lib/src/lib/SimpleDictionaryParser.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { operators } from 'gensequence';
import { normalizeWord, normalizeWordForCaseInsensitive } from './util';
import { normalizeWord, normalizeWordForCaseInsensitive } from './trie-util';
import {
COMPOUND_FIX,
OPTIONAL_COMPOUND_FIX,
Expand Down
2 changes: 1 addition & 1 deletion packages/cspell-trie-lib/src/lib/TrieBuilder.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { countNodes, isCircular } from './util';
import { countNodes, isCircular } from './trie-util';
import { TrieBuilder, buildTrie } from './TrieBuilder';

describe('Validate TrieBuilder', () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/cspell-trie-lib/src/lib/TrieBuilder.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { TrieNode, TrieRoot } from './TrieNode';
import { Trie, PartialTrieOptions, TrieOptions } from './trie';
import { consolidate } from './consolidate';
import { createTriFromList, mergeOptionalWithDefaults, trieNodeToRoot, createTrieRoot } from './util';
import { SecondChanceCache } from './secondChanceCache';
import { createTriFromList, mergeOptionalWithDefaults, trieNodeToRoot, createTrieRoot } from './trie-util';
import { SecondChanceCache } from './utils/secondChanceCache';

/**
* Builds an optimized Trie from a Iterable<string>. It attempts to reduce the size of the trie
Expand Down
5 changes: 3 additions & 2 deletions packages/cspell-trie-lib/src/lib/consolidate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ import { genSequence } from 'gensequence';
import { TrieNode } from './TrieNode';
import { readFile } from 'fs-extra';
import * as path from 'path';
import { iteratorTrieWords, countNodes, createTrieRoot } from './util';
import { iteratorTrieWords, countNodes, createTrieRoot } from './trie-util';
import { buildTrie } from './TrieBuilder';
import { resolveGlobalSample } from '../test/samples';

const samples = path.join(__dirname, ...'../../../Samples/dicts'.split('/'));
const samples = resolveGlobalSample('dicts');
const sampleEnglish = path.join(samples, 'en_US.txt');
const pSampleEnglishWords = readFile(sampleEnglish, 'utf8').then((a) => a.split('\n').filter((a) => !!a));

Expand Down
2 changes: 1 addition & 1 deletion packages/cspell-trie-lib/src/lib/consolidate.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { TrieNode, FLAG_WORD, TrieRoot } from './TrieNode';
import { trieNodeToRoot } from './util';
import { trieNodeToRoot } from './trie-util';

/**
* Consolidate to DAWG
Expand Down
11 changes: 5 additions & 6 deletions packages/cspell-trie-lib/src/lib/find.dutch.test.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import { findWord, PartialFindOptions, FindFullResult } from './find';

import * as fs from 'fs-extra';
import * as zlib from 'zlib';
import { importTrie } from './importExport';
import { resolveGlobalDict } from '../test/samples';
import { FindFullResult, findWord, PartialFindOptions } from './find';
import { importTrie } from './io/importExport';
import { normalizeWordToLowercase } from './trie-util';
import { TrieNode } from './TrieNode';
import * as path from 'path';
import { normalizeWordToLowercase } from './util';

const dutchDictionary = path.join(__dirname, ...'../../../Samples/dicts/nl_compound_trie3.trie.gz'.split('/'));
const dutchDictionary = resolveGlobalDict('nl_compound_trie3.trie.gz');

describe('Validate findWord', () => {
const pTrie = readTrie(dutchDictionary);
Expand Down
2 changes: 1 addition & 1 deletion packages/cspell-trie-lib/src/lib/find.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { TrieNode, FLAG_WORD } from './TrieNode';
import { mergeDefaults } from './util';
import { mergeDefaults } from './trie-util';
import { FORBID_PREFIX, COMPOUND_FIX, CASE_INSENSITIVE_PREFIX } from './constants';

/**
Expand Down
6 changes: 3 additions & 3 deletions packages/cspell-trie-lib/src/lib/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
export * from './trie';
export { TrieNode, FLAG_WORD, ChildMap, TrieRoot } from './TrieNode';
export * from './util';
export * from './trie-util';
export * from './walker';
export * from './importExport';
export { importTrie, serializeTrie, ExportOptions } from './io/importExport';
export { buildTrie, buildTrieFast, TrieBuilder } from './TrieBuilder';
export * from './consolidate';
export { SuggestionResult, MaxCost, suggestionCollector, SuggestionCollector } from './suggestCollector';
export { SuggestionResult, MaxCost, suggestionCollector, SuggestionCollector } from './suggestions/suggestCollector';
export { parseDictionaryLines, parseDictionary } from './SimpleDictionaryParser';
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import * as Trie from '.';
import { serializeTrie, importTrie } from './importExport';
import { readFile } from 'fs-extra';
import * as path from 'path';
import * as Trie from '..';
import { resolveSample } from '../../test/samples';
import { importTrie, serializeTrie } from './importExport';

describe('Import/Export', () => {
const pSampleWords = readFile(path.join(__dirname, '..', '..', 'Samples', 'sample.txt'), 'utf8');
const pSampleWords = readFile(resolveSample('sample.txt'), 'utf8');
test('tests serialize / deserialize V1', async () => {
const sampleWords = (await pSampleWords).split('\n').filter((a) => !!a);
const trie = Trie.createTriFromList(sampleWords);
Expand Down Expand Up @@ -47,7 +47,7 @@ describe('Import/Export', () => {
});

test('Unsupported version', async () => {
const sample = await readFile(path.join(__dirname, '..', '..', 'Samples', 'sampleV2.trie'), 'utf8');
const sample = await readFile(resolveSample('sampleV2.trie'), 'utf8');
const data = sample.replace('TrieXv2', 'TrieXv9').split('\n');
expect(() => importTrie(data)).toThrow('Unsupported version: 9');
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Sequence, genSequence } from 'gensequence';
import { TrieRoot } from './TrieNode';
import { TrieRoot } from '../TrieNode';
import * as iv1 from './importExportV1';
import * as iv2 from './importExportV2';
import * as iv3 from './importExportV3';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
import * as Trie from '.';
import { serializeTrie, importTrie } from './importExportV1';
import { readFile } from 'fs-extra';
import * as path from 'path';
import { consolidate } from './consolidate';
import { iteratorTrieWords } from './util';
import * as Trie from '..';
import { resolveSample } from '../../test/samples';
import { consolidate } from '../consolidate';
import { iteratorTrieWords } from '../trie-util';
import { importTrie, serializeTrie } from './importExportV1';

describe('Import/Export', () => {
test('tests serialize / deserialize', async () => {
const trie = consolidate(Trie.createTriFromList(sampleWords));
const data = [...serializeTrie(trie, 10)];
const sample = (await readFile(path.join(__dirname, '..', '..', 'Samples', 'sampleV1.trie'), 'utf8')).replace(
/\r/g,
''
);
const sample = (await readFile(resolveSample('sampleV1.trie'), 'utf8')).replace(/\r/g, '');
const rawData = data.join('');
expect(rawData.length).toBeLessThanOrEqual(sample.length);
const sampleRoot = importTrie(sample.split('\n'));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { TrieNode, FLAG_WORD, ChildMap, TrieRoot } from './TrieNode';
import { TrieRefNode } from './trieRef';
import { TrieNode, FLAG_WORD, ChildMap, TrieRoot } from '../TrieNode';
import { TrieRefNode } from '../trieRef';
import { Sequence, genSequence } from 'gensequence';
import { convertToTrieRefNodes } from './convertToTrieRefNodes';
import { trieNodeToRoot } from './util';
import { convertToTrieRefNodes } from '../convertToTrieRefNodes';
import { trieNodeToRoot } from '../trie-util';

const EOW = '*';
export const DATA = EOW;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
import * as Trie from '.';
import { serializeTrie, importTrie } from './importExportV2';
import { readFile } from 'fs-extra';
import * as path from 'path';
import * as Trie from '..';
import { resolveSample } from '../../test/samples';
import { importTrie, serializeTrie } from './importExportV2';

describe('Import/Export', () => {
test('tests serialize / deserialize from trie', async () => {
const trie = Trie.createTriFromList(sampleWords);
const data = [...serializeTrie(trie, { base: 10, comment: 'Sample Words' })].join('');
const sample = (await readFile(path.join(__dirname, '..', '..', 'Samples', 'sampleV2.trie'), 'utf8')).replace(
/\r?\n/g,
'\n'
);
const sample = (await readFile(resolveSample('sampleV2.trie'), 'utf8')).replace(/\r?\n/g, '\n');
expect(data).toBe(sample);
const root = importTrie(data.split('\n'));
const words = [...Trie.iteratorTrieWords(root)];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { TrieNode, FLAG_WORD, ChildMap, TrieRoot } from './TrieNode';
import { TrieNode, FLAG_WORD, ChildMap, TrieRoot } from '../TrieNode';
import { Sequence, genSequence } from 'gensequence';
import { trieNodeToRoot } from './util';
import { trieNodeToRoot } from '../trie-util';

const EOW = '*';
export const DATA = '__DATA__';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import * as Trie from '.';
import { serializeTrie, importTrie } from './importExportV3';
import { readFile, writeFile } from 'fs-extra';
import * as path from 'path';
import { consolidate } from './consolidate';
import { genSequence } from 'gensequence';
import { TrieNode } from './TrieNode';
import * as Trie from '..';
import { resolveSample } from '../../test/samples';
import { consolidate } from '../consolidate';
import { TrieNode } from '../TrieNode';
import { importTrie, serializeTrie } from './importExportV3';

const sampleFile = path.join(__dirname, '..', '..', 'Samples', 'sampleV3.trie');
const sampleFile = resolveSample('sampleV3.trie');

describe('Import/Export', () => {
test('tests serialize / deserialize small sample', async () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { TrieNode, FLAG_WORD, TrieRoot } from './TrieNode';
import { TrieNode, FLAG_WORD, TrieRoot } from '../TrieNode';
import { Sequence, genSequence } from 'gensequence';
import { bufferLines } from './bufferLines';
import { trieNodeToRoot } from './util';
import { bufferLines } from '../utils/bufferLines';
import { trieNodeToRoot } from '../trie-util';

const EOW = '$';
const BACK = '<';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { readTrie } from './dictionaries.test.helper';
import { GenSuggestionOptionsStrict } from './genSuggestionsOptions';
import { readTrie } from '../../test/dictionaries.test.helper';
import { GenSuggestionOptionsStrict } from '../genSuggestionsOptions';
import { genCompoundableSuggestions, suggest } from './suggestAStar';
import {
suggestionCollector,
SuggestionCollectorOptions,
SuggestionResult,
SuggestionCollector,
} from './suggestCollector';
import { createTimer } from './timer';
import { CompoundWordsMethod } from './walker';
import { createTimer } from '../utils/timer';
import { CompoundWordsMethod } from '../walker';

function getTrie() {
return readTrie('@cspell/dict-en_us/cspell-ext.json');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { readTrie } from './dictionaries.test.helper';
import { readTrie } from '../../test/dictionaries.test.helper';
import { genCompoundableSuggestions, suggest } from './suggest';
import { suggestionCollector, SuggestionCollectorOptions, SuggestionResult } from './suggestCollector';
import { createTimer } from './timer';
import { CompoundWordsMethod } from './walker';
import { createTimer } from '../utils/timer';
import { CompoundWordsMethod } from '../walker';

function getTrie() {
return readTrie('@cspell/dict-en_us/cspell-ext.json');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { readTrie } from './dictionaries.test.helper';
import { parseLinesToDictionary } from './SimpleDictionaryParser';
import { readTrie } from '../../test/dictionaries.test.helper';
import { parseLinesToDictionary } from '../SimpleDictionaryParser';

function getTrie() {
return readTrie('@cspell/dict-es-es/cspell-ext.json');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { readSampleTrie } from './dictionaries.test.helper';
import { readSampleTrie } from '../../test/dictionaries.test.helper';

function getTrie() {
return readSampleTrie('nl_compound_trie3.trie.gz');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import * as Sug from './suggest';
import { SuggestionResult } from './suggestCollector';
import { Trie } from './trie';
import { TrieNode } from './TrieNode';
import { isWordTerminationNode } from './util';
import { walker } from './walker';
import { Trie } from '../trie';
import { TrieNode } from '../TrieNode';
import { isWordTerminationNode } from '../trie-util';
import { walker } from '../walker';

describe('Validate Suggest', () => {
test('Tests suggestions against Legacy Suggestion generator', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { GenSuggestionOptions, SuggestionOptions } from './genSuggestionsOptions';
import { parseDictionary } from './SimpleDictionaryParser';
import { GenSuggestionOptions, SuggestionOptions } from '../genSuggestionsOptions';
import { parseDictionary } from '../SimpleDictionaryParser';
import { suggest, genSuggestions, genCompoundableSuggestions } from './suggest';
import {
compSuggestionResults,
isSuggestionResult,
suggestionCollector,
SuggestionCollectorOptions,
} from './suggestCollector';
import { Trie } from './trie';
import * as Walker from './walker';
import { Trie } from '../trie';
import * as Walker from '../walker';

const defaultOptions: SuggestionCollectorOptions = {
numSuggestions: 10,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { createSuggestionOptions, GenSuggestionOptions, SuggestionOptions } from './genSuggestionsOptions';
import { createSuggestionOptions, GenSuggestionOptions, SuggestionOptions } from '../genSuggestionsOptions';
import { visualLetterMaskMap } from './orthography';
import { MaxCost, suggestionCollector, SuggestionGenerator, SuggestionResult } from './suggestCollector';
import { TrieRoot } from './TrieNode';
import { isWordTerminationNode } from './util';
import { CompoundWordsMethod, hintedWalker, JOIN_SEPARATOR, WORD_SEPARATOR } from './walker';
import { TrieRoot } from '../TrieNode';
import { isWordTerminationNode } from '../trie-util';
import { CompoundWordsMethod, hintedWalker, JOIN_SEPARATOR, WORD_SEPARATOR } from '../walker';

const baseCost = 100;
const swapCost = 75;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { GenSuggestionOptionsStrict, SuggestionOptions } from './genSuggestionsOptions';
import { parseDictionary } from './SimpleDictionaryParser';
import { GenSuggestionOptionsStrict, SuggestionOptions } from '../genSuggestionsOptions';
import { parseDictionary } from '../SimpleDictionaryParser';
import * as Sug from './suggestAStar';
import { SuggestionCollector, suggestionCollector, SuggestionCollectorOptions } from './suggestCollector';
import { Trie } from './trie';
import { CompoundWordsMethod } from './walker';
import { Trie } from '../trie';
import { CompoundWordsMethod } from '../walker';

const defaultOptions: SuggestionCollectorOptions = {
numSuggestions: 10,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { TrieRoot, TrieNode } from './TrieNode';
import { CompoundWordsMethod, JOIN_SEPARATOR, WORD_SEPARATOR } from './walker';
import { TrieRoot, TrieNode } from '../TrieNode';
import { CompoundWordsMethod, JOIN_SEPARATOR, WORD_SEPARATOR } from '../walker';
import { SuggestionGenerator, suggestionCollector, SuggestionResult } from './suggestCollector';
import { PairingHeap } from './PairingHeap';
import { PairingHeap } from '../utils/PairingHeap';
import { visualLetterMaskMap } from './orthography';
import { createSuggestionOptions, GenSuggestionOptionsStrict, SuggestionOptions } from './genSuggestionsOptions';
import { createSuggestionOptions, GenSuggestionOptionsStrict, SuggestionOptions } from '../genSuggestionsOptions';

export function* genCompoundableSuggestions(
root: TrieRoot,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { createTimer } from './timer';
import { JOIN_SEPARATOR, WORD_SEPARATOR } from './walker';
import { createTimer } from '../utils/timer';
import { JOIN_SEPARATOR, WORD_SEPARATOR } from '../walker';

const defaultMaxNumberSuggestions = 10;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
countWords,
iteratorTrieWords,
mergeDefaults,
} from './util';
} from './trie-util';

describe('Validate Util Functions', () => {
test('createTriFromList', () => {
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion packages/cspell-trie-lib/src/lib/trie.en.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { readTrie } from './dictionaries.test.helper';
import { readTrie } from '../test/dictionaries.test.helper';

function getTrie() {
return readTrie('@cspell/dict-en_us/cspell-ext.json');
Expand Down
4 changes: 2 additions & 2 deletions packages/cspell-trie-lib/src/lib/trie.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { SuggestionOptions } from './genSuggestionsOptions';
import { CompoundWordsMethod, suggestionCollector } from './index';
import { parseDictionary } from './SimpleDictionaryParser';
import { SuggestionCollectorOptions } from './suggestCollector';
import { SuggestionCollectorOptions } from './suggestions/suggestCollector';
import { defaultTrieOptions, Trie } from './trie';
import { isWordTerminationNode, normalizeWordToLowercase, orderTrie } from './util';
import { isWordTerminationNode, normalizeWordToLowercase, orderTrie } from './trie-util';

describe('Validate Trie Class', () => {
const NumSuggestions: SuggestionOptions = { numSuggestions: 10 };
Expand Down
6 changes: 3 additions & 3 deletions packages/cspell-trie-lib/src/lib/trie.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import {
PartialFindOptions,
} from './find';
import { SuggestionOptions } from './genSuggestionsOptions';
import { genSuggestions, suggest } from './suggest';
import { SuggestionCollector, SuggestionResult } from './suggestCollector';
import { genSuggestions, suggest } from './suggestions/suggest';
import { SuggestionCollector, SuggestionResult } from './suggestions/suggestCollector';
import { PartialTrieOptions, TrieNode, TrieOptions, TrieRoot } from './TrieNode';
import {
countWords,
Expand All @@ -22,7 +22,7 @@ import {
iteratorTrieWords,
mergeOptionalWithDefaults,
orderTrie,
} from './util';
} from './trie-util';
import { CompoundWordsMethod, walker, WalkerIterator } from './walker';

export {
Expand Down
File renamed without changes.

0 comments on commit cf2745c

Please sign in to comment.