PureYAML/Sources/Tagged/Tagged.Node.swift
Mihaela M c4f7f9dccc refactor(code-style): one top-level type per source file
Split the six files that declared multiple sibling types under one
namespace extension so each file declares exactly one top-level type:
the Tagged node component types (Node, NodeKind, Scalar, Sequence,
Mapping, Pair), the validation report types (Report, Source,
SourceReport, BatchReport), DiagnosticKind, TokenKind, ScannerFlowContext
kind, and the event-stream composer helpers. Public type names are
unchanged; the shared report-rendering helpers move from file-private to
internal so the split report types still reach them.

Make check-namespacing.sh namespace-aware: the previous column-anchored
scan was blind to types declared inside indented extension blocks, so it
passed while the rule was violated. It now counts direct members of a
PureYAML namespace extension and ignores nested types and private helpers.
2026-06-26 06:14:21 +02:00

31 lines
759 B
Swift

public extension PureYAML.Tagged {
/// YAML node tree that preserves explicit source tags.
enum Node: Equatable, Sendable {
case scalar(Scalar)
case sequence(Sequence)
case mapping(Mapping)
public var tag: Tag? {
switch self {
case let .mapping(mapping):
mapping.tag
case let .scalar(scalar):
scalar.tag
case let .sequence(sequence):
sequence.tag
}
}
public var kind: NodeKind {
switch self {
case .mapping:
.mapping
case .scalar:
.scalar
case .sequence:
.sequence
}
}
}
}