Вывести строку в формате HTML - PullRequest
1 голос
/ 07 мая 2010

Я хотел бы знать, есть ли какой-нибудь способ преобразовать простую строку в кодировке Unicode в HTML в Genshi, поэтому, например, он переводит символы новой строки как <br/>.

Я хочу, чтобы это отображало некоторый текст, введенный в текстовой области.

Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 07 мая 2010

Если Genshi работает так же, как KID (что и должно быть), тогда все, что вам нужно сделать, это

${XML("&lt;p&gt;Hi!&lt;/p&gt;")}

У нас есть небольшая функция для преобразования из формата вики в HTML

def wikiFormat(text):
    patternBold = re.compile("(''')(.+?)(''')")
    patternItalic = re.compile("('')(.+?)('')")
    patternBoldItalic = re.compile("(''''')(.+?)(''''')")
    translatedText = (text or "").replace("\n", "<br/>")
    translatedText = patternBoldItalic.sub(r'<b><i>\2</i></b>', textoTraducido or '')
    translatedText = patternBold.sub(r'<b>\2</b>', translatedText or '')
    translatedText = patternItalic.sub(r'<i>\2</i>', translatedText or '')
    return translatedText

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

${XML(wikiFormat(text))}
0 голосов
/ 07 мая 2010
  1. Преобразование обычного текста в HTML, экранируя символы "<" и "&" (и, возможно, еще немного, но эти два являются абсолютным минимумом) как объекты HTML

  2. Заменить каждую новую строку текстом "<br />", возможно, все еще в сочетании с новой строкой.

В таком порядке.

В целом, это не должно быть больше, чем несколько строк кода Python. (Я не занимаюсь Python, но любой программист на Python должен легко это сделать.)

edit Я нашел код в сети для первого шага. Для шага 2 см. string.replace внизу этой страницы .

0 голосов
/ 07 мая 2010

На случай, если кому-то будет интересно, я так решил. Это код Python перед отправкой данных в шаблон genshi.

from trac.wiki.formatter import format_to_html
from trac.mimeview.api import Context
...
    context = Context.from_request(req, 'resource')
    data['comment'] = format_to_html(self.env, context, comment, True)
    return template, data, None
0 голосов
/ 07 мая 2010

Возможно, используйте тег <pre>.

...