Есть ли способ передать HTML непосредственно в журнал FsLab из файла .fsx?

#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 думает, что этого не будет!)