2013-10-04 22 views
5

Sto provando a usare il selettore @font-face nel modello di cassius senza fortuna.Escape `@` nei modelli yesod

Cassius utilizza @ per l'interpolazione, esiste un modo per evitarlo?

Ho provato @@ e \@, nessuno di loro funziona.

seguito template

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

Risultati in

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

risposta

0

Questa non è una soluzione alla tua domanda, ma ho pensato che vi farò sapere che ha incontrato qualcosa legato questa mattina. Ho avuto la seguente sezione CSS:

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

Quando Yesod compilato il file CSS, non ha generato l'URL per il background-image. In effetti, ha saltato l'intera linea e creato una proprietà leggermente diversa da background. Alla fine ho saltato `@ {StaticR ...} e ho hard-coded l'URL. Quando avrò la possibilità creerò un codice riproducibile.

Quindi immagino che questo sia un problema con l'interpolazione @ e non tanto la fuga. Ti dispiace provare un @{Handler} per il tuo src? Se questa linea non viene generata, potrebbe essere un problema diverso per il quale è necessario presentare una segnalazione di errore.

+0

Ciao. Non penso che le nostre domande siano collegate. Ho solo bisogno di un simbolo '@' per apparire nell'output risultante. Ho provato il tuo codice e funziona bene. Forse dovresti provare 'cabal clean', aiuta quando accadono cose strane. – lambdas

1

questo è abbastanza brutto, ma può funzionare:

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

in altre parole, si legano una stringa per il valore di "@" ed interpolazione che nel file di Cassio. Non riesco a controllare la sintassi ora ma potrebbe funzionare.

+0

Funziona davvero. – MasterMastic