Handlebars Helper - musishui/WebStudy GitHub Wiki

Handlebars.registerHelper("convertToArray", function (ctx, pattern, options) {
    var obj = $.extend({}, ctx);
    var keys = pattern.split(".");
    var arr = convertToArray(obj, keys, 0);
    return options.fn(arr);
});

Handlebars.registerHelper("eq", function (v1, v2, options) {
    if (compare(v1, v2) == 0) {
        //满足添加继续执行
        return options.fn(this);
    } else {
        //不满足条件执行{{else}}部分
        return options.inverse(this);
    }
});

Handlebars.registerHelper("gt", function (v1, v2, options) {
    if (compare(v1, v2) > 0) {
        //满足添加继续执行
        return options.fn(this);
    } else {
        //不满足条件执行{{else}}部分
        return options.inverse(this);
    }
});

Handlebars.registerHelper("lt", function (v1, v2, options) {
    if (compare(v1, v2) < 0) {
        //满足添加继续执行
        return options.fn(this);
    } else {
        //不满足条件执行{{else}}部分
        return options.inverse(this);
    }
});

function convertToArray(obj, keys, level) {
    level = level || 0;
    var arr = [obj];
    var children = [];
    obj["_level"] = level
    if (keys.length) {
        var key = keys.shift();
        if (obj[key] && obj[key].length) {
            for (var i = 0, l = obj[key].length; i < l; i++) {
                if (obj[key][i]) {
                    var nKeys = $.extend(true, [], keys);
                    children = children.concat(convertToArray(obj[key][i], nKeys, level + 1));
                }
            }
        }
        obj[key] = children.shift();
    }
    obj["_length"] = children.length + 1;
    return arr.concat(children);
}

function compare(v1, v2) {
    if (v1 === v2) return 0;
    else if (v1 > v2) {
        return 1;
    } else {
        return -1;
    }

}
⚠️ **GitHub.com Fallback** ⚠️