Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove unwanted indent from HAML's pre tag

Tags:

haml

I have problem with <pre>, here is my code, and the screenshot is attached below. How to remove the indents?

%pre.code
    :escaped
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html>
            <head></head>
            <body>
                <form>
                    <input type="text" name="empID" />
                    <input type="submit"/>      
                </form> 
            </body>
        </html>
like image 710
Cheng Avatar asked Jan 03 '10 04:01

Cheng


2 Answers

You need to use the #preserve helper to convert the newlines in the pre to newline entities, like so:

%pre.code
    = preserve do
        :escaped
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html>
                <head></head>
                <body>
                    <form>
                        <input type="text" name="empID" />
                        <input type="submit"/>        
                    </form>   
                </body>
            </html>

In the future, you'll be able to nest filters, so you can do :preserve:escaped.

like image 124
Natalie Weizenbaum Avatar answered Nov 06 '22 13:11

Natalie Weizenbaum


When representing "pre" like text from a variable inside a div or other tag, use

.text.plain= preserve(@mail.body.to_s)

along with CSS "white-space: pre-wrap;". Use the one-line version, because the two-line will still indent the first line.

/ BAD: Will leave the first line incorrectly indented!
.text.plain
  = preserve(@mail.body.to_s)
like image 2
Allen Avatar answered Nov 06 '22 13:11

Allen