2013-05-17 1 views
5

오늘 nanoc (haml 템플릿)에서 내 페이지를 구현 중이며 markdown에 일부 게시물을 작성하려고했지만 여러 줄 코드 블록으로 이동하면 이상한 일이 발생했습니다. 코드 블록에는 추가 탭이 있습니다. 나는 다음과 같은 여러 인하 구문, 시도했다 :다중 코드 블록 markdown에 불필요한 탭이 추가되었습니다.

//double tab wrapping 
    line 1 is fine 
    line 2 is wrapping (don't know why!) 

~~~ 
//tilde code wrapping 
line 1 is fine 
line 2 is wrapping 
~~~ 

를 그리고 두 솔루션은 나에게이 같은 결과 일 수 있습니다 : 브라우저는 것을 보여준다 통해

line 1 is fine 
    line 2 is wrapping 

검사 요소를 추가 공백이 없습니다.이 공백은 탭으로 구성됩니다.
누군가 나를 도와 줄 수 있습니까? 어쩌면 내가 뭔가 잘못하고있는 걸까요?

답변

5

Haml에서 =을 사용하여 스크립트 결과를 포함 시키면 Haml은 삽입 된 텍스트를 다시 들여 쓰기하여 포함 된 텍스트의 들여 쓰기와 일치시킵니다.

%html 
    %body 
    .foo 
     = insert_something 

insert_something이 같은 일부 HTML 반환 : 다음

<p> 
This is possily generated from Markdown. 
</p> 

을 결과 HTML은 다음과 같이 표시됩니다

<html> 
    <body> 
    <div class='foo'> 
     <p> 
     This is possily generated from Markdown. 
     </p> 
    </div> 
    </body> 
</html> 
당신이 HAML이있는 경우 예를 들어, 그것은 다음과 같이 보입니다

p 요소가 문서의 위치와 일치하도록 들여 쓰여진 모양에 유의하십시오. 일반적으로 HTML의 공백을 없애기 때문에 이것은 중요하지 않습니다. 그러나 공백이 중요한 HTML 요소, 특히 pre이 있습니다. 그것은 여기에 무슨 일이 일어나고처럼 보이는 무엇

은 마크 다운 그것이 당신의 HAML 파일에 포함 된 경우와 (당신이 포함 = yield와 HAML 레이아웃을 사용하고 추측하고있어

<pre><code>line 1 is fine 
line 2 is wrapping 
</code></pre> 

같은 것을 생성하는 것입니다 Markdown) 페이지를 볼 때 페이지가 들여 쓰기되고 공백이 표시됩니다. 추가 공백이 없도록 첫 번째 줄이 여는 태그 바로 뒤에 어떻게 있는지 주목하십시오.

이 문제를 해결할 수있는 몇 가지 방법이 있습니다. :ugly option을 설정하면 Haml은 다음과 같은 블록을 다시 들여 쓰지 않습니다 (미안 해요, Nanoc에서 Haml 옵션을 어떻게 설정했는지 모르겠습니다).

find_and_preserve helper method을 사용할 수도 있습니다. 들여 쓰기를 할 때이 여분의 공백의 영향을받지 않도록 이것은 HTML 엔티티 &#x000A;에 공백 민감한 태그의 모든 줄 바꿈을 대체

= find_and_preserve(yield) 

HAML이 find_and_preserve를 사용하는 쉬운 방법을 제공합니다; ~ works the same as =, except that it runs find_and_preserve on the result이므로 할 수 있습니다.

~ yield 
+0

감사합니다! 'find_and_preserve' 메소드는 매력처럼 작동합니다! :) – mrmnmly

+1

내가 잘못 본 것이 아니라면'= find_and_preserve (yield)'대신'~ yield '를 사용할 수 있습니다. – ddfreyne

+0

@ddfreyne - 맞습니다. ['~'는'= find_and_preserve'와 동일하게 작동합니다.] (http://haml.info/docs/yardoc/file.REFERENCE.html#tilde). 나는 대답에 그것을 추가 할 것이다. – matt