API Типограф
Один из вариантов использовать Типограф на своем сайте — fly-typograf.js. Подключается легко и быстро, умеет править тексты прямо в момент ввода.
Вебсервис
Чтобы на вашем сайте тексты обрабатывались Типографом, необходимо встроить его в вашу CRM. Идеальный вариант — обрабатывать тексты перед сохранением в базу данных.
Чтобы отправить текст на проверку нужно выполнить POST запрос по адресу https://typograf.ru/webservice/ где в параметре text передать текст. Примеры кода на разных языках ниже.
Чтобы результат выдавался в кодировке
Если вам недостаточно дефолтных настроек, вы можете передать вместе с текстом параметр 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> </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[–]]></minus-sign> <!-- Переносы --> <hyphen insert="0" length="0" /> <!-- Акронимы --> <acronym insert="1"></acronym> <!-- Вывод символов 0 - буквами 1 - числами --> <symbols type="0" /> <!-- Параметры ссылок --> <link target="" class="" /> </preferences>
Расшифровка настроек
- tags (теги) — значения: 0 — не расставлять; 1 — расставлять. Атрибут delete — значения: 0 — не удалять; 1 — удалять до типографирования; 2 — удалять после типографирования.
- paragraph (параграфы) — атрибут insert: 1 — ставить; 0 — не ставить. start/end теги задают внешний вид обрамления параграфа, начальные и конечные теги соответственно (могут быть пустыми).
- newline — перевод строки. Атрибут insert: 1 — ставить; 0 — не ставить. Внутри тега пишутся теги перевода строки.
- dos-text — удаляет одинарные переводы строк и переносы. Атрибут delete: 0 — не удалять; 1 — удалять.
- nowraped — неразрывные конструкции. Атрибут insert: 1 — ставить; 0 — не ставить. Атрибут nonbsp: 0 — не использовать неразрывные конструкции вместо (неразрывного пробела); 1 — наоборот. Атрибут length: не объединять в неразрывные конструкции слова, написанные через дефис, с общей длинной больше N знаков. Если 0 то не используется. start/end аналогично параграфам.
- hanging-punct — висячая пунктуация. Атрибут insert: 1 — использовать; 0 — не использовать.
- hanging-line — висячие строки. Атрибут delete: 1 — удалять; 0 — не удалять.
- minus-sign — указывает какой символ использовать вместо знака минус: — – или −.
- acronym — выделять сокращения. Атрибут insert: 1 — выделять; 0 — не выделять.
- symbols — как выводить типографированный текст. Атрибут type: 0 — буквенными символами ( ); 1 — числовыми ( ).
- link — добавляет дополнительные атрибуты к ссылкам
Настройки можно ставить в любом порядке. Количество настроек можно сокращать и использовать только необходимые, остальные настройки будут браться по-умолчанию.
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()