— универсальное средство подготовки текстов к веб-изданиюверсия: 2.0

API Типограф

Один из вариантов использовать Типограф на своем сайте — fly-typograf.js. Подключается легко и быстро, умеет править тексты прямо в момент ввода.

Вебсервис

Чтобы на вашем сайте тексты обрабатывались Типографом, необходимо встроить его в вашу CRM. Идеальный вариант — обрабатывать тексты перед сохранением в базу данных.

Чтобы отправить текст на проверку нужно выполнить POST запрос по адресу https://typograf.ru/webservice/ где в параметре text передать текст. Примеры кода на разных языках ниже.

Чтобы результат выдавался в кодировке UTF-8 или koi8-r, необходимо передать дополнительный параметр chr=UTF-8 или chr=koi8-r. По-умолчанию кодировка Windows-1251.

Если вам недостаточно дефолтных настроек, вы можете передать вместе с текстом параметр xml, в котором указать валидный xml с настройками.

Пример дефолтных настроек:

<?xml version="1.0" encoding="windows-1251" ?>
<preferences>
	<!-- Теги -->
	<tags delete="0">1</tags>
	<!-- Абзацы -->
	<paragraph insert="1">
		<start><![CDATA[<p>]]></start>
		<end><![CDATA[</p>]]></end>
	</paragraph>
	<!-- Переводы строк -->
	<newline insert="1"><![CDATA[<br />]]></newline>
	<!-- Переводы строк <p>&nbsp;</p> -->
	<cmsNewLine valid="0" />
	<!-- DOS текст -->
	<dos-text delete="0" />
	<!-- Неразрывные конструкции -->
	<nowraped insert="1" nonbsp="0" length="0">
		<start><![CDATA[<nobr>]]></start>
		<end><![CDATA[</nobr>]]></end>
	</nowraped>
	<!-- Висячая пунктуация -->
	<hanging-punct insert="0" />
	<!-- Удалять висячие слова -->
	<hanging-line delete="0" />
	<!-- Символ минус -->
	<minus-sign><![CDATA[&ndash;]]></minus-sign>
	<!-- Переносы -->
	<hyphen insert="0" length="0" />
	<!-- Акронимы -->
	<acronym insert="1"></acronym>
	<!-- Вывод символов 0 - буквами 1 - числами -->
	<symbols type="0" />
	<!-- Параметры ссылок -->
	<link target="" class="" />
</preferences>                                                      

Расшифровка настроек

Настройки можно ставить в любом порядке. Количество настроек можно сокращать и использовать только необходимые, остальные настройки будут браться по-умолчанию.

Parser

...
<form method="post">
	^if(def $form:text){
		$file[^file::load[text;http://www.typograf.ru/webservice/;
					$.charset[windows-1251]
					$.method[POST]
					$.form[
					$.text[$form:text]
					$.xml[]
				]
			]
		]
	}
	<textarea name="text" rows="5" style="width: 50%">^if(def $file.text){$file.text}</textarea>
	<br />
	<input type="submit" value="типографировать" style="margin-top: 0.5em" />
</form>
...

Perl

#!/usr/bin/perl

use strict;
use warnings;
use LWP;

print "Content-type: text/plain\n\n";

my $browser = LWP::UserAgent->new;

my $word = 'Я от дедушки ушёл...';

my $url = 'http://www.typograf.ru/webservice/';
my $response = $browser->post( $url, [ 'text' => $word ] );

print $response->content;

PHP

<?php
/**
* Функция возвращает результат post запроса
* $host - хост сайта куда предполагается делать post запросы. Напр., имеется сайт
*    http://www.typograf.ru/webservice/, хостом в данном случае является www.typograf.ru
* $script - имя каталога или скрипта, который обрабатывает ваш post запрос.
*    Для сайта http://www.typograf.ru/webservice/ обработчиком будет каталог /webservice/.
* $data - это данные формата имя=значение, которые передаются для обработки. Для веб-сервиса
*    http://www.typograf.ru/webservice/ необходимо передать значение переменной text, поэтому
*    значение переменной $data будет text=текст для типографирования.
*/

function post($host,$script,$data)
{ 

	$fp = fsockopen($host,80,$errno, $errstr, 30 );  
         
	if ($fp) { 
		fputs($fp, "POST $script HTTP/1.1\n");  
		fputs($fp, "Host: $host\n");  
		fputs($fp, "Content-type: application/x-www-form-urlencoded\n");  
		fputs($fp, "Content-length: " . strlen($data) . "\n");
		fputs($fp, "User-Agent: PHP Script\n");  
		fputs($fp, "Connection: close\n\n");  
		fputs($fp, $data);  
		while(fgets($fp,2048) != "\r\n" && !feof($fp));
		unset($buf);
		while(!feof($fp)) $buf .= fread($fp,2048);
		fclose($fp); 
	}
	else{ 
		return "Сервер не отвечает"; 
	}
	return $buf; 
}

$word = 'Я от дедушки ушёл...';

$xml = '';

echo post('www.typograf.ru','/webservice/','text='.urlencode($word).'&xml='.urlencode($xml));
?>

Python

#!/usr/bin/env python
# -*- coding: cp1251 -*-

import urllib
url = "http://www.typograf.ru/webservice/"
params = urllib.urlencode( {"text":"Я от дедушки ушёл..."} )
f = urllib.urlopen(url, params)
print f.read()