emilepharand/Babilonia

View on GitHub
server/utils/expressionStringUtils.ts

Summary

Maintainability
A
0 mins
Test Coverage
import {type IdeaForAdding} from 'server/model/ideas/ideaForAdding';

export function normalizeIdea(ideaForAdding: IdeaForAdding) {
    trimExpressions(ideaForAdding);
    normalizeWhitespace(ideaForAdding);
    trimContext(ideaForAdding);
}

export function trimExpressions(ideaForAdding: IdeaForAdding) {
    ideaForAdding.ee.forEach(e => {
        e.text = e.text.trim();
    });
    return ideaForAdding;
}

export function trimContext(ideaForAdding: IdeaForAdding) {
    ideaForAdding.ee.forEach(e => {
        e.text = e.text.replaceAll(/\s(?=\))|(?<=\()\s/g, '');
    });
    return ideaForAdding;
}

export function normalizeWhitespace(ideaForAdding: IdeaForAdding) {
    ideaForAdding.ee.forEach(e => {
        e.text = e.text.replaceAll(/\s+/g, ' ');
    });
    return ideaForAdding;
}

export function removeContextAndWhitespace(textWithContext: string): string {
    return removeContext(textWithContext).replace(/\s/g, '');
}

export function removeContext(textWithContext: string): string {
    return textWithContext
        // Remove everything between parentheses
        .replace(/\([^()]*\)/g, '');
}