示例#1
0
文件: dir.js 项目: gavinning/dir
		return arr.some(function(_filter){
			// 检查元素是否为字符串
			if(typeof _filter == 'string'){

				// 转换通配符
				_filter = _filter.replace('*.', '[\\s\\S]+\\.');
				_filter = _filter.replace('.*', '\\.[\\s\\S]+');

				// 执行条件检查
				try{
					return obj.match(new RegExp(_filter));
				}catch(e){
					throw e;
				}
			}
			// 检查元素是否为regexp对象
			if(lib.type(_filter) == 'regexp'){

				// 执行条件检查
				try{
					return obj.match(_filter);
				}catch(e){
					throw e;
				}
			}
		})
示例#2
0
文件: page.js 项目: gavinning/xyzning
		drag: function(files, target, e){
			var ul = $(this.pageId).find('.list-folder ul');
			var hash;

			if(ul.length == 0) return;

			// 获取aside过滤hash
			this.asideHash ? "" : this.asideHash = {};
			hash = this.asideHash;

			// 添加文件夹方法
			function add(file){
				ul.append('<li path="'+file.path+'">'+file.name+'<i class="idel"></i></li>')

			}

			// 监听drag事件
			lib.each(files, function(i, item){
				if(lib.isDir(item.path)){
					if(!hash[item.path]){
						hash[item.path] = true;
						add(item);
					}
				}
			})

			this.dragCallback(files, target, e);
		}
示例#3
0
文件: page.js 项目: gavinning/xyzning
			lib.each(files, function(i, item){
				if(lib.isDir(item.path)){
					if(!hash[item.path]){
						hash[item.path] = true;
						add(item);
					}
				}
			})
示例#4
0
	setCache: function(){
		var workplace = [];

		// 获取workplace
		$('.workplace').each(function(){
			var obj = {};
			obj.server = $(this).find('.serverPath').val();
			obj.local = $(this).find('.localPath').val();

			if(obj.server && obj.local)
				workplace.push(obj)
		})

		lib.extend(app.config.config, {
			// for server
			serverEnable	: $('#serverEnable').prop('checked'),
			serverApi		: $('#serverApi').val(),
			username		: $('#username').val(),
			password		: $('#password').val(),
			workplace		: workplace,

			// for less
			lessEnable		: $('#lessEnable').prop('checked'),
			defaultHome		: $('#defaultHome').prop('checked'),
			defaultCompress	: $('#defaultCompress').prop('checked')
		});

		// 更新数据
		db.data.find({name: page.id}, function(e, docs){
			if(e){
				page.tips('数据库链接失败');
				console.log(e);
			}

			if(docs.length == 0){
				db.data.insert(app.config, function(e, doc){
					if(e) return page.tips('配置更新失败');
					app.config = doc;
					page.tips('配置更新成功');
				})
			}else{
				db.data.update({name: page.id}, app.config, function(e, num){
					if(e) return page.tips('配置更新失败');
					page.tips('配置更新成功');
				})
			}
		})

	},
示例#5
0
文件: dir.js 项目: gavinning/dir
		arr.forEach(function(sub){
			var tmpSrc = path.join(_url, sub);
			var isFilterFile;
			var isFilterFolder;
			var isOnlyFile;
			var isOnlyFolder;

			// 处理文件
			if(lib.isFile(tmpSrc)){
				// 判断是否为应该过滤的文件
				isFilterFile = verify(opt.filterFile, sub);
				// 不被过滤的文件进行下一步处理
				if(!isFilterFile){

					// 判断是否已指定需要的文件
					// 当存在指定文件时,过滤不需要的文件,将指定文件放进files数组
					if(opt.onlyFile.length > 0){
						// 判断是否为指定的文件
						isOnlyFile = verify(opt.onlyFile, sub);
						// 指定的文件放入数组
						if(isOnlyFile){
							files.push(tmpSrc);
						}

					// 当不存在指定文件时,直接将文件放进数组
					}else{
						files.push(tmpSrc);
					}
				}
			}
			
			// 处理文件夹
			if(lib.isDir(tmpSrc)){
				// 判断是否为应该过滤的文件夹
				isFilterFolder = verify(opt.filterFolder, sub);
				// 不被过滤的文件夹进行下一步处理
				if(!isFilterFolder){
					
					// 判断是否已指定需要的文件夹
					// 当存在指定文件夹时,过滤不需要的文件夹,将指定文件夹放进folders数组
					if(opt.onlyFolder.length > 0){
						// 判断是否为指定的文件夹
						isOnlyFolder = verify(opt.onlyFolder, sub);
						// 指定的文件夹放入数组
						if(isOnlyFolder){
							folders.push(tmpSrc);

							// 判断是否执行递归
							if(opt.deep){
								deepDir(tmpSrc);
							}
						}

					// 当不存在指定文件夹时,直接将文件夹放进数组
					}else{
						folders.push(tmpSrc);

						// 判断是否执行递归
						if(opt.deep){
							deepDir(tmpSrc);
						}
					}
				}
			}
		})
