一个轻量级的 Swift CSS 解析器,底层使用 cssparser (cpp)。
这是一个简单的代码片段,帮助你快速开始。
// An example stylesheet (with horrible formatting)
let css = """
div { background: blue
}
"""
// Parse the stylesheet
let stylesheet = try Stylesheet.parse(css)
// Minify
assert(
stylesheet.minified())
==
"div{color:blue}"
)
// Pretty print
assert(
stylesheet.prettyPrinted(with: .spaces(2))
==
"""
div {
color: blue;
}
"""
)
// Extract property
var background: String?
for statement in stylesheet.statements {
switch statement {
case .ruleSet(let ruleSet):
for declaration in ruleSet.declarations where declaration.property == "background" {
background = declaration.value
break
}
default:
break
}
}
assert(
background
==
"blue"
)
主要的 CSS 解析 API 构建于 CSS 语句的概念之上。它是 SwiftCSSParser 提供的最易于使用且类型安全的 API,用于解析和创建 CSS 文档。然而,语句 API 的主要限制是它不处理注释,并且它也可能忽略它认为无效的令牌。如果你发现从文档生成的语句错误地忽略了有效令牌的任何情况,请提交一个 issue。
要将文档解析为语句,请使用 Stylesheet.parseStatements(from:)
方法。这等效于 Stylesheet.parse(from: css).statements
。
基于令牌的 API 是语句 API 的一个更底层和更简单的版本。它是 cssparser
API 解析方面的直接 Swift 翻译。
要将文档解析为令牌,请使用 Stylesheet.parseTokens(from:)
方法。生成的令牌流包括注释。
# 1. Fork swift-css-parser
# 2. Clone your fork
git clone https://github.com/yourusername/swift-css-parser
# 3. Finish cloning the repository
cd swift-css-parser
git submodule update --init --recursive