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

39 lines
958 B
Markdown

# Package and Repository Structure
PureXML is a root Swift package.
## Required Layout
```text
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.