2015-09-30 6 views
1

У меня есть HTML, введенный пользователем, который отображается в шаблоне Yesod. Я хотел бы преобразовать этот HTML-код, удаляя из него атрибуты style, прежде чем он будет отображаться, но я не могу узнать, как это сделать.Как преобразовать некоторый Blaze `Html` перед его рендерингом с Yesod?

Если мой шаблон содержит #{ html } я могу передать html в качестве значения с помощью функции просто писать #{ transform html }, если функция transform имеет подпись: transform :: Html -> Html где Html является типом, определяемым blaze-htmlhere. Проблема, которую я вижу, в том, что Blaze, похоже, не раскрывает функциональности, полезной для того, чтобы ходить по дереву HTML или даже просто получать потомков заданного Html. Итак, какие стратегии вы бы предложили? Должен ли я попытаться проникнуть внутрь внутренних органов Blaze?

Я не уверен, что это должно рассматриваться исключительно как проблема с Blaze. Преобразование Html элементов не является одним из основных вариантов использования Blaze, поэтому эту проблему нужно решать в контексте рендеринга с Yesod

ответ

1

Вы должны сначала визуализировать текст или ByteString, а blaze не предоставляет никаких средств для анализа содержимого. Затем вы можете обрабатывать данные с помощью библиотеки, например html-conduit или tagsoup (что и делает xss-sanitize).

+0

Спасибо, это заставляет меня думать, что выполнение такого рода преобразований при визуализации страницы - плохая идея. Я должен скорее дезинфицировать этот контент, прежде чем хранить его в базе данных – danza

 Смежные вопросы

  • Нет связанных вопросов^_^