UNPKG

@pushrocks/smartstring

Version:

handle strings in smart ways. TypeScript ready.

83 lines 5.64 kB
import * as plugins from './smartstring.plugins.js'; /** * splits a string into an array * @param stringArg */ const splitStringAtLineBreak = (stringArg) => { let resultArray = stringArg.split('\n'); return cleanStringArray(resultArray); }; /** * joins a string together again * @param stringArrayArg */ const joinStringWithLineBreaks = (stringArrayArg) => { let resultString = ''; for (let line of stringArrayArg) { resultString = resultString + line + '\n'; // add new line at end } return resultString; }; /** * cleans first and last line in case they are empty * @param stringArrayArg */ const cleanStringArray = (stringArrayArg) => { let testRegex = /^[\s]*$/; if (testRegex.test(stringArrayArg[0])) { stringArrayArg.shift(); } if (testRegex.test(stringArrayArg[stringArrayArg.length - 1])) { stringArrayArg.pop(); } return stringArrayArg; }; /** * indent an array * @param stringArg * @param spaceAmount */ export const indent = (stringArg, spaceAmount) => { let localStringArray = splitStringAtLineBreak(stringArg); for (let stringArg of localStringArray) { stringArg = ' '.repeat(spaceAmount) + stringArg; } let resultString = joinStringWithLineBreaks(localStringArray); return resultString; }; /** * indents a string with prefix * @param stringArg * @param prefixArg */ export const indentWithPrefix = (stringArg, prefixArg) => { let resultString; let stringArray = splitStringAtLineBreak(stringArg); let resultArray = []; for (let stringItem of stringArray) { resultArray.push(prefixArg + stringItem); } resultString = joinStringWithLineBreaks(resultArray); return resultString; }; export const normalize = (stringArg) => { let resultString; let splitStringArray = splitStringAtLineBreak(stringArg); let minCommonLeftOffset; const deIndentRegex = /^(\s*)/; const emptyLineRegex = /^(\s*)$/; for (let stringItem of splitStringArray) { let offsetString = deIndentRegex.exec(stringItem)[1]; if ((typeof minCommonLeftOffset === 'undefined' || offsetString.length < minCommonLeftOffset) && !emptyLineRegex.test(stringItem)) { minCommonLeftOffset = offsetString.length; } } let resultSplitStringArray = []; for (let stringItem of splitStringArray) { resultSplitStringArray.push(stringItem.substr(minCommonLeftOffset)); } resultString = joinStringWithLineBreaks(resultSplitStringArray); return resultString; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJpbmcuaW5kZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzdHJpbmcuaW5kZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFFcEQ7OztHQUdHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFNBQWlCLEVBQVksRUFBRTtJQUM3RCxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLGNBQXdCLEVBQVUsRUFBRTtJQUNwRSxJQUFJLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDOUIsS0FBSyxJQUFJLElBQUksSUFBSSxjQUFjLEVBQUU7UUFDL0IsWUFBWSxHQUFHLFlBQVksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsc0JBQXNCO0tBQ2xFO0lBQ0QsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQXdCLEVBQVksRUFBRTtJQUM5RCxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDMUIsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3JDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUN4QjtJQUNELElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzdELGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN0QjtJQUNELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxTQUFpQixFQUFFLFdBQW1CLEVBQVUsRUFBRTtJQUN2RSxJQUFJLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELEtBQUssSUFBSSxTQUFTLElBQUksZ0JBQWdCLEVBQUU7UUFDdEMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsU0FBUyxDQUFDO0tBQ2pEO0lBQ0QsSUFBSSxZQUFZLEdBQUcsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxTQUFpQixFQUFFLFNBQWlCLEVBQVUsRUFBRTtJQUMvRSxJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxXQUFXLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEQsSUFBSSxXQUFXLEdBQWEsRUFBRSxDQUFDO0lBQy9CLEtBQUssSUFBSSxVQUFVLElBQUksV0FBVyxFQUFFO1FBQ2xDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0tBQzFDO0lBQ0QsWUFBWSxHQUFHLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLFNBQWlCLEVBQVUsRUFBRTtJQUNyRCxJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxnQkFBZ0IsR0FBYSxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRSxJQUFJLG1CQUEyQixDQUFDO0lBRWhDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztJQUMvQixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFFakMsS0FBSyxJQUFJLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRTtRQUN2QyxJQUFJLFlBQVksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQ0UsQ0FBQyxPQUFPLG1CQUFtQixLQUFLLFdBQVcsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUFDO1lBQ3pGLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDaEM7WUFDQSxtQkFBbUIsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1NBQzNDO0tBQ0Y7SUFDRCxJQUFJLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztJQUNoQyxLQUFLLElBQUksVUFBVSxJQUFJLGdCQUFnQixFQUFFO1FBQ3ZDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztLQUNyRTtJQUNELFlBQVksR0FBRyx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQyJ9