注意 这不是 Perfect 的官方产品。然而,Squishy 是一个独立的解析器库,它可以将 "squishy" 文件翻译成 Perfect Swift 处理程序。
一个 squishy 文件看起来像这样 - 是的,它是一个 Swift 风格的超文本预处理器
<%
import PerfectLib
import PerfectHTTP
import PerfectHTTPServer
func add(a: Int, b: Int) -> {
return a + b
}
%>
<HTML><HEAD><META CHARSET="UTF-8">
<TITLE>测试脚本</TITLE>
</HEAD><BODY>
<?
let x = UUID()
let y = "\(x)"
response.setHeader(.contentType, value: "text/html")
?>
<H1>你好! \(y) 和 \(add(a: 1, b: 2))</H1>
</BODY></HTML>
翻译的结果看起来会是这样
import PerfectLib
import PerfectHTTP
import PerfectHTTPServer
func add(a: Int, b: Int) -> {
return a + b
}
func handlerX(data: [String:Any]) throws -> RequestHandler { return {
request, response in
response.appendBody(string:
"""
<HTML><HEAD><META CHARSET=\"UTF-8\">
<TITLE>测试脚本</TITLE>
</HEAD><BODY>
"""
)
let x = UUID()
let y = "\(x)"
response.setHeader(.contentType, value: "text/html")
response.appendBody(string:
"""
<H1>你好! \(y) 和 \(add(a: 1, b: 2))</H1>
</BODY></HTML>
"""
)
response.completed()
}
}
一个 Squishy 网页可以原生支持三种不同的脚本类型
\(variable)
在这里可用。<% ... %>
内的内容将被翻译成当前命名空间中的 swift 程序。<? ... ?>
标记的内容将被视为一个标准的命名Perfect 路由处理程序,其中两个关键变量 request: HTTPRequest
和 response: HTTPResponse
在此部分中可用。Swift 4.0 工具链。
.package(url: "https://github.com/RockfordWei/Perfect-Squishy.git",
from: "1.0.1")
...
dependencies: ["PerfectSquishy"]
以下代码片段可以将上面的 "x.squishy" 文件翻译成 "y.swift"
import PerfectSquishy
let from = "x.squishy"
let to = "y.swift"
let parser = Squishy(handler: "handlerX", from: from, to: to)
try parser.parse()
有关 Perfect 项目的更多信息,请访问 perfect.org。