Files
Superalgos/Projects/Foundations/UI/Utilities/Strings.js
T

129 lines
4.6 KiB
JavaScript

function newFoundationsUtilitiesStrings() {
let thisObject = {
allWordsToUpper: allWordsToUpper,
fromCamelCaseToUpperWithSpaces: fromCamelCaseToUpperWithSpaces,
isCamelCase: isCamelCase,
replaceSpecialCharactersForSpaces: replaceSpecialCharactersForSpaces,
cleanTextOfCommonWordEndings: cleanTextOfCommonWordEndings
}
return thisObject
function allWordsToUpper(text) {
let splittedText = text.split(' ')
let result = ''
for (let i = 0; i < splittedText.length; i++) {
let word = splittedText[i]
word = word.charAt(0).toUpperCase() + word.slice(1)
result = result + ' ' + word
}
return result.trim()
}
function fromCamelCaseToUpperWithSpaces(text) {
let result = text.replace(/([A-Z])/g, " $1");
return result.charAt(0).toUpperCase() + result.slice(1);
}
function isCamelCase(text) {
/*
We are not only going to detect standard Camel Case, but also
we will accept strings with numbers and dots, so that
object paths test positive.
*/
/* Check that there are not invalid symbols */
let result = /^[A-Za-z0-9.]+$/.test(text)
if (result === false) { return false }
/* Check that first char is a letter in lower case*/
result = /^[a-z]+$/.test(text[0])
if (result === false) { return false }
let upperCaseDetected = false
let numbersDetected = false
let dotsDetected = false
for (let i = 1; i < text.length; i++) {
let character = text[i]
result = /^[0-9]+$/.test(character)
if (result === true) {
numbersDetected = true
if (text[i - 1] === '.') { return false }
}
result = /^[A-Z]+$/.test(character)
if (result === true) {
upperCaseDetected = true
if (text[i - 1] === '.') { return false }
}
if (character === '.') {
dotsDetected = true
if (text[i-1] !== undefined && text[i+1] !== undefined && text[i-1] !== '.' && text[i+1] !== '.'){
return true
}
}
}
/* Check that there is at lest one upper case before numbers or dots */
if (upperCaseDetected === false) {
return false
}
return true
}
function replaceSpecialCharactersForSpaces(text) {
let result = text
result = result.replaceAll('. ', ' ')
result = result.replaceAll(', ', ' ')
result = result.replaceAll('- ', ' ')
result = result.replaceAll('/ ', ' ')
result = result.replaceAll('_ ', ' ')
result = result.replaceAll(': ', ' ')
result = result.replaceAll('; ', ' ')
result = result.replaceAll('( ', ' ')
result = result.replaceAll(') ', ' ')
result = result.replaceAll('{ ', ' ')
result = result.replaceAll('} ', ' ')
result = result.replaceAll('[ ', ' ')
result = result.replaceAll('] ', ' ')
result = result.replaceAll('" ', ' ')
result = result.replaceAll('\\n ', ' ')
result = result.replaceAll('\\ ', ' ')
result = result.replaceAll('.', ' ')
result = result.replaceAll(',', ' ')
result = result.replaceAll('-', ' ')
result = result.replaceAll('/', ' ')
result = result.replaceAll('_', ' ')
result = result.replaceAll(':', ' ')
result = result.replaceAll(';', ' ')
result = result.replaceAll('(', ' ')
result = result.replaceAll(')', ' ')
result = result.replaceAll('{', ' ')
result = result.replaceAll('}', ' ')
result = result.replaceAll('[', ' ')
result = result.replaceAll(']', ' ')
result = result.replaceAll('"', ' ')
result = result.replaceAll('\\n', ' ')
result = result.replaceAll("\\", ' ')
result = result.replaceAll('@', ' ')
result = result.replaceAll(' ', ' ')
result = result.replaceAll(' ', ' ')
result = result.replaceAll(' ', ' ')
return result
}
function cleanTextOfCommonWordEndings(text) {
let result = UI.projects.foundations.utilities.strings.replaceSpecialCharactersForSpaces(text)
result = result.replaceAll(' ', '')
result = result.replaceAll('s', '')
result = result.replaceAll('ing', '')
result = result.replaceAll('ed', '')
result = result.replaceAll('y', '')
result = result.replaceAll('ies', '')
return result
}
}