Конвертор тегов SQL.RU в HTMLДанной процедуре передается параметром имя текстового файла, где лежит нужный для
конвертирования текст. После конвертирования процедура на выходе создаст текстовый файл,
прибавив к имени обрабатываемого префикс "_new", в котором и будет лежать HTML версия
обработанного текста.
CREATE PROCEDURE "DBA"."RUSUG_Convert" (
IN @FileName char(512)
)
BEGIN
DECLARE @T long varchar;
DECLARE @I1 unsigned int;
DECLARE @I2 unsigned int;
SET @T = xp_read_file(@FileName);
IF IsNull(@T, '') = ''
THEN
RAISERROR 20000 'Файл "' || @FileName || '" не найден';
RETURN;
END IF;
SET @I1 = Locate(@FileName, '.', -1);
IF @I1 > 0
THEN
SET @FileName = Left(@FileName, @I1 - 1) || '_new' || SubStr(@FileName, @I1);
ELSE
SET @FileName = @FileName || '_new';
END IF;
SET @T = Replace(@T, '<', '<');
SET @T = Replace(@T, '>', '>');
SET @T = Replace(@T, '&', '&');
SET @T = Replace(@T, '[b]', '<b>');
SET @T = Replace(@T, '[/b]', '</b>');
SET @T = Replace(@T, '[i]', '<i>');
SET @T = Replace(@T, '[/i]', '</i>');
SET @T = Replace(@T, '[center]', '<center>');
SET @T = Replace(@T, '[/center]', '</center>');
SET @T = Replace(@T, '[li]', '<li>');
SET @T = Replace(@T, '[u]', '<u>');
SET @T = Replace(@T, '[/u]', '</u>');
SET @I1 = Locate(@T, '[color=');
WHILE @I1 > 0
LOOP
SET @I2 = Locate(@T, ']', @I1);
IF @I2 = 0
THEN
RAISERROR 20000 'Не обнаружен конец тега "COLOR" рядом с ' || SubStr(@T, @I1, @I1 + 20);
RETURN;
END IF;
SET @T = Stuff(@T, @I1, @I2 - @I1 + 1, '<font color="' || SubStr(@T, @I1 + 7, @I2 - @I1 - 7) || '">');
SET @I1 = Locate(@T, '[color=');
END LOOP;
SET @T = Replace(@T, '[/color]', '</font>');
SET @I1 = Locate(@T, '[size=');
WHILE @I1 > 0
LOOP
SET @I2 = Locate(@T, ']', @I1);
IF @I2 = 0
THEN
RAISERROR 20000 'Не обнаружен конец тега "SIZE" рядом с ' || SubStr(@T, @I1, @I1 + 20);
RETURN;
END IF;
SET @T = Stuff(@T, @I1, @I2 - @I1 + 1, '<font size="+' || SubStr(@T, @I1 + 6, 1) || '">');
SET @I1 = Locate(@T, '[size=');
END LOOP;
SET @T = Replace(@T, '[/size]', '</font>');
SET @I1 = Locate(@T, '[src');
WHILE @I1 > 0
LOOP
SET @I2 = Locate(@T, ']', @I1);
IF @I2 = 0
THEN
RAISERROR 20000 'Не обнаружен конец тега "SRC" рядом с ' || SubStr(@T, @I1, @I1 + 20);
RETURN;
END IF;
SET @T = Stuff(@T, @I1, @I2 - @I1 + 1, '<pre>');
SET @I2 = Locate(@T, '[/src]', @I1);
IF @I2 = 0
THEN
RAISERROR 20000 'Не обнаружен завершающий тег "/SRC" рядом с ' || SubStr(@T, @I1, @I1 + 20);
RETURN;
END IF;
SET @I1 = @I1 + 5;
SET @T = Stuff(@T, @I1, @I2 - @I1, Replace(SubStr(@T, @I1, @I2 - @I1), Char(13) || Char(10), Char(13) || Char(1)));
SET @I1 = Locate(@T, '[src');
END LOOP;
SET @T = Replace(@T, '[/src]', '</pre>');
SET @I1 = Locate(@T, '[url=');
WHILE @I1 > 0
LOOP
SET @I2 = Locate(@T, ']', @I1);
IF @I2 = 0
THEN
RAISERROR 20000 'Не обнаружен конец тега "URL" рядом с ' || SubStr(@T, @I1, @I1 + 20);
RETURN;
END IF;
SET @T = Stuff(@T, @I1, @I2 - @I1 + 1, '<a target="_blank" href="' || SubStr(@T, @I1 + 5, @I2 - @I1 - 5) || '">');
SET @I1 = Locate(@T, '[url=');
END LOOP;
SET @T = Replace(@T, '[/url]', '</a>');
SET @T = Replace(@T, Char(13) || Char(10), Char(13) || Char(10) || '<BR>');
SET @T = Replace(@T, Char(13) || Char(1), Char(13) || Char(10));
CALL xp_write_file (@FileName, @T);
END;
|