запустить whamlet в чистом коде?

В приложении yesod я хочу создать атрибуты URL для графика, который будет отображаться с помощью graphviz , и я хочу использовать интерполяцию. Идеально,

graphToDot nonClusteredParams { fmtNode = \ (n,l) -> 
     [ URL [whamlet| @{MyRoute ...} |]
   } g

Конечно, типы не совпадают:

  • атрибут URL является чистым Text, но whamlet является монадическим (виджет)
  • когда я заменяю на shamlet, тип в порядке, но он не может интерполировать: URL interpolation used, but no URL renderer provided

Есть ли простой способ решить эту проблему?


person d8d0d65b3f7cf42    schedule 22.03.2015    source источник


Ответы (1)


Это работает: получить функцию рендеринга (в монаде) и применить (в чистом коде)

render <- getUrlRender 
let d = graphToDot ... 
     [ URL $ render $ MyRoute ... ]

Я нашел это здесь, где решена аналогичная проблема: https://github.com/yesodweb/yesod/wiki/Using-type-safe-urls-from-inside-javascript

person d8d0d65b3f7cf42    schedule 23.03.2015