<commit_before>/*
 * ------------------------------------------
 * 文件下载接口实现文件
 * @version  1.0
 * @author   genify(<EMAIL>)
 * ------------------------------------------
 */
var f = function(){
    var _  = NEJ.P,
        _e = _('nej.e'),
        _v = _('nej.v'),
        _u = _('nej.u'),
        _cache = {};
    /*
     * 执行另存为
     * @param  {Event} 节点标识
     * @return {Void}
     */
    var _doSaveAs = (function(){
        var _getFileInfo = function(_id){
            var _conf = _cache[_id];
            if (!_conf) return;
            var _url = _conf.url,
                _name = _conf.name;
            if (_u._$isFunction(_url)){
                _url = _url();
            }
            if (!_name){
                var _arr = _url.split('/');
                _name = _arr.pop();
            }
            return {
                url:_url,
                name:_name
            };
        };
        return function(_event){
            var _el = _v._$getElement(_event),
                _id = _e._$id(_el),
                _info = _getFileInfo(_id);
            if (!!_info){
                _el.href = _info.url;
                if ('download' in _el){
                    _el.download = _info.name;
                }else{
                    _el.target = '_blank';
                }
            }
        };
    })();
    /**
     * 绑定文件下载行为
     * 
     * 脚本举例
     * [code]
     *   // 统一定义名字空间简写
     *   var _  = NEJ.P,
     *       _e = _('nej.e');
     *   // 绑定文件下载行为
     *   _e._$bindSaveAsAction('button_id');
     * [/code]
     * 
     * @api    {nej.e._$bindSaveAsAction}
     * @param  {String|Node} 下载点击链接节点，必须是A节点
     * @param  {Object}      可选配置参数
     * @config {String|Function} url  下载文件地址或者地址生成函数
     * @config {String}          name 保存的文件名称，没有指定name则取url中文件名
     * 
     */
    _e._$bindSaveAsAction = function(_button,_options){
        var _id = _e._$id(_button);
        if (!!_cache[_id]) return;
        var _node = _e._$get(_button);
        if (_node.tagName!='A') return;
        _cache[_id] = NEJ.X({},_options);
        _v._$addEvent(_id,'click',_doSaveAs);
    };
    /**
     * 解绑文件下载行为
     * 
     * 脚本举例
     * [code]
     *   // 统一定义名字空间简写
     *   var _  = NEJ.P,
     *       _e = _('nej.e');
     *   // 文件另存为
     *   _e._$unbindSaveAsAction('button_id');
     * [/code]
     * 
     * @api    {nej.e._$unbindSaveAsAction}
     * @param  {String|Node} 下载点击按钮节点<commit_msg>comment<commit_after>/*
 * ------------------------------------------
 * 文件下载接口实现文件
 * @version  1.0
 * @author   genify(<EMAIL>)
 * ------------------------------------------
 */
var f = function(){
    var _  = NEJ.P,
        _e = _('nej.e'),
        _v = _('nej.v'),
        _u = _('nej.u'),
        _cache = {};
    /*
     * 执行另存为
     * @param  {Event} 节点标识
     * @return {Void}
     */
    var _doSaveAs = (function(){
        var _getFileInfo = function(_id){
            var _conf = _cache[_id];
            if (!_conf) return;
            var _url = _conf.url,
                _name = _conf.name;
            if (_u._$isFunction(_url)){
                _url = _url();
            }
            if (!_name){
                var _arr = _url.split('/');
                _name = _arr.pop();
            }
            return {
                url:_url,
                name:_name
            };
        };
        return function(_event){
            var _el = _v._$getElement(_event),
                _id = _e._$id(_el),
                _info = _getFileInfo(_id);
            if (!!_info){
                _el.href = _info.url;
                if ('download' in _el){
                    _el.download = _info.name;
                }else{
                    _el.target = '_blank';
                }
            }
        };
    })();
    /**
     * 绑定文件下载行为
     * 
     * 脚本举例
     * [code]
     *   // 统一定义名字空间简写
     *   var _  = NEJ.P,
     *       _e = _('nej.e');
     *   // 绑定文件下载行为
     *   _e._$bindSaveAsAction('button_id');
     * [/code]
     * 
     * @api    {nej.e._$bindSaveAsAction}
     * @param  {String|Node} 下载点击链接节点，必须是A节点
     * @param  {Object}      可选配置参数
     * @config {String|Function} url  下载文件地址或者地址生成函数
     * @config {String}          name 保存的文件名称，没有指定name则取url中文件名
     * @return {Void}
     */
    _e._$bindSaveAsAction = function(_button,_options){
        var _id = _e._$id(_button);
        if (!!_cache[_id]) return;
        var _node = _e._$get(_button);
        if (_node.tagName!='A') return;
        _cache[_id] = NEJ.X({},_options);
        _v._$addEvent(_id,'click',_doSaveAs);
    };
    /**
     * 解绑文件下载行为
     * 
     * 脚本举例
     * [code]
     *   // 统一定义名字空间简写
     *   var _  = NEJ.P,
     *       _e = _('nej.e');
     *   // 文件另存为
     *   _e._$unbindSaveAsAction('button_id');
     * [/code]
     * 
     * @api    {nej.e._$unbindSaveAsAction}
     * @param  {String|Node} 下载点击按钮节点
{'fraction_non_alphanumeric': 0.1806808859721083, 'fraction_numerical': 0.0008203445447087777, 'mean_word_length': 1.1598759964570415, 'pattern_counts': {'":': 0, '<': 5, '<?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': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '315965', 'n_tokens_mistral': 1833, 'n_tokens_neox': 1868, 'n_words': 275}