2012-05-31 20 views
3

我希望能夠將多行字符串傳遞給haml幫助程序。HAML模板幫助程序中的多行字符串

我有一個函數format_code,它接受一個字符串和一組行數來突出顯示。

此功能的目的是原始源轉換成HTML格式與高亮顯示的行,行數,轉換成BRS換行符等

如果我把它這樣的:

%p Some HAMl 

=format_code("def something 
    a = b 
    b = c 
end", :highlight_line => 2) 

%p Some more HAML 

的這樣做的理由是將代碼示例嵌入到HAML文檔中。

HAML抱怨用純文本嵌套。嵌套發生在一個字符串內,所以我認爲這將是確定的。 irb中的相同調用工作正常。

我會使用助手,但我希望能夠傳遞參數散列。有什麼想法嗎?

回答

2

我假設你想將代碼示例硬編碼到HAML模板中,所以你真的想要一些我的直接反應:「你不想要這個」。在這種情況下,我可能會選擇:

:ruby 
    code = <<-CODE 
    def something 
     a = b 
     b = c 
    end 
    CODE 

%p Some HAMl 

=format_code(code, :highlight_line => 2) 

%p Some more HAML 
+0

這是正確的解決方案。謝謝! – superluminary

+0

有沒有辦法讓一個':ruby'塊輸出到haml? –

0

我嘗試不同的變體,我認爲最簡單的一種是以下(直接從你的拍攝代碼):

%p Some HAMl 

=format_code("def something\t a = b\t b = c\tend", :highlight_line => 2) 

%p Some more HAML 

這至少應該有多條線路的問題...

+0

謝謝,但問題是我必須將我的代碼重新格式化到一行。我正在創建內容,因此需要保持清晰。 – superluminary

+0

因此,也許使用這個答案中的技術http://stackoverflow.com/a/1475274/41540可以給你另一個工作的解決方案。你將ruby代碼移動到一個幫助文件,HAML不會妨礙你。 – mliebelt

+0

這會起作用,但在這種情況下,由於代碼是內容的一部分,我寧願保持源代碼更清晰。我正在創建一個包含格式化代碼示例的文檔,因此我不想將所述內容的一部分提取到其他文件中。混淆有一個很好的解決方案,代碼塊在ruby過濾器中定義爲字符串,然後在HAML中解析。 – superluminary