SemVer/README.md
2025-06-16 07:49:29 +04:00

94 lines
1.8 KiB
Markdown

# Semantic Versioning for Vishap Oberon Compiler (voc)
A strict, specification-compliant Semantic Versioning parser for [Vishap Oberon](https://vishap.oberon.am).
Designed for use in package managers, version comparison tools, and system-level
Oberon utilities.
## Features
- Parses full SemVer 2.0.0 strings (`MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]`)
- Validates all pre-release and build metadata
- Outputs parsed results into a structured Version record
## Example
Input:
```
1.1.2-prerelease+meta
```
Result (parsed record):
```
major=1;
minor=1;
patch=2;
preRelease=prerelease;
build=meta;
```
## Usage
```
MODULE SemVerExample;
IMPORT SemVer, Out;
VAR
v: SemVer.Version;
ok: BOOLEAN;
BEGIN
SemVer.Parse("1.2.3-alpha.1+build.5", v, ok);
IF ok THEN
Out.String("major="); Out.Int(v.Major, 1); Out.String("; ");
Out.String("minor="); Out.Int(v.Minor, 1); Out.String("; ");
Out.String("patch="); Out.Int(v.Patch, 1); Out.String("; ");
Out.String("preRelease="); Out.String(v.PreRelease); Out.String("; ");
Out.String("build="); Out.String(v.Build); Out.String(";");
Out.Ln;
ELSE
Out.String("Invalid version string."); Out.Ln;
END;
END SemVerExample.
```
```
$ voc ../src/SemVer.Mod -s SemVerExample.Mod -m 2>/dev/null && ./SemVerExample
../src/SemVer.Mod Compiling SemVer. New symbol file. 5302 chars.
SemVerExample.Mod Compiling SemVerExample. Main program. 1204 chars.
major=1; minor=2; patch=3; preRelease=alpha.1; build=build.5;
```
## Building
```
make
```
## Tests
```
make test
```
Includes various valid and invalid test cases to confirm compliance with
the SemVer 2.0.0 specification.
## Dependencies
- For Building: `voc` (duh!)
- Test runner: none
## TODO
- Compare
- Equals
- ToString
- ParseConstraint
- MatchConstraint
- IsStable
- IsPreRelease
## License
BSD 2-Clause License