Какой элегантный способ реализовать функцию, которая генерирует вывод в формате text / html? - PullRequest
3 голосов
/ 16 февраля 2012

Моя функция анализирует текст, захватывает части и генерирует текст только в формате электронной почты.Но это также должно генерировать HTML-формат.

Мозговой путь - использовать if ... else ... и добавлять дополнительные html-теги вокруг каждого абзаца или элемента.Но это нарушит СУХОЕ (не повторяется) правило.

Есть ли элегантный способ решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Как сказал @Pointy, вы должны изучить шаблоны. Шаблоны jQuery , хотя и в бета-версии, достаточно хороши - хотя есть много альтернатив для хороших шаблонов JavaScript.

В вашем случае вы бы сделали что-то вроде:

$.template("textTemplate", "Hi ${name}!\n\nWelcome as a member!");
$.template("htmlTemplate", "<h1>Hi ${name}!</h1><p>Welcome as a member!</p>");

А затем используйте их так:

var emailText = $.tmpl("textTemplate", data);

// Show the html
$.tmpl("htmlTemplate", data).appendTo("#container");
0 голосов
/ 16 февраля 2012

Вы можете использовать серию регулярных выражений для заполнения тегов HTML. Но имейте в виду, что существует множество предупреждений, чтобы не использовать RegEx для анализа html: RegEx соответствует открытым тегам, за исключением автономных тегов XHTML

Я бы реализовал регулярные выражения следующим образом:

textVAR=YourTextInput;
htmlVAR=textVAR.replace(Reg Ex, "New html tags");// run through a series of RegEx
htmlVAR=htmlVAR.replace(Reg Ex, "New html tags");// fill in html tags where needed
htmlVAR=htmlVAR.replace(Reg Ex, "New html tags");// be sure to add "/g" to your RegEx to make it global
htmlVAR=htmlVAR.replace(Reg Ex, "New html tags");
alert(htmlVAR);

Больше ресурсов: Поиск URL-адресов затруднен: http://www.codinghorror.com/blog/2008/10/the-problem-with-urls.html

Рассмотрите возможность использования PHP - вот хороший ресурс для поиска разрывов строк: http://us2.php.net/nl2br

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...