Что означает ^{...} в файлах ".hamlet"
В этом коде ".hamlet" я хотел бы знать, что означает ^{copyright}
линия
$doctype 5
<html>
<head>
<title>#{pageTitle} - My Site
<link rel=stylesheet href=@{Stylesheet}>
<body>
<h1 .page-title>#{pageTitle}
<p>Here is a list of your friends:
$if null friends
<p>Sorry, I lied, you don't have any friends.
$else
<ul>
$forall Friend name age <- friends
<li>#{name} (#{age} years old)
<footer>^{copyright}
1 ответ
Этот пример, который вы связали, может немного сбивать с толку, потому что вы не видите copyright
функционировать где угодно. copyright
это просто еще одна функция. Вы можете использовать^{..}
функция для встраивания другого виджета в один. Этот пример может вам помочь:
#!/usr/bin/env stack
-- stack --resolver lts-13.19 script
{-# LANGUAGE QuasiQuotes #-}
import Text.Blaze.Html
import Text.Blaze.Html.Renderer.Text (renderHtml)
import Text.Hamlet
hello :: Html
hello = [shamlet|
<body>
<p>Hello world
^{copyRight}
|]
copyRight :: Html
copyRight = [shamlet|
<p>Copyright by the SPJ
|]
main :: IO ()
main = do
let txt = renderHtml hello
print txt
И при его выполнении:
$ stack hamlet.hs
"<body><p>Hello world</p>\n<p>Copyright by the SPJ</p>\n</body>\n"
Я бы порекомендовал вам просмотреть главу о виджетах, чтобы лучше понять это.