Показать сообщение отдельно
  #1 (permalink)  
Старый 17.02.2010, 10:35
Новичок на форуме
Отправить личное сообщение для Nitrogen Посмотреть профиль Найти все сообщения от Nitrogen
 
Регистрация: 17.02.2010
Сообщений: 6

Парсилка текста на jQ
Всем дня.

Задача следующая. Имеются блоки комментариев, по ним пробегается цикл на jQ и парсит текст, вставляя при этом вместо текстовых смайлов - графические, вместо линков на видео - соотв.видео плееры...

Все это дело было найдено на чистой яве, но поскольку для прочего функционала и плюшек было решено прикрутить именно jQ, задача встала в переписании сего функционала под фреймворк.

Не вкурю как что-то подобное перевести на jQ ?

function smile() {
	var map = [
				['angel',	/O:-\)/gi],
				['smile',	/:-\)/gi]
				
				
	]
	function xform(s) { 
		//s = s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
		for (var i = 0; i < map.length; i++) s = s.replace(map[i][1], '<img style="border:0px;" src="' + webPath +  '/images/smiles/' + map[i][0] +'.gif">')
		return s;
	}
	function smilize_node(text_node, p) {
		var s = text_node.data;
		var parent = p;
		if (!p) parent = text_node.parentNode;
		if (s.match(/\.write/)) {
			return;
		} try {
			var new_node = document.createElement("span");
			var new_content = xform(s);
			if (new_content != s) {
				new_node.innerHTML = new_content;
				parent.replaceChild(new_node, text_node);
			}
		}catch(e) {}
	}
	if (document.evaluate) { 
		var textnodes = document.evaluate( "//body//text()", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); 
		for (var i = 0; i < textnodes.snapshotLength; i++) { 
			node = textnodes.snapshotItem(i); 
			smilize_node(node, null);
		}
	} else {
		function processNode(node, parent) {
			if (node.nodeType == 3) {
				smilize_node(node, parent);
			} else if (node.nodeType == 1) {
				var i;                   
				for (i = 0; i < node.childNodes.length; i++) {
					processNode(node.childNodes[i], node);
				}
			}
		}
		processNode(document.body, document.body);
	}
}


Вот начальный кусок обработчика уже на jQЖ

$(document).ready (function() {
	var smiles = [
		['angel',	/O:-\)/gi],
		['smile',	/:-\)/gi]
	];
	$('div.comment').each(function() {
		// Smiles
		var message = $(this).text();
		for (var i = 0; i < smiles.length; i++) {



		}
	});
});
Ответить с цитированием