Что означает ^{...} в файлах ".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"

Я бы порекомендовал вам просмотреть главу о виджетах, чтобы лучше понять это.

Другие вопросы по тегам