helper.js 3.14 KB
/**
 * Created by LiuChuanYang on 2017/01/19.
 */


'use strict';

/**
 * and 逻辑运算
 * {{and arg1 arg2 ...}}
 * {{#and arg1 arg2 ...}}{{/and}}
 * @returns {*}
 */
exports.and = function() {

    let options = arguments[arguments.length - 1];
    let ret = false;
    let len = arguments.length - 1;
    let i = 1;

    if (len > 0) {
        ret = arguments[0];
        while (i < len) {
            ret = ret && arguments[i];
            i++;
        }
    }

    if (options.fn) {
        if (ret) {
            return options.fn(this);
        } else {
            return options.inverse(this);
        }
    } else {
        return ret;
    }
};

/**
 * or 逻辑运算 {{or arg1 arg2 ... }}
 * @returns {*}
 */
exports.or = function() {
    let options = arguments[arguments.length - 1];
    let ret = false;
    let len = arguments.length - 1;
    let i = 1;

    if (len > 0) {
        ret = arguments[0];
        while (i < len) {
            ret = ret || arguments[i];
            i++;
        }
    }

    if (options.fn) {
        if (ret) {
            return options.fn(this);
        } else {
            return options.inverse(this);
        }
    } else {
        return ret;
    }
};

/**
 * 大于逻辑  v1 > v2
 * @param v1
 * @param v2
 * @param options
 * @returns {*}
 */
exports.gt = function(v1, v2, options) {
    var ret = v1 > v2;

    if (options.fn) {
        if (ret) {
            return options.fn(this);
        } else {
            // 不满足条件执行{{else}}部分
            return options.inverse(this);
        }
    } else {
        return ret;
    }
};

/**
 * 大于等于逻辑 v1 >= v2
 * @param v1
 * @param v2
 * @param options
 * @returns {*}
 */
exports.ge = function(v1, v2, options) {
    var ret = v1 >= v2;

    if (options.fn) {
        if (ret) {
            return options.fn(this);
        } else {
            // 不满足条件执行{{else}}部分
            return options.inverse(this);
        }
    } else {
        return ret;
    }
};

/**
 * 小于逻辑 v1 < v2
 * @param v1
 * @param v2
 * @param options
 * @returns {*}
 */
exports.lt = function(v1, v2, options) {
    var ret = v1 < v2;

    if (options.fn) {
        if (ret) {
            return options.fn(this);
        } else {
            // 不满足条件执行{{else}}部分
            return options.inverse(this);
        }
    } else {
        return ret;
    }
};

/**
 * 小于等于逻辑 v1 <= v2
 * @param v1
 * @param v2
 * @param options
 * @returns {*}
 */
exports.le = function(v1, v2, options) {
    var ret = v1 <= v2;

    if (options.fn) {
        if (ret) {
            return options.fn(this);
        } else {
            // 不满足条件执行{{else}}部分
            return options.inverse(this);
        }
    } else {
        return ret;
    }
};

/**
 * 相等逻辑 v1 === v2
 * @param v1
 * @param v2
 * @param options
 * @returns {*}
 */
exports.eq = function(v1, v2, options) {
    var ret = v1 === v2;

    if (options.fn) {
        if (ret) {
            return options.fn(this);
        } else {
            // 不满足条件执行{{else}}部分
            return options.inverse(this);
        }
    } else {
        return ret;
    }
};