2016-10-13 1 views
1

나는 (F # 코드에서 생성 된) 일부 HTML을 FsLab 일지로 내보내고 싶지만 올바른 일을 할 수는 없다..fsx 파일에서 FsLab 저널로 직접 HTML을 내보내는 방법이 있습니까?

코드에 HTML 스 니펫을 반환하는 함수가있는 경우 <pre> 태그로 둘러싸이지 않고 페이지에 직접 가져 오는 방법이 있습니까?


나는 예를 들어, 시도 :

let f() = 
    """Some <b>bold</b> sample""" 
let htmlContent = f() 

다음

(*** include-value:htmlContent ***)

그러나 출력은 단지 HTML 코드 자체가 출력 같은 형식.

가 난 F 번호 형식 GH 페이지에 다이빙을했다 그래서 나는 또한 시도 (*** raw ***) 명령 발견

(*** include-value:htmlContent, raw ***)

하지만 출력이 여전히 <pre> & <code> 태그로 둘러싸인 도착합니다.

<pre> 태그를 사용하지 않고 이러한 방식으로 원시 HTML을 단순히 내보낼 수 있습니까?

답변

3

최신 버전을 사용하는 경우 fsi.AddHtmlPrinter을 사용하여 사용자 정의 HTML 프린터를 추가 할 수 있습니다. 우리는 FsLab 문서를 개선해야하지만, F# Interactive Service in Atom에서도 사용됩니다.

let b = Html("""Some <b>bold</b> sample""") 
(*** include-value:b ***) 
+0

감사 토마스,이처럼 보인다 : 당신과 함께 HTML 노드를 생성 할 수 있어야한다, 그리고

(*** hide ***) type Html = Html of string #if HAS_FSI_ADDHTMLPRINTER fsi.AddHtmlPrinter(fun (Html h) -> seq [], h) #endif 

:

은 스크립트에서이 같은 것을 포함 할 수 원시 HTML을 방출 내가 뭘 찾고 있었는지 모르겠지만 fsi.AddHtmlPrinter (필자는 : "필드, 생성자 또는 멤버가 정의되지 않았습니다")를 가지고있는 것 같지 않습니다. fsi 자체의 최신 버전이 필요합니까? –

+0

아 - 이제 알았어,이 extn : https://github.com/ionide/FsInteractiveService/blob/1868abbdb53ce3db9fd8a3714cc93501c1b5dda4/src/FsInteractiveService/Main.fs 예? 감사합니다. Tomas –

+2

@Stewart_R 슬프게도 VS는이 방법에 대해 모른다. 그래서 나는 그것을 숨기기 위해'# if'을 사용한다. 그러나 FsLab 저널은'HAS_FSI_ADDHTMLPRINTER' 심볼을 정의하고'fsi' 오브젝트에 멤버를 추가한다. VS가 실행된다고 생각하더라도 실행됩니다. –