#f# #fslab
#f# #fslab
Вопрос:
Я хотел бы отправить некоторый html (сгенерированный из моего кода F #) в журнал FsLab, но, похоже, не могу найти правильное заклинание, чтобы это произошло.
Если у меня есть функция в моем коде, которая возвращает фрагмент html, есть ли способ перенести это непосредственно на страницу, не будучи окруженным <pre>
тегом?
Я пробовал, например:
let f () =
"""Some <b>bold</b> sample"""
let htmlContent = f ()
затем
(*** include-value:htmlContent ***)
но вывод — это просто сам HTML-код, отформатированный как вывод.
Я погрузился в страницы F # formatting GH и нашел (*** raw ***)
нужную команду, поэтому я тоже попробовал:
(*** include-value:htmlContent, raw ***)
но выходные данные по-прежнему окружаются <pre>
<code>
тегами amp;.
Возможно ли просто отправить необработанный html таким образом без <pre>
тега?
Ответ №1:
Если вы используете последнюю версию, вы можете добавить пользовательские HTML-принтеры с помощью fsi.AddHtmlPrinter
. Нам нужно улучшить документы FsLab, но это также используется интерактивной службой F # в Atom.
Чтобы передать необработанный HTML, вы можете включить что-то вроде этого в свой скрипт:
(*** hide ***)
type Html = Html of string
#if HAS_FSI_ADDHTMLPRINTER
fsi.AddHtmlPrinter(fun (Html h) ->
seq [], h)
#endif
Затем вы должны иметь возможность создавать HTML-узлы с:
let b = Html("""Some <b>bold</b> sample""")
(*** include-value:b ***)
Комментарии:
1. Спасибо, Томас, похоже, это именно то, что я искал, но, похоже, у меня нет fsi.AddHtmlPrinter (я получаю: «поле, конструктор или элемент не определены») Нужна ли мне более новая версия самого fsi?
2. Аааа — теперь я понял, это продолжение: github.com/ionide/FsInteractiveService/blob /… да? — Спасибо, Томас
3. @Stewart_R К сожалению, VS не знает об этом методе — именно поэтому я использую
#if
его, чтобы скрыть его — но журнал FsLab определяетHAS_FSI_ADDHTMLPRINTER
символ и добавляет элемент кfsi
объекту, поэтому он будет запущен (даже если VS думает, что этого не будет!)