<commit_before>/**
 * JSON数据处理器
 * @author 王刚
 * @version 1.0.0
 * @date 2015/03
 */

var SimpleModel = (function(){

    "use strict";

    var _simpleModel = {},
        _data        = {},
        _originData  = {},
        _events      = {};

    /**
     * 基于现有数据来初始化
     * @param {object} data 需要传入的JSON数据
     * @return {object} 返回_simpleModel对象以便于链式操作
     */
    function _init (data) {

        var _item;

        data = typeof data === "object" ? data : {};
        _originData = _clone(data);

        for (_item in data) {

            if (data.hasOwnProperty(_item)) {
                _nestedSet(_item, data[_item]);
            }

        }

        return _simpleModel;

    }

    /**
     * 设置一个属性的值,如果没有,则新增属性
     * @param {string} property 属性名称
     * @param {all} value       属性值,可以是任何合法的类型
     * @return {object}         返回_simpleModel对象以便于链式操作
     * @uses _nestedSet("object-name","name")/_nestedSet("object.name","name");
     */
    function _nestedSet(property, value) {

        var propNames,propLength,tempObj,tempProp,_item;

        if (typeof property === "string") {

            propNames = property.split('.');
            propLength = propNames.length - 1;
            tempObj = _data;

            for (var i = 0; i <= propLength ; i++) {

                if (i !== propLength) {
                    tempObj = tempObj[propNames[i]] =  tempObj[propNames[i]] || {}
                } else {
                    tempObj = tempObj[propNames[i]] = value;
                }

                tempProp = propNames.slice(0,i).join(".");
                _trigger("change", tempProp, _nestedGet(tempProp));
            }
            _trigger("change", property, value);

        } else if (typeof property === "object") {

            for (_item in property) {

                //if (property.hasOwnProperty(_item)) {
                    _nestedSet(_item, property[_item]);
                //}

            }

        }

        return _simpleModel;

    }


    //遗弃方法
    function _set (property, value) {

        var _prop,_propN,_propI,_item;


        if (typeof property === "string") {

            if ( _trigger("beforechange", property, value) === false) {
                return false;
            }

            if (property.indexOf(".") > 0) {

                _prop  = property.split(".");
                _propN = _prop[0];
                _propI = _prop[1];

                typeof _data[_propN] !== "object" && (_data[_propN] = {});
                _data[_propN][_propI] = value;
                _trigger("change", _propN, _nestedGet(_propN));

            } else {

                _data[property] = value;

            }

            _trigger("change", property, value);

        } else if (typeof property === "object") {

            for (_item in property) {

                if (property.hasOwnProperty(_item)) {
                    _set(_item, property[_item]);
                }

            }

        }

        return _simpleModel;

    };

    /**
     * 获取属性值
     * @param  {string} property      属性名称
     * @param  {boolean} [originData] 是否是从源数据中获取
     * @return {all}                  可以是任意合法的数据
     * @uses _nestedGet("object-name")//_nestedGet("object.name")
     */
    function _nestedGet (property) {

        var _path = property.split(".");
        var _pathDepth = _path.length;
        var _objTemp = arguments[1] ? _originData : _data;

        for (var _i = 0; _i <= _pathDepth; _i ++) {

            if (_i === _pathDepth ) {
                return _objTemp;
            } else {

                if (typeof _objTemp[_path[_i]] === "undefined") {
                    return null;
                }

                _objTemp = _objTemp[_path[_i]];

            }

        }

    }

    //遗弃方法
    function _get (property) {

        var _tempData,_prop,_propN,_propI;

        _tempData = arguments[1] ? _originData : _data;

        if (typeof property === "string" ) {

            if (_tempData.hasOwnProperty(property)) {
                return _tempData[property];
            } else if (property.indexOf(".") > 0) {

                _prop  = property.split(".");
                _propN = _prop[0];
                _propI = _prop[1];

                if (_tempData.hasOwnProperty(_propN) && _tempData[_propN].hasOwnProperty(_propI)) {
                    return _tempData[_propN][_propI];
                } else {
                    return null;
                }

            } else {
                return null;
            }
                
        } else {
            return null;
        }

    };
<commit_msg>删除了遗弃方法<commit_after>/**
 * JSON数据处理器
 * @author 王刚
 * @version 1.0.0
 * @date 2015/03
 */

var SimpleModel = (function(){

    "use strict";

    var _simpleModel = {},
        _data        = {},
        _originData  = {},
        _events      = {};

    /**
     * 基于现有数据来初始化
     * @param {object} data 需要传入的JSON数据
     * @return {object} 返回_simpleModel对象以便于链式操作
     */
    function _init (data) {

        var _item;

        data = typeof data === "object" ? data : {};
        _originData = _clone(data);

        for (_item in data) {

            if (data.hasOwnProperty(_item)) {
                _nestedSet(_item, data[_item]);
            }

        }

        return _simpleModel;

    }

    /**
     * 设置一个属性的值,如果没有,则新增属性
     * @param {string} property 属性名称
     * @param {all} value       属性值,可以是任何合法的类型
     * @return {object}         返回_simpleModel对象以便于链式操作
     * @uses _nestedSet("object-name","name")/_nestedSet("object.name","name");
     */
    function _nestedSet(property, value) {

        var propNames,propLength,tempObj,tempProp,_item;

        if (typeof property === "string") {

            propNames = property.split('.');
            propLength = propNames.length - 1;
            tempObj = _data;

            for (var i = 0; i <= propLength ; i++) {

                if (i !== propLength) {
                    tempObj = tempObj[propNames[i]] =  tempObj[propNames[i]] || {}
                } else {
                    tempObj = tempObj[propNames[i]] = value;
                }

                tempProp = propNames.slice(0,i).join(".");
                _trigger("change", tempProp, _nestedGet(tempProp));
            }
            _trigger("change", property, value);

        } else if (typeof property === "object") {

            for (_item in property) {

                //if (property.hasOwnProperty(_item)) {
                    _nestedSet(_item, property[_item]);
                //}

            }

        }

        return _simpleModel;

    }

    /**
     * 获取属性值
     * @param  {string} property      属性名称
     * @param  {boolean} [originData] 是否是从源数据中获取
     * @return {all}                  可以是任意合法的数据
     * @uses _nestedGet("object-name")//_nestedGet("object.name")
     */
    function _nestedGet (property) {

        var _path = property.split(".");
        var _pathDepth = _path.length;
        var _objTemp = arguments[1] ? _originData : _data;

        for (var _i = 0; _i <= _pathDepth; _i ++) {

            if (_i === _pathDepth ) {
                return _objTemp;
            } else {

                if (typeof _objTemp[_path[_i]] === "undefined") {
                    return null;
                }

                _objTemp = _objTemp[_path[_i]];

            }

        }

    }

{'fraction_non_alphanumeric': 0.12962459194776932, 'fraction_numerical': 0.004760609357997824, 'mean_word_length': 1.4347682119205298, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '205795', 'n_tokens_mistral': 2354, 'n_tokens_neox': 2247, 'n_words': 433}