ASCII

一个零成本、类型安全的 Swift ASCII 字符表示,具有全面的格式化选项和便捷的实用程序。

特性

安装

Swift 包管理器

将以下内容添加到您的 Package.swift 文件中

let package = Package(
    // name, platforms, products, etc.
    dependencies: [
        // other dependencies
        .package(url: "https://github.com/besya/ascii.git", from: "1.0.1"),
    ],
    targets: [
        .target(name: "<library>", dependencies: [
            // other dependencies
            .product(name: "ASCII", package: "ASCII"),
        ]),
        // other targets
    ]
)

用法

导入

import ASCII

初始化

let bracket = ASCII.leftBracket

从 Int、UInt8 或 String 初始化

ASCII(91) == ASCII.leftBracket          // true
ASCII(UInt8(91)) == ASCII.leftBracket   // true
ASCII("[") == ASCII.leftBracket         // true

控制序列

let CSI: [ASCII] = [.escape, .leftBracket]

let sgrBoldSequence: [ASCII] = CSI + [.digit1, .m]
let sgrItalicSequence: [ASCII] = CSI + [.digit3, .m]
let sgrResetSequence: [ASCII] = CSI + [.digit0, .m]

let boldOn: String = sgrBoldSequence.map(String.init).joined()
let italicOn: String = sgrItalicSequence.map(String.init).joined()
let reset: String = sgrResetSequence.map(String.init).joined()

print(boldOn + "Hello," + reset + italicOn + " World!")
// Prints: **Hello,** _World!_

表示形式

bracket             // ASCII
bracket.int         // Int(91)
bracket.decimal     // UInt8(91)
bracket.binary      // StaticString("01011011")
bracket.hexadecimal // StaticString("5B")
bracket.octal       // StaticString("133")
bracket.unicode     // StaticString("\u{005B}")
bracket.escaped     // StaticString("\\u{005B}")
bracket.htmlEntity  // StaticString("&#91;")

直接比较

ASCII.leftBracket == 91         // true
91 == ASCII.leftBracket         // true
UInt8(90) < ASCII.leftBracket   // true
ASCII.leftBracket <= UInt8(92)  // true

便捷方法

ASCII.A.isDigit         // false
ASCII.A.isLetter        // true
ASCII.A.isControl       // false
ASCII.A.isLowercase     // false
ASCII.A.isUppercase     // true
ASCII.A.isPrintable     // true
ASCII.A.isWhitespace    // false
ASCII.A.isAlphanumeric  // true

为何选择 ASCII?

要求

许可证

该项目采用 MIT 许可证。有关更多信息,请参见 LICENSE 文件。

贡献

欢迎贡献!请随时提交 Pull Request。