背景: 私はハムレットが WAI を使って Yesod を使わずにどのように動作するかを研究しています。私は Template Haskell を理解していませんが、それに飛び込む前に、このタスクに対する既知の/迅速な解決策があるかどうか疑問に思っています。
詳細: Hamlet quasiquote のコンテキストでNewlineStyleを変更する方法を知りたいです。
探索: このような関数呼び出しと関係があると思います
hamletWithSettings
htmlRules
HamletSettings
{
hamletDoctype = "<!DOCTYPE html>"
,hamletNewlines = DefaultNewlineStyle
,Hamlet.hamletCloseStyle = htmlCloseStyle -- this fn is in a hidden module
,Hamlet.hamletDoctypeNames = []
}
...しかし、準引用符のコンテキストで、これを行うコードの書き方がわかりません。
これが私が変更したい作業コードです:
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
import Control.Monad.Trans.Resource
import Text.Hamlet as Hamlet
import qualified Data.ByteString.Lazy.Char8 as ByteString
import qualified Network.Wai as Wai
import qualified Network.HTTP.Types as Http
import qualified Network.Wai.Handler.Warp as Warp
import qualified Text.Blaze as Blaze
import qualified Text.Blaze.Html.Renderer.String as Blaze
-------------------------------------------------------------------------------
main :: IO ()
main = Warp.run 3000 application
-------------------------------------------------------------------------------
application :: Wai.Request -> ResourceT IO Wai.Response
application request = return $
case (head $ Wai.pathInfo request) of
"html" ->
Wai.responseLBS Http.status200 [] $ ByteString.pack
$ Blaze.renderHtml
$ htmlDoc -- defined below
"d3" ->
Wai.ResponseFile Http.status200 [] "./d3.v2.min.js" Nothing
_ ->
Wai.responseLBS Http.status400 [] ""
-------------------------------------------------------------------------------
htmlDoc :: Hamlet.Html
htmlDoc = [shamlet|
!!!
<html>
<head>
<title>Study Graph
<!-- <link rel="stylesheet" type="text/css" href="/css"> -->
<script type="text/javascript" src="/d3" />
<style>
<script>
window.onload = function()
{
svg =
d3 .select("body")
.append("svg")
.attr("width", "100%")
.attr("height", "100%")
/* SOLUTION to strawman: a solitary "\" on this code row, will render a single newline character; i.e. "\n\\\n" renders as "\n" */
svg .selectAll("circle")
.data([ {"cx": 1.0, "cy": 1.1, "r":1},
{"cx": 2.0, "cy": 2.5, "r":0.9} ])
}
<body>
|]
-------------------------------------------------------------------------------
支援、侮辱、またはその他のコメントを事前に感謝します。