fix(core): update

This commit is contained in:
Philipp Kunz 2023-08-31 16:31:23 +02:00
parent 14ba4465d9
commit 1fc95fcf0e
5 changed files with 1705 additions and 500 deletions

View File

@ -26,11 +26,11 @@
}, },
"homepage": "https://gitlab.com/pushrocks/smartstring#readme", "homepage": "https://gitlab.com/pushrocks/smartstring#readme",
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.66", "@git.zone/tsbuild": "^2.1.66",
"@gitzone/tsrun": "^1.2.42", "@git.zone/tsrun": "^1.2.42",
"@gitzone/tstest": "^1.0.74", "@git.zone/tstest": "^1.0.74",
"@push.rocks/tapbundle": "^5.0.8", "@push.rocks/tapbundle": "^5.0.15",
"@types/node": "^20.3.1" "@types/node": "^20.5.7"
}, },
"dependencies": { "dependencies": {
"@push.rocks/isounique": "^1.0.5", "@push.rocks/isounique": "^1.0.5",

2149
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -9,8 +9,7 @@ tap.test('should normalize a string', async () => {
`; `;
const normalizedString = smartstring.normalize.standard(testString); const normalizedString = smartstring.normalize.standard(testString);
expect(normalizedString).toEqual( expect(normalizedString).toEqual(
` `myawesome string;
myawesome string;
is indented with two spaces is indented with two spaces
` `
); );

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smartstring', name: '@push.rocks/smartstring',
version: '4.0.8', version: '4.0.9',
description: 'handle strings in smart ways. TypeScript ready.' description: 'handle strings in smart ways. TypeScript ready.'
} }

View File

@ -10,13 +10,42 @@ export const replaceAll = (stringArg: string, searchPattern: string, replacement
return stringArg.replace(new RegExp(searchPattern, 'g'), replacementString); return stringArg.replace(new RegExp(searchPattern, 'g'), replacementString);
}; };
export interface INormalizeOptions {
stripLeadingTrailingEmptyLines?: boolean;
stripAllEmptyLines?: boolean;
stripIndent?: boolean;
normalizeNewline?: boolean;
replaceTabs?: boolean;
}
/** /**
* normalizes a string * Normalizes a string
* @param stringArg * @param stringArg
* @param options
*/ */
export const standard = (stringArg: string): string => { export const standard = (stringArg: string, options?: INormalizeOptions): string => {
let fix1 = plugins.stripIndent(stringArg); // fix indention let result = stringArg;
let fix2 = plugins.normalizeNewline(fix1); // fix newlines
let fix3 = replaceAll(fix2, '\t/', ' '); // fix tabs if (!options || options.stripIndent) {
return fix3; result = plugins.stripIndent(result); // fix indention
}
if (!options || options.normalizeNewline) {
result = plugins.normalizeNewline(result); // fix newlines
}
if (!options || options.replaceTabs) {
result = replaceAll(result, '\t/', ' '); // fix tabs
}
if (!options || options.stripLeadingTrailingEmptyLines) {
result = result.replace(/^\s*[\r\n]/gm, '').replace(/\s*[\r\n]$/gm, '');
}
if (!options || options.stripAllEmptyLines) {
result = result.replace(/^\s*[\r\n]/gm, '');
}
return result;
}; };