parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Валяйте...

Sanja v.2 05.03.2005 12:46

Держите прототип, можете сами довести до ума.

Нужен ispell, собранный под Windows, и русский dic-файл (найдёте, Яндекс в помощь). Бросьте ispell.exe, russian.aff и russian.hash в папку /etc/ispell сайта. Создайте в этой папке run_from_webpage.bat следующего содержания (исправив его текст под себя):
@REM
@REM ####################################################################
@REM #                                                                  #
@REM #   bat-файл - "прокладка" между parser и ispell                   #
@REM #                                                                  #
@REM ####################################################################
@REM
@ECHO OFF
@ECHO Content-type: text/plain
@ECHO.
@ECHO.
SETLOCAL
@REM Обратите внимание, что используются имена файлов в формате 8.3
SET ISPELLDICTDIR=C:\4F3E~1\GFK_FO~1\DE27~1\LOCALH~1\HTML\ETC\ISPELL
%ISPELLDICTDIR%\ispell.exe -a -B -d russian  < %1
ENDLOCAL
ERASE /Q /F %1
затем создаёте в корневой папке ispell.html такого содержания:
@main[]

#
# Это чтобы страница не попадала в кэш браузера, а каждый раз 
# запрашивалась бы с сайта заново:
#

$response:cache-control[ $.value[0]]
$response:pragma[        $.value[no-cache]]

#
# А тут, собственно, текст самой страницы, выдаваемый браузеру:
#

$result[<?xml version="1.0" encoding="windows-1251"?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
	    <head>
	        <title>Тест ispell</title>
	    </head>
	    <body>

			<h1>Тест ispell</h1>

#			Получаем значение формы:
			$message[^taint[optimized-html][$form:message]]
#			Если оно задано, выполняем проверку грамматики:
			^if(def $message){
#				Сохраняем поле формы в текстовый файл:
				$random[${request:document-root}etc/ispell/temp/ispell_temp_file_^math:uid64[].txt]
				^message.save[$random] 
#				Не забываем заменить unix-слэши на windows:				
				$windows_slashes[^table::create{from	to
/	\}]
#				Вызываем ispell.exe и скармливаем ему наш файл:				
				$ispelled[^file::cgi[C:\4F3E~1\GFK_FO~1\DE27~1\LOCALH~1\html\etc\ispell\run_from_webpage.bat;;"^random.replace[$windows_slashes]"]]
				$tbl_message_ispell[^table::create{lin
$ispelled.text}]
#				Таблица для хранения слов с ошибками и вариантами:
				$tbl_suggestions[^table::create{word	suggestions}]
				^tbl_message_ispell.menu{
#					<i>$tbl_message_ispell.lin</i> <br>
					^if( ^tbl_message_ispell.lin.left(1) eq "*" || ^tbl_message_ispell.lin.left(1) eq "@"){}{
						$dummy[
							^tbl_message_ispell.lin.match[& (.+) (\d+) (\d+): (.+)][]{^tbl_suggestions.append{$match.1	$match.4}}
							^tbl_message_ispell.lin.match[# (.+) (\d+)][]{^tbl_suggestions.append{$match.1	?}}
						]
					}
				}
				
				<pre>$message</pre>
				
				^tbl_suggestions.menu{
					<i>$tbl_suggestions.word ------> $tbl_suggestions.suggestions</i>
				}[<br>]
							
				<p><a href="./ispell.html">another test</a>
			}{
				<form action="./ispell.html" method="post">
					<textarea name="message" rows="7" cols="50"></textarea>
					<input type=submit>			
				</form>
			}
	    </body>
	</html>
] 
Не забудьте отредактировать путь к bat-файлу в коде (ОБЯЗАН быть в формате 8.3)