SwiftCSSParser

一个轻量级的 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