Объединение двух функций в одну для упрощения кода - PullRequest
0 голосов
/ 14 июля 2020

У меня есть эти две функции, и они отлично работают. Но поскольку я вызываю только global.replaceFields из global.translateAll, тогда я хочу избавиться от global.replaceFields и поместить его функциональность внутри global.translateAll

Как бы вы go слились global.replaceFields с global.translateAll без потери текущего функционала?

Спасибо :)

// 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);
}

1 Ответ

1 голос
/ 14 июля 2020

Это должно работать

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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...