PureXML/docs/rules/package-structure.md
Mihaela Mihaljevic 708390242c chore: scaffold PureXML pure-Swift XML package
Root Swift package mirroring PureYAML's structure, rules, and verification
gates. Includes the XML node model (Node, Element, Attribute, QualifiedName),
a working emitter (Serializer) with escaping and pretty/compact options, and
structural validation. The parser surface is stable; parse() raises
notImplemented until the scanner lands, pinned by a test.

- dependency-free, namespaced under PureXML
- portability and style gates carried over (style, namespacing, forbidden
  patterns, swiftformat, swiftlint, linux, wasm, windows CI)
- 11 tests passing
2026-06-07 23:20:20 +02:00

958 B

Package and Repository Structure

PureXML is a root Swift package.

Required Layout

PureXML/
├── Package.swift
├── Sources/
│   ├── PureXML.swift
│   ├── Model/
│   ├── Parsing/
│   └── Emitting/
├── Tests/
│   └── PureXMLTests/
├── docs/
└── scripts/

Rules

  • Keep Package.swift at repository root.
  • Do not create a Packages/ folder.
  • Keep production code directly under Sources.
  • Keep tests in Tests/PureXMLTests.
  • Keep Package.swift dependency-free.
  • Add new targets only when a responsibility genuinely needs isolation.

Namespace Mapping

The namespace tree mirrors the source tree:

  • Sources/Model/Value.swift -> PureXML.Model.Value
  • Sources/Parsing/Parser.swift -> PureXML.Parsing.Parser
  • Sources/Emitting/Dumper.swift -> PureXML.Emitting.Dumper

The root namespace file, Sources/PureXML.swift, is a map of namespaces only.