torbenrudgaard
torbenrudgaard

Reputation: 2551

Merging two functions into one to simplify the code

I got these two functions, and they work great. But since I only call global.replaceFields from global.translateAll then I want to get rid of global.replaceFields and put its functionality inside global.translateAll

How would you go about merging global.replaceFields into global.translateAll without losing the current functionality?

Thanks :)

// Translate everything in that field
global.translateAll = (textfield, usersLanguage) => {
    for (var property in textfield) {
        if (!textfield.hasOwnProperty(property)) {
            return false;
        } else if (typeof textfield[property] !== "object") {
            textfield[property] = global.replaceFields(textfield[property], usersLanguage);
        } else {
            global.translateAll(textfield[property], usersLanguage);
        }
    }
}

// Translate everything in that field
global.replaceFields = (textfield, usersLanguage) => {
    // Keep running until all fields are replaced
    while (textfield.indexOf("{{") != -1) {

        // isolate the field
        let fromField = textfield.substring((textfield.indexOf("{{") + 2), (textfield.indexOf("}}")));
        let toField   = ""

        // If its a translated text
        if (fromField.indexOf("trans") != -1) {
            toField = usersLanguage[fromField];
            textfield = textfield.replace("{{" + fromField + "}}", toField);
        }
    }
    return (textfield);
}

Upvotes: 0

Views: 31

Answers (1)

S. Strempfer
S. Strempfer

Reputation: 298

This should work

global.translateAll = (textfield, usersLanguage) => {
    var replaceFields = (textfield, usersLanguage) => {
        // Keep running until all fields are replaced
        while (textfield.indexOf("{{") != -1) {

            // isolate the field
            let fromField = textfield.substring((textfield.indexOf("{{") + 2), (textfield.indexOf("}}")));
            let toField   = ""

            // If its a translated text
            if (fromField.indexOf("trans") != -1) {
                toField = usersLanguage[fromField];
                textfield = textfield.replace("{{" + fromField + "}}", toField);
            } 
        }
        return (textfield);
    }


    for (var property in textfield) {
        if (!textfield.hasOwnProperty(property)) {
            return false;
        } else if (typeof textfield[property] !== "object") {
            textfield[property] = replaceFields(textfield[property], usersLanguage);
        } else {
            global.translateAll(textfield[property], usersLanguage);
        }
    }
}

Upvotes: 1

Related Questions