xportrs 0.0.8

CDISC-compliant XPT file generation and parsing library for Rust
Documentation
# For Developers

This section contains information for contributors and developers working on xportrs.

## Getting Started

### Prerequisites

- Rust 1.70 or later
- Git

### Clone and Build

```bash
git clone https://github.com/rubentalstra/xportrs.git
cd xportrs
cargo build
```

### Run Tests

```bash
cargo test --all-features
```

### Run Clippy

```bash
cargo clippy -- -D warnings
```

## Project Structure

```
xportrs/
├── src/
│   ├── lib.rs              # Public API exports
│   ├── dataset/            # Dataset, Column, ColumnData
│   ├── schema/             # Schema derivation
│   ├── validate/           # Validation rules
│   ├── xpt/
│   │   └── v5/             # XPT V5 implementation
│   │       ├── read/       # Reading logic
│   │       └── write/      # Writing logic
│   ├── config/             # Configuration types
│   ├── error/              # Error types
│   └── metadata/           # Metadata types
├── tests/                  # Integration tests
├── docs/                   # mdbook documentation
└── benches/                # Benchmarks (if any)
```

## Adding New Features

### Adding a New Validation Rule

1. Add variant to `Issue` enum in `src/validate/issues.rs`
2. Implement `severity()` method for the new variant
3. Implement `Display` for the new variant
4. Add check in `src/validate/checks_v5.rs`
5. Add tests

### Adding a New Column Type

1. Add variant to `ColumnData` enum in `src/dataset/domain_dataset.rs`
2. Handle in reader (`src/xpt/v5/read/reader.rs`)
3. Handle in writer (`src/xpt/v5/write/writer.rs`)
4. Add `From` implementation
5. Add tests

### Supporting a New Agency

1. Add variant to `Agency` enum
2. Add agency-specific validation in `src/validate/checks_v5.rs`
3. Document in regulatory section

## Code Style

- Follow Rust API Guidelines
- Use `cargo fmt` before committing
- Ensure `cargo clippy -- -D warnings` passes
- Add doc comments for public items
- Include examples in documentation

## Testing

### Unit Tests

Located alongside the code in `mod tests` blocks.

### Integration Tests

Located in `tests/` directory:
- `tests/v5/read.rs` - Reading tests
- `tests/v5/write.rs` - Writing tests
- `tests/api_guidelines.rs` - API compliance tests

### Test Data

Test XPT files are in `tests/data/`.

## Documentation

### Building Docs

```bash
cd docs
mdbook build
```

### Serving Locally

```bash
cd docs
mdbook serve
```

Then open http://localhost:3000

### Adding Pages

1. Create `.md` file in appropriate directory
2. Add entry to `SUMMARY.md`
3. Use mermaid for diagrams

## Pull Request Guidelines

1. Fork the repository
2. Create a feature branch
3. Make changes with tests
4. Ensure CI passes
5. Submit PR with clear description

## Release Process

1. Update version in `Cargo.toml`
2. Update `CHANGELOG.md`
3. Create git tag
4. CI publishes to crates.io