Как бы вы пошли на автоматическое обнаружение текстиля против Markdown? - PullRequest
4 голосов
/ 26 сентября 2008

Я рассматриваю возможность поддержки как Текстиль , так и Уценка в текущем проекте. Я бы предпочел не заставлять пользователей выбирать один или другой. Есть ли способ автоматического определения того, какой пользователь использует? Как бы вы пошли об этом? Я хотел бы найти / разработать решение для JavaScript и PHP, чтобы я мог предоставлять предварительный просмотр в реальном времени, а также обрабатывать пользовательский ввод на стороне сервера.

Ответы [ 3 ]

6 голосов
/ 26 сентября 2008

Учтите, что пользователи могут использовать только один определенный синтаксический элемент в сообщении, поэтому вам придется проверять все. Ищу "h1." очевидно, работает только если пользователь использует именно этот элемент.

Это довольно легко с такими вещами, как заголовки, но учтите, что форматы уценки *this* как <em>this</em> и Textile преобразуют это в <strong>this</strong> Таким образом, у вас будут неоднозначные синтаксические конструкции, которые будут давать разные результаты на каждом языке.

Я бы предложил пойти с выбором пользователя. Постарайтесь выяснить, какой синтаксис обычно предпочитают ваши пользователи (или вы), предложите флажок «использовать x вместо y» для тех, кто хочет другой выбор.

3 голосов
/ 26 сентября 2008

Это действительно не должно быть так сложно. Уценка не поддерживает следующий синтаксис:

h1. Header

p. Paragraph

... так что вы просто сканируете это, чтобы проверить, текстильное ли это. Очень простое регулярное выражение для начала работы (поиск строк, начинающихся с hX. Или p.) В коде PHP:

if (preg_match('/^(p|h[1-6])\. /m', $subject)) 
{
    // Successful match
} else 
{
    // Match attempt failed
}

Вы, вероятно, сможете написать собственное регулярное выражение для поиска Markdown.

1 голос
/ 26 сентября 2008

Автоопределение, я не знаю, оба они основаны на "естественной" типизации.
Возможно, вы можете попросить пользователя выбрать формат с помощью пары радиокнопок или чего-то еще.

...