Ah, I see what you mean. There's a quick and easy solution to this: wrap 
the call to markdown in the find_and_preserve Haml helper. That'll 
replace all newlines within <pre> tags in the markdown output with the 
HTML entity for newlines, which will cause the Haml indenter to ignore 
them. That'll make it render properly in a browser. So, what you want to 
do is:

.message
  .body= find_and_preserve(markdown(message.body))
  .by= message.author

Hope that's helpful!

- Nathan

Spongy wrote:
> Hi the template is this, its actually a partial but should be complete
> enough
>
> file messages/_message.haml
> .message
>   .body= markdown(message.body)
>   .by= message.author
>
> An example of the content of message.body is
>
> ## start example
> This is my chicken example ruby file
>
>     class Chicken
>       def noise
>         "squawk"
>       end
>     end
>
> this is after my chicken code block
>
> ## end example
>
> Markdown will automatically wrap the code block in the above example
> in <pre><code> and </code></pre> tags. When the partial is rendered
> and the current indentation level is already more than one level deep
> then additional indentation will be added to the contents of the <pre>
> contents.
>
>           <div class="message">
>             <pre><code>class Chicken
>               def noise
>                 "squawk"
>               end
>             end
>             </code></pre>
>             <div class="by">Rooster</div>
>           </div>
>
> Now this is fine within the HTML but when rendered all of the
> preceding indentation on each line after the first will be more
> greatly indented than the first. In order for it to render properly
> the HTML would need to probably look like this
>
>           <div class="message">
>             <pre><code>class Chicken
>   def noise
>     "squawk"
>   end
> end
>             </code></pre>
>             <div class="by">Rooster</div>
>           </div>
>
> Which admittedly is absolutely horrible when viewing HTML but does
> render properly.
>
> Does that make more sense?
>
>
> On Mar 24, 8:22 pm, Nathan Weizenbaum <[EMAIL PROTECTED]> wrote:
>   
>> I'm a little confused. What "<pre><code>" tags? What's chicken.rb have
>> to do with this?
>>
>> Could you give an example of the template you're evaluating, the value
>> you're passing to markdown, the output given by Haml, and the output you
>> expect? Thanks.
>>
>> - Nathan
>>
>> Spongy wrote:
>>     
>>> Hi,
>>> I have a view template like
>>>       
>>>     .message
>>>       .body= markdown(message.body)
>>>       .by= message.author
>>>       
>>> and the message.body has a number of markdown code blocks within it.
>>> Now what keeps happening is when viewed in a browser the first line of
>>> the code block is fine. Its on the same line as the <pre><code> tags
>>> but each other line is over indented. As below
>>>       
>>>     ## chicken.rb
>>>                 class Chicken
>>>                   def bawk
>>>                     puts "baw-kawk"
>>>                   end
>>>                 end
>>>       
>>> I am guessing that this is caused in part by markdown and partly by
>>> Haml, but I've no idea how to resolve it. I tried using the markdown
>>> Haml filter but you can't pass a variable or anything like that to the
>>> filter.
>>>       
>>> Are there any ideas about how I can fix this?
>>>       
>>> Thank you,
>>> Spongy
>>>       
>
>
> >
>
>   


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Haml" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/haml?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to