//intSegments 整数列表
namespace string;

class intSegments{
	ctor( str ){
		
		if(type(str)=="number"){
			return {str}
		}
		elseif(type.isString(str) ){
			var r = {}
			var a = ..string.split(str,",");
		 
			for(i=#a;1;-1){
				var b,e = ..string.match(a[i],"(\d+)\s*-\s*(\d+)");
				if(b && e){
					var p = {}
					for(i=b;e;b>e?-1:1) ..table.push(p,i); 
					..table.append(r,p);
				}
				else {
					var n = tonumber(a[i]);
					if(n) ..table.push(r,n);
				}
			} 
  
  			..table.sort(r);
			return r; 
		}
		else {
			return null;
		} 
	}; 
}

intSegments.each = function(str){
	var a = ..string.intSegments(str); 
	if(!a) return function(){}
	
	return function(i){
		return ..table.next(a,i);
	}
}


/**intellisense()
string.intSegments = 用于解析文本格式的整数列表,支持区间表示法
string.intSegments(__) = 解析参数@1指定的整数列表,\n并返回数值从小到大排序后的数组,\n\n参数@1可以指定单个数值,或用文本指定多个数值,\n文本中数值用逗号分隔,允许用 - 指定数值区间,\n例如："6881-6889,6999",\n参数@1传入非文本非数值参数返回 null
string.intSegments.each(str) = @for i,num in ??.each(""){
	__/*调用 string.intSegments 解析字符串获得数值数组,\n并遍历该数组*/
}
end intellisense**/