Показать сообщение отдельно
Старый 21.09.2009, 19:24
codfelix вне форума Посмотреть профиль Отправить личное сообщение для codfelix Найти все сообщения от codfelix
  № 43  
Ответить с цитированием
codfelix
 
Аватар для codfelix

Регистрация: Jul 2009
Сообщений: 47
По умолчанию Помогите дописать парсер

Помогите дописать парсер

Вот по этому принципу (код FaMinor)
Для кнопки сенд нужно дописать парсер.
Принцип его такой:
Для формирования строки для отправки создается 2 массива. В первом (arr) записываюся координаты начала применения любых тегов.
Во второй (arrBI) - признак набора тегов.
Если признак = 1 - то это болд
Если признак = 2 - то это италик
Если признак = 3 - то это болд и италик
Если признак = 0 - теги были закрыты.
Останется согласно первого массива разбить весь текст на куски и согласно вторго раставить теги. При этом следует следить когда теги открываются и когда закрываются. Для этого ввести еще 2 переменные в которых фиксировать состояние тегов.

Код флешки
Код AS1/AS2:
var arr:Array = [];
var arrBI:Array = [];
var n = 0;
var m = arr.length/2-1;
Selection.setFocus("txt_txt");
Selection.setSelection(arr[n], arr[n+1]);
//
function getIndexs() {
	if (Selection.getBeginIndex() != -1 && Selection.getEndIndex() != -1) {
		startIndex = Selection.getBeginIndex();
		endIndex = Selection.getEndIndex();
	}
}
function checkFormat(val, startIndex, endIndex) {
	var obj1 = txt_txt.getTextFormat(startIndex, endIndex);
	return (obj1[val]);
}
function doChange(val) {
	var varBoolen;
	varBoolen = checkFormat(val, startIndex, endIndex) ? (false) : (true);
	var obj1 = new TextFormat();
	obj1[val] = varBoolen;
	txt_txt.setTextFormat(startIndex, endIndex, obj1);
	setSelection();
}
txt_txt.onChanged = getIndexs;
var mouseListener = new Object();
mouseListener.onMouseUp = getIndexs;
Mouse.addListener(mouseListener);
//
function calculatePositionBold_and_italic() {
	arr = [];
	arrBI = [];
	var changing:Boolean = false;
	var setFormat:Number = 0;
	var setFormat1:Number = 0;
	for (var i:Number = 0; i<txt_txt.text.length-1; i++) {
		setFormat = 0;
		var fmt:TextFormat = txt_txt.getTextFormat(i, i+1);
		var fmtc = fmt.bold;
		var fmti = fmt.italic;
		if (fmtc) {
			setFormat = 1;
		}
		if (fmti) {
			setFormat += 2;
		}
		if (setFormat == 0 && changing == true) {
			arr.push(i);
			arrBI.push(setFormat);
			changing = false;
		} else if (setFormat>0 && setFormat != setFormat1) {
			arr.push(i);
			arrBI.push(setFormat);
			changing = true;
		} else if (setFormat>0 && changing == false) {
			arr.push(i);
			arrBI.push(setFormat);
			changing = true;
		}
		setFormat1 = setFormat;
		setFormat = 0;
	}
	if (changing == true) {
		arr.push(txt_txt.text.length+1);
		changing = false;
	}
}
function calculatePositionItalic() {
	arr = [];
	var changing:Boolean = false;
	for (var i:Number = 0; i<txt_txt.text.length; i++) {
		var fmt:TextFormat = txt_txt.getTextFormat(i, i+1);
		var fmtc = fmt.italic;
		if (fmtc == 0 && changing == true) {
			arr.push(i);
			changing = false;
		} else if (fmtc != 0 && changing == false) {
			arr.push(i);
			changing = true;
		}
	}
	if (changing == true) {
		arr.push(txt_txt.text.length+1);
		changing = false;
	}
}
btn.onPress = function() {
	doChange("bold");
};
btni.onPress = function() {
	doChange("italic");
};
mb.onPress = function() {
	calculatePositionBold_and_italic();
	trace(arr);
	trace(arrBI);
};
function pars(ss) {
	var l = arr.length;
	var arr2:Array = [];
	if (arr[0] != 0) {
		for (i=0; i<l; i += 2) {
			arr2[i] = ss.substring(i, arr[i]);
			arr2[i+1] = "<b>"+ss.substring(arr[i], arr[i+1])+"</b>";
		}
		arr2[i] = ss.substring(arr[i-1], arr[l]);
	} else {
		arr2[0] = "<b>"+ss.substring(0, arr[1])+"</b>";
		for (i=1; i<l-1; i += 2) {
			arr2[i] = ss.substring(arr[i]+1, arr[i+1]);
			arr2[i+1] = "<b>"+ss.substring(arr[i+1], arr[i+2])+"</b>";
		}
		arr2[i] = ss.substring(arr[i-1], arr[l]);
	}
	return (arr2.join(""));
}
function parsi(ss) {
	var l = arr.length;
	var arr2:Array = [];
	if (arr[0] != 0) {
		for (i=0; i<l; i += 2) {
			arr2[i] = ss.substring(i, arr[i]);
			arr2[i+1] = "<i>"+ss.substring(arr[i], arr[i+1])+"</i>";
		}
		arr2[i] = ss.substring(arr[i-1], arr[l]);
	} else {
		arr2[0] = "<i>"+ss.substring(0, arr[1])+"</i>";
		for (i=1; i<l-1; i += 2) {
			arr2[i] = ss.substring(arr[i]+1, arr[i+1]);
			arr2[i+1] = "<i>"+ss.substring(arr[i+1], arr[i+2])+"</i>";
		}
		arr2[i] = ss.substring(arr[i-1], arr[l]);
	}
	return (arr2.join(""));
}
Вложения
Тип файла: rar test7.rar (3.4 Кб, 45 просмотров)