Показать сообщение отдельно
  #5 (permalink)  
Старый 21.05.2012, 16:25
Интересующийся
Отправить личное сообщение для a1exei Посмотреть профиль Найти все сообщения от a1exei
 
Регистрация: 11.10.2011
Сообщений: 17

И так не получается. Вылетает ошибка too much recursion.
Вот код:

function generate() {
		to.value="";
		var txt=from.value;
		var strings=txt.split(/<br>|\r?\n/);
		//var str="";
		var p="(?:\\(([^\\)]*)\\)|([^\\s]+))";
		var pat=new RegExp(p+"\\|\\|"+p,"g");
		var gen_str=[];

	function find(str) {
		var strings=str;
		for(var i=0;i<strings.length;i++) {
			var parts=strings[i].match(pat);
			if(parts!==null && parts!==undefined) {
				var string=strings[i];
				var replaces=[];
				for(var k=0;k<parts.length;k++) {
					var splited=parts[k].split('||');
					if(splited!==undefined && splited!==null) {
						replaces[k]=splited;
					}
				}
				strings[i]=rep_(strings[i],replaces).join('\n');
			} else gen_str.push(strings[i]);
		}
		return strings;
	}


	function rep_(str,rep) {
		var str=str;
		var rep=rep;
		var stroki=[];
		for(var z=0;z<rep.length;z++) {
		var splited=rep[z];
		var spl=splited.join('||');
			for(var s=0;s<splited.length;s++) {
					var this_rep=str.replace(spl,splited[s]);					
					if(this_rep!==undefined && this_rep.indexOf('||')!==-1) {
						this_rep=rep_(this_rep,rep).join('\n');
					}
					stroki[stroki.length]=this_rep;
			}
		}
		return stroki;
	}
Ответить с цитированием