Contents

swift-primitives/swift-ascii-primitives

ASCII types for Swift — a typed ASCII.Code carrier, the full INCITS 4-1986 character set as named constants, and byte-level classification, case-conversion, parsing, and serialization, with zero Foundation dependency.

Quick Start

ASCII.Code is a typed wrapper over a 7-bit code value (0x000x7F), and the .ascii accessor surfaces ASCII operations and constants on UInt8 itself. Classification and serialization work on ASCII.Code directly; the Standard Library Integration product adds Sequence<UInt8> forwarders so raw byte buffers (network frames, file reads) flow through unchanged.

import ASCII_Primitives

// Classify a byte through the `.ascii` accessor.
let byte: UInt8 = 0x41
byte.ascii.isLetter        // true
byte.ascii.isUppercase     // true

// Named constants resolve to the caller-side type.
let space = UInt8.ascii.sp     // 0x20
let capA = ASCII.Character.Graphic.A   // 0x41

// A typed code point with validation.
let code = try ASCII.Code(Byte(0x7A))  // 'z'
code.isLowercase           // true
import ASCII_Primitives
import ASCII_Primitives_Standard_Library_Integration

// Classify whole byte sequences.
ASCII.Classification.isAllDigits(Array("0123".utf8))    // true
ASCII.Classification.isAllLetters(Array("Hello".utf8))  // true

// Serialize an integer to ASCII decimal bytes.
var buffer: [UInt8] = []
ASCII.Serialization.serializeDecimal(42, into: &buffer)
// buffer == [0x34, 0x32]  // "42"

ASCII is a pure namespace enum; its nested Character.Control, Character.Graphic, and SPACE types mirror the standard's structure. ASCII.Code conforms to Byte.Protocol from swift-byte-primitives, making it a peer byte-domain type alongside Byte.


Installation

dependencies: [
    .package(url: "https://github.com/swift-primitives/swift-ascii-primitives.git", branch: "main")
]
.target(
    name: "App",
    dependencies: [
        .product(name: "ASCII Primitives", package: "swift-ascii-primitives"),
    ]
)

Requires Swift 6.3.1 and macOS 26 / iOS 26 / tvOS 26 / watchOS 26 / visionOS 26 (or the matching Linux / Windows toolchain).


Architecture

Two library products; depends only on swift-byte-primitives.

| Product | Target | Purpose | |---------|--------|---------| | ASCII Primitives | Sources/ASCII Primitives/ | The ASCII namespace, the typed ASCII.Code carrier (with Byte.Protocol conformance), the full INCITS 4-1986 constant set, and Classification / Case.Conversion / Parsing / Serialization operations keyed on ASCII.Code. | | ASCII Primitives Standard Library Integration | Sources/ASCII Primitives Standard Library Integration/ | Sequence<UInt8> forwarders for the classification, case-conversion, and serialization operations, bridging raw byte buffers to the ASCII.Code API. |

Foundation-free.


Platform Support

| Platform | Status | |----------|--------| | macOS 26 | Full support | | Linux | Full support | | Windows | Full support | | iOS / tvOS / watchOS / visionOS | Supported | | Swift Embedded | Supported |


Community

License

Apache 2.0. See LICENSE.md.

Package Metadata

Repository: swift-primitives/swift-ascii-primitives

Default branch: main

README: README.md