Perfect-Squishy

Get Involved with Perfect!

Star Perfect On Github Stack Overflow Follow Perfect on Twitter Join the Perfect Slack

Swift 4.0 Platforms OS X | Linux License Apache PerfectlySoft Twitter Slack Status

注意 这不是 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 语法

一个 Squishy 网页可以原生支持三种不同的脚本类型

先决条件

Swift 4.0 工具链。

Package.swift

.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

现在可以使用微信订阅号 (中文)