2013-10-04 8 views
5

Ich versuche @font-face Selektor in Cassius Vorlage ohne Glück zu verwenden.Escape `@` in yesod Vorlagen

Cassius verwendet @ für die Interpolation, gibt es eine Möglichkeit, es zu entkommen?

Ich habe versucht @@ und \@, keiner von ihnen funktioniert.

Nach Vorlage

@font-face 
     font-family: 'Monsieur La Doulaise' 
     src: url('http://fonts.googleapis.com/css?family=Monsieur+La+Doulaise') 

Ergebnisse in

src: url('http://fonts.googleapis.com/css?family=Monsieur+La+Doulaise');} 

Antwort

0

Das ist keine Lösung für Ihre Frage, aber ich dachte, ich werde Sie wissen, dass in etwas lief heute Morgen zusammen. Ich hatte die folgende CSS-Abschnitt:

.myclass { 
    background: #d880efe; 
    background-image:url(@{StaticR img_myimage_png}); 
    /* more stuff */ 
} 

Wenn Yesod die CSS-Datei kompiliert, es hat nicht die URL generieren für die background-image. In der Tat übersprang es die gesamte Linie und schuf eine etwas andere background Eigenschaft. Ich übersprang die `@ {StaticR ...} und schrieb die URL fest. Wenn ich eine Chance bekomme, erstelle ich einen reproduzierbaren Code.

Also ich vermute, das ist ein Problem mit @ Interpolation und nicht so viel zu entkommen. Macht es Ihnen etwas aus, @{Handler} für Ihre src zu versuchen? Wenn diese Zeile nicht generiert wird, kann es sich um ein anderes Problem handeln, für das wir einen Fehlerbericht einreichen müssen.

+0

Hallo. Ich glaube nicht, dass unsere Fragen verwandt sind. Ich brauche nur ein '@' Symbol in der resultierenden Ausgabe erscheinen. Ich habe Ihren Code ausprobiert und es funktioniert einwandfrei. Vielleicht solltest du es mit "cabal clean" versuchen, es hilft, wenn seltsame Dinge passieren. – lambdas

1

Das ist ziemlich hässlich, aber arbeiten kann:

... defaultLayout $ do let atSym = "@" [cassius|#{atSym}font-face ... |] ...

mit anderen Worten, einen String auf den Wert von "@" binden und zu interpolieren, dass in der Cassius-Datei. Ich kann die Syntax jetzt nicht überprüfen, aber es könnte funktionieren.

+0

Es funktioniert tatsächlich. – MasterMastic