示例#6
0
文件: dir.js 项目: gavinning/dir
// 遍历文件夹
function dir(url, opt){
	var result = {};
	var files = result.files = [];
	var folders = result.folders = [url];
	var defaults = {
		// 是否进行递归
		deep 			: true,

		// 过滤规则将以正则表达式方式进行判断,其中*被转换成通配符
		// 将优先执行过滤规则
		filterFile		: ['^.*', '.svn-base', '_tmp', '副本', 'desktop.ini', '.DS_Store'],
		filterFolder	: ['^.git$', '^.svn$'],


		// 将在过滤规则之后执行指定规则
		// 指定规则将以正则表达式方式进行判断,其中*被转换成通配符,同过滤规则
		onlyFile		: [],
		// 慎用,过滤的文件夹将不会进行递归检查
		onlyFolder		: []
	}

	// 不符合规则的url,直接返回
	if(!url || !lib.isDir(url)) return result;

	// 合并参数
	opt = lib.extend(defaults, opt);

	// 条件检查
	function verify(arr, obj){
		return arr.some(function(_filter){
			// 检查元素是否为字符串
			if(typeof _filter == 'string'){

				// 转换通配符
				_filter = _filter.replace('*.', '[\\s\\S]+\\.');
				_filter = _filter.replace('.*', '\\.[\\s\\S]+');

				// 执行条件检查
				try{
					return obj.match(new RegExp(_filter));
				}catch(e){
					throw e;
				}
			}
			// 检查元素是否为regexp对象
			if(lib.type(_filter) == 'regexp'){

				// 执行条件检查
				try{
					return obj.match(_filter);
				}catch(e){
					throw e;
				}
			}
		})
	}

	// 递归
	function deepDir(_url){
		var arr = fs.readdirSync(_url);

		// 遍历当前文件夹子级
		arr.forEach(function(sub){
			var tmpSrc = path.join(_url, sub);
			var isFilterFile;
			var isFilterFolder;
			var isOnlyFile;
			var isOnlyFolder;

			// 处理文件
			if(lib.isFile(tmpSrc)){
				// 判断是否为应该过滤的文件
				isFilterFile = verify(opt.filterFile, sub);
				// 不被过滤的文件进行下一步处理
				if(!isFilterFile){

					// 判断是否已指定需要的文件
					// 当存在指定文件时,过滤不需要的文件,将指定文件放进files数组
					if(opt.onlyFile.length > 0){
						// 判断是否为指定的文件
						isOnlyFile = verify(opt.onlyFile, sub);
						// 指定的文件放入数组
						if(isOnlyFile){
							files.push(tmpSrc);
						}

					// 当不存在指定文件时,直接将文件放进数组
					}else{
						files.push(tmpSrc);
					}
				}
			}
			
			// 处理文件夹
			if(lib.isDir(tmpSrc)){
				// 判断是否为应该过滤的文件夹
				isFilterFolder = verify(opt.filterFolder, sub);
				// 不被过滤的文件夹进行下一步处理
				if(!isFilterFolder){
					
					// 判断是否已指定需要的文件夹
					// 当存在指定文件夹时,过滤不需要的文件夹,将指定文件夹放进folders数组
					if(opt.onlyFolder.length > 0){
						// 判断是否为指定的文件夹
						isOnlyFolder = verify(opt.onlyFolder, sub);
						// 指定的文件夹放入数组
						if(isOnlyFolder){
							folders.push(tmpSrc);

							// 判断是否执行递归
							if(opt.deep){
								deepDir(tmpSrc);
							}
						}

					// 当不存在指定文件夹时,直接将文件夹放进数组
					}else{
						folders.push(tmpSrc);

						// 判断是否执行递归
						if(opt.deep){
							deepDir(tmpSrc);
						}
					}
				}
			}
		})
	};

	// 递归
	deepDir(url);

	return result;
}
示例#7
0
文件: page.js 项目: gavinning/xyzning
	this.extend = function(obj){
		return lib.extend(this, obj);
	}