2014-07-13 4 views
0

나는 lazyseq을 생산하는이 스 니펫에 문제가 있고 확대 된 템플릿을 만들고 있습니다. REPL에서이 sniptest를 시도하면 "[email protected]"가 생성됩니다.Clojure : 왜 sniptest LazySeq을 생산하고 있습니까

(h/sniptest (template-div) 
    [:div.Row] (h/content (map #(value-cell %) 
    (for [e(:data-content msh-contents)] 
     (vals e))))) 

(require '[net.cgrand.enlive-html :as h]) 

    (def msh-contents {:title "Events mashup", 
         :data-content [{:title "ICTM Study Group ", 
            :url "http://some-url.com"} 
            {:title "Volodja Balzalorsky - Hinko Haas", 
            :url "http://some- other-url.com"} 
            ]}) 

    (defn template-div[] (h/html-resource "index.html")) 

    (h/defsnippet value-cell (template-div) 
          [:div.Row :div.Cell] [value] 
          (h/content value)) 

index.html 파일이 같은 (그것은 또한 여기 http://www.filedropper.com/index_25을 찾을 수 있습니다))

<div class="Table"> 
    <div class="Title"> 
    <p>This is a Table</p> 
    </div> 
    <div class="Heading"> 
    <div class="Cell"> 
     <p>Heading 1</p> 
    </div> 
    </div> 
    <div class="Row"> 
    <div class="Cell"> 
     <p>Row 1 Column 1</p> 
    </div> 
    </div> 
보이는 것처럼이 보이는 테스트하는 데 필요한 코드의 나머지

나는 비슷한 질문을 보았지만 해결책은 html 콘텐츠 대신 콘텐츠를 사용하는 것이 었습니다. 예에서 소스가 HTML 문자열이 아닌 형태로 얼마나 "Loads an HTML resource, returns a seq of nodes."

주의 사항 : html-resource 문서화 문자열에서 https://github.com/cgrand/enlive/wiki/Getting-started

x=> (sniptest "<html><body><span>Hello </span>" 
     [:span] (append "World")) 
"<html><body><span>Hello World</span></body></html>" 

에서 여기에 문제가 ...

+0

부적절한 들여 쓰기가 실제로 demotivating입니다. –

+0

@ A.Webb 들여 쓰기를 변경했습니다. 죄송합니다. – Vesna

답변

1

예 원인이 무엇인지 확실하지 a seq of nodes. 그것은 저를 친다 않는 방식으로 작동하지만 당신은 아마 다음 할 것입니다 이유 :

(h/sniptest (clojure.string/join (h/emit* (template-div))) ; this feeds it a html str instead 
[:div.Row] (h/content (map #(value-cell %) 
(for [e(:data-content msh-contents)] 
    (vals e))))) 

PS : 당신은 내가 지금까지 존재 인식 때문에 대한 sniptest를 사용하는 무엇. 그럼 다시 이상한 방식으로 사용합니다 (deftemplates 또는 defsnippets, hiccup 스타일 html 사용, 매크로 사용 빈도).

+0

스 니펫이 LazySeq을 생성했기 때문에 내 deftemplate이 작동하지 않기 때문에 이것을 사용했습니다. 이것은 작동하지만, 내 deftemplate 여전히하지 않습니다 : ( – Vesna

+0

당신은 시간이 있다면 여기에 질문을 볼 수 있습니다 http://stackoverflow.com/questions/24727208/clojure-enlive-deftemplate-cant-use-snippet – Vesna