UNPKG

@mikezimm/fps-core-v7

Version:

Library of reusable core interfaces, types and constants migrated from fps-library-v2

90 lines (88 loc) 5.51 kB
/** * CodeAnalizerComment: Updated 2 imports on 2024-09-22 02:56:43 * Update:: import { IWordSummary } to '@mikezimm/fps-core-v7/lib/components/atoms/WordSummary/IWordSummary;' * Update:: import { IWordObject } to '@mikezimm/fps-core-v7/lib/components/atoms/WordSummary/IWordSummary;' */ /** * CodeAnalizerComment: Updated 7 imports on 2024-09-21 23:07:24 * Update:: import { sortObjectArrayByNumberKey } to '@mikezimm/fps-core-v7/lib/logic/Arrays/sorting/numbers;' * Update:: import { sortObjectArrayByChildNumberKey } to '@mikezimm/fps-core-v7/lib/logic/Arrays/sorting/objects;' * Update:: import { getArrayOfWordsFromString } to '@mikezimm/fps-core-v7/lib/logic/Strings/getWordsFromString;' * Update:: import { startPerformOpV2 } to '@mikezimm/fps-core-v7/lib/components/molecules/Performance/functions;' * Update:: import { updatePerformanceEndV2 } to '@mikezimm/fps-core-v7/lib/components/molecules/Performance/functions;' * Update:: import { IAnySourceItem } to '@mikezimm/fps-core-v7/lib/components/molecules/AnyContent/IAnyContent;' * Update:: import { IAnySourceItemAny } to '@mikezimm/fps-core-v7/lib/components/molecules/AnyContent/IAnyContent;' */ // import { IAnySourceItem, sortObjectArrayByNumberKey } from '../../../fpsReferences'; // import { getArrayOfWordsFromString } from './getWordsFromString'; // import { startPerformOpV2, updatePerformanceEndV2 } from '@mikezimm/fps-library-v2/lib/components/molecules/Performance/functions'; import { sortObjectArrayByNumberKey } from "../../../logic/Arrays/sorting/numbers"; import { sortObjectArrayByChildNumberKey } from "../../../logic/Arrays/sorting/objects"; import { getArrayOfWordsFromString } from "../../../logic/Strings/getWordsFromString"; import { startPerformOpV2, updatePerformanceEndV2 } from "../../molecules/Performance/functions"; export function buildWordSummary(items, findWordsProp, splitWords, sortKey, minLength, exclusionsLC, sumProp = '') { const processOp = startPerformOpV2({ label: 'buildWordCount', includeMsStr: true }); let skippedWords = 0; const wordSummary = { // 2024-09-22: Added as IPerformanceOp to pass linting words: [], wordObjs: [], searchTextLC: [], skipped: [], performance: processOp }; items.map((item, itemIdx) => { const itemSourceString = findWordsProp.map(prop => { return item[prop] ? item[prop] : ''; }); const testString = itemSourceString.filter(item => { return item && item.length > 0; }).join(` `); // https://github.com/mikezimm/Compliance/issues/177 // if (testString.indexOf('(') > -1) { // console.log(`buildWordSummary`, testString); // } const itemWords = splitWords === true ? getArrayOfWordsFromString(testString, true, true, true, 'asis') : [testString]; itemWords.map(word => { const searchTextLC = word.toLocaleLowerCase(); // for https://github.com/mikezimm/Compliance/issues/132 const isExcluded = !exclusionsLC || exclusionsLC.length === 0 ? false : exclusionsLC.indexOf(searchTextLC) > -1 ? true : false; if (isExcluded === false && word.length >= minLength) { let wordIdx = wordSummary.searchTextLC.indexOf(searchTextLC); // Add new words to summary if (wordIdx === -1) { wordSummary.words.push(word); wordSummary.searchTextLC.push(searchTextLC); const wordObj = { word: word, searchTextLC: searchTextLC, count: 0, sum: 0, avg: 0, sourceIndexes: [], sourceStrings: [], originalIndex: wordSummary.words.length, }; wordSummary.wordObjs.push(wordObj); wordIdx = wordSummary.words.length - 1; } // Now update count, sum and avg wordSummary.wordObjs[wordIdx].count++; wordSummary.wordObjs[wordIdx].sourceIndexes.push(itemIdx); wordSummary.wordObjs[wordIdx].sourceStrings.push(itemSourceString.join('; ')); wordSummary.wordObjs[wordIdx].sum += sumProp && item[sumProp] ? item[sumProp] : 0; wordSummary.wordObjs[wordIdx].avg = wordSummary.wordObjs[wordIdx].sum / wordSummary.wordObjs[wordIdx].count; } else { skippedWords++; if (wordSummary.skipped.indexOf(word) === -1) wordSummary.skipped.push(word); } }); }); wordSummary.wordObjs = sortObjectArrayByChildNumberKey(wordSummary.wordObjs, 'desc', sortKey); // Resort the words by the given sort wordSummary.words = wordSummary.wordObjs.map(wordOb => { return wordOb.word; }); // 2024-09-22: Added as IPerformanceOp to pass linting wordSummary.performance = updatePerformanceEndV2({ op: processOp, updateMiliseconds: true, count: items.length }); console.log('Skipped words:', skippedWords, wordSummary.performance); return wordSummary; } export function updateWordSort(wordSummary, sortKey) { wordSummary.wordObjs = sortObjectArrayByNumberKey(wordSummary.wordObjs, 'desc', sortKey); return wordSummary; } //# sourceMappingURL=buildWordSummary.js.map