Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .bot/README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# .bot Workspace
This folder is reserved for local-only AI working material such as:
- brainstorm notes
- draft implementation plans
- design alternatives
- temporary agent state
Keep this folder out of source control. Move only finalized, non-confidential guidance into `AGENTS.md`.
# .bot Workspace

This folder is reserved for local-only AI working material such as:

- brainstorm notes
- draft implementation plans
- design alternatives
- temporary agent state

The `.bot/README.md` file itself is intentionally tracked in source control. All other `.bot/` working material remains local-only and excluded from source control. Move only finalized, non-confidential guidance into `AGENTS.md`.
8 changes: 4 additions & 4 deletions .docfx/BuildDocfxImage.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
$version = minver -i -t v -v w
docfx metadata docfx.json
docker buildx build -t jcr.codebelt.net/geekle/unitify-docfx:$version --platform linux/arm64,linux/amd64 --load -f Dockerfile.docfx .
get-childItem -recurse -path api -include *.yml, .manifest | remove-item
$version = minver -i -t v -v w
docfx metadata docfx.json
docker buildx build -t jcr.codebelt.net/geekle/unitify-docfx:$version --platform linux/arm64,linux/amd64 --load -f Dockerfile.docfx .
get-childItem -recurse -path api -include *.yml, .manifest | remove-item
32 changes: 16 additions & 16 deletions .docfx/Dockerfile.docfx
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
ARG NGINX_VERSION=1.31-alpine
FROM --platform=$BUILDPLATFORM dhi.io/nginx:${NGINX_VERSION} AS base
RUN rm -rf /usr/share/nginx/html/*
FROM --platform=$BUILDPLATFORM codebeltnet/docfx:2 AS build
ADD [".", "docfx"]
RUN cd docfx; \
docfx build
FROM dhi.io/nginx:${NGINX_VERSION} AS final
WORKDIR /usr/share/nginx/html
COPY --from=build /build/docfx/wwwroot /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
ARG NGINX_VERSION=1.31-alpine

FROM --platform=$BUILDPLATFORM dhi.io/nginx:${NGINX_VERSION} AS base
RUN rm -rf /usr/share/nginx/html/*

FROM --platform=$BUILDPLATFORM codebeltnet/docfx:2 AS build

ADD [".", "docfx"]

RUN cd docfx; \
docfx build

FROM dhi.io/nginx:${NGINX_VERSION} AS final
WORKDIR /usr/share/nginx/html
COPY --from=build /build/docfx/wwwroot /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
6 changes: 3 additions & 3 deletions .docfx/PublishDocfxImage.ps1
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
$version = minver -i -t v -v w
docker tag unitify-docfx:$version jcr.codebelt.net/geekle/unitify-docfx:$version
docker push jcr.codebelt.net/geekle/unitify-docfx:$version
$version = minver -i -t v -v w
docker tag unitify-docfx:$version jcr.codebelt.net/geekle/unitify-docfx:$version
docker push jcr.codebelt.net/geekle/unitify-docfx:$version
94 changes: 47 additions & 47 deletions .docfx/api/namespaces/Codebelt.Unitify.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,47 @@
---
uid: Codebelt.Unitify
summary: *content
---
Simplify unit measurement and conversion with **Codebelt.Unitify**, a comprehensive .NET library for managing units with SI unit support, metric prefixes (kilo, mega, milli, micro, etc.), and binary prefixes (kibi, mebi, gibi, etc.).
To get started, use [`UnitFactory`](xref:Codebelt.Unitify.UnitFactory) to create SI units, or access predefined SI base units via the [`Unit`](xref:Codebelt.Unitify.Unit) class.
## Start Here
Begin with **`UnitFactory`** — the primary API for creating SI units with custom precision and base values. Call static methods like `UnitFactory.CreateMeter()` or `UnitFactory.CreateWatt()` to construct units programmatically.
If you only need standard predefined base units, use the **`Unit`** class directly instead (e.g., `Unit.Meter`, `Unit.Kilogram`) to avoid factory overhead.
## When to Use
Use Codebelt.Unitify when you need to:
- Work with SI base units (meter, kilogram, second, ampere, kelvin, mole, candela) and derived units
- Apply metric (decimal) or binary prefixes to create unit variations (e.g., kilometer, megabyte, gibibyte)
- Convert between different prefix scales while preserving semantic meaning
- Format units using metric, data-centric, or custom naming conventions
## Getting Started
**Start here:** Call `UnitFactory.CreateMeter()`, `UnitFactory.CreateWatt()`, or other static factory methods to construct SI units with your desired precision and base values. `UnitFactory` is the primary entry point for programmatic unit creation.
**Alternative:** If you need one of the standard predefined SI base units (meter, kilogram, second, ampere, kelvin, mole, candela), access them directly via static properties on the `Unit` class (e.g., `Unit.Meter`, `Unit.Kilogram`) to avoid factory overhead.
Once you have a unit, you can apply metric or binary prefixes in three ways:
- **Single prefix**: Use `PrefixUnit` to combine a specific prefix with a unit (e.g., create a kilometer from `Unit.Meter` and `DecimalPrefix.Kilo`).
- **Full metric scale table**: Create a `MetricPrefixTable` to explore all available decimal-prefix representations (kilo, mega, giga, etc.) at once.
- **Full binary scale table**: Create a `DataPrefixTable` to explore all available binary-prefix representations (kibi, mebi, gibi, etc.) at once for data/storage contexts.
Choose `MetricPrefixTable` for general scientific and engineering units; choose `DataPrefixTable` exclusively for data storage and network bandwidth to avoid mixing decimal (1 kB = 1000 bytes) and binary (1 KiB = 1024 bytes) scales.
[!INCLUDE [availability-modern](../../includes/availability-modern.md)]
## Extension Members
|Type|Ext|Methods|
|--:|:-:|---|
|Prefix|⬇️|`ToPrefixUnit`, `ToBaseUnit`|
|PrefixTable|⬇️|`QuectoOrDefault`, `RontoOrDefault`, `YoctoOrDefault`, `ZeptoOrDefault`, `AttoOrDefault`, `FemtoOrDefault`, `PicoOrDefault`, `NanoOrDefault`, `MicroOrDefault`, `MilliOrDefault`, `CentiOrDefault`, `DeciOrDefault`, `DecaOrDefault`, `HectoOrDefault`, `KiloOrDefault`, `MegaOrDefault`, `GigaOrDefault`, `TeraOrDefault`, `PetaOrDefault`, `ExaOrDefault`, `ZettaOrDefault`, `YottaOrDefault`, `RonnaOrDefault`, `QuettaOrDefault`, `QuebiOrDefault`, `RobiOrDefault`, `KibiOrDefault`, `MebiOrDefault`, `GibiOrDefault`, `TebiOrDefault`, `PebiOrDefault`, `ExbiOrDefault`, `ZebiOrDefault`, `YobiOrDefault`|
|PrefixUnit|⬇️|`ToPrefixValue`, `ToBaseValue`, `ToBaseUnit`, `ToPrefixString`, `ToMetricPrefixTable`, `ToDataPrefixTable`|
---
uid: Codebelt.Unitify
summary: *content
---

Simplify unit measurement and conversion with **Codebelt.Unitify**, a comprehensive .NET library for managing units with SI unit support, metric prefixes (kilo, mega, milli, micro, etc.), and binary prefixes (kibi, mebi, gibi, etc.).

To get started, use [`UnitFactory`](xref:Codebelt.Unitify.UnitFactory) to create SI units, or access predefined SI base units via the [`Unit`](xref:Codebelt.Unitify.Unit) class.

## Start Here

Begin with **`UnitFactory`** — the primary API for creating SI units with custom precision and base values. Call static methods like `UnitFactory.CreateMeter()` or `UnitFactory.CreateWatt()` to construct units programmatically.

If you only need standard predefined base units, use the **`Unit`** class directly instead (e.g., `Unit.Meter`, `Unit.Kilogram`) to avoid factory overhead.

## When to Use

Use Codebelt.Unitify when you need to:

- Work with SI base units (meter, kilogram, second, ampere, kelvin, mole, candela) and derived units
- Apply metric (decimal) or binary prefixes to create unit variations (e.g., kilometer, megabyte, gibibyte)
- Convert between different prefix scales while preserving semantic meaning
- Format units using metric, data-centric, or custom naming conventions

## Getting Started

**Start here:** Call `UnitFactory.CreateMeter()`, `UnitFactory.CreateWatt()`, or other static factory methods to construct SI units with your desired precision and base values. `UnitFactory` is the primary entry point for programmatic unit creation.

**Alternative:** If you need one of the standard predefined SI base units (meter, kilogram, second, ampere, kelvin, mole, candela), access them directly via static properties on the `Unit` class (e.g., `Unit.Meter`, `Unit.Kilogram`) to avoid factory overhead.

Once you have a unit, you can apply metric or binary prefixes in three ways:

- **Single prefix**: Use `PrefixUnit` to combine a specific prefix with a unit (e.g., create a kilometer from `Unit.Meter` and `DecimalPrefix.Kilo`).
- **Full metric scale table**: Create a `MetricPrefixTable` to explore all available decimal-prefix representations (kilo, mega, giga, etc.) at once.
- **Full binary scale table**: Create a `DataPrefixTable` to explore all available binary-prefix representations (kibi, mebi, gibi, etc.) at once for data/storage contexts.

Choose `MetricPrefixTable` for general scientific and engineering units; choose `DataPrefixTable` exclusively for data storage and network bandwidth to avoid mixing decimal (1 kB = 1000 bytes) and binary (1 KiB = 1024 bytes) scales.

[!INCLUDE [availability-modern](../../includes/availability-modern.md)]

## Extension Members

|Type|Ext|Methods|
|--:|:-:|---|
|Prefix|⬇️|`ToPrefixUnit`, `ToBaseUnit`|
|PrefixTable|⬇️|`QuectoOrDefault`, `RontoOrDefault`, `YoctoOrDefault`, `ZeptoOrDefault`, `AttoOrDefault`, `FemtoOrDefault`, `PicoOrDefault`, `NanoOrDefault`, `MicroOrDefault`, `MilliOrDefault`, `CentiOrDefault`, `DeciOrDefault`, `DecaOrDefault`, `HectoOrDefault`, `KiloOrDefault`, `MegaOrDefault`, `GigaOrDefault`, `TeraOrDefault`, `PetaOrDefault`, `ExaOrDefault`, `ZettaOrDefault`, `YottaOrDefault`, `RonnaOrDefault`, `QuettaOrDefault`, `QuebiOrDefault`, `RobiOrDefault`, `KibiOrDefault`, `MebiOrDefault`, `GibiOrDefault`, `TebiOrDefault`, `PebiOrDefault`, `ExbiOrDefault`, `ZebiOrDefault`, `YobiOrDefault`|
|PrefixUnit|⬇️|`ToPrefixValue`, `ToBaseValue`, `ToBaseUnit`, `ToPrefixString`, `ToMetricPrefixTable`, `ToDataPrefixTable`|
186 changes: 93 additions & 93 deletions .docfx/docfx.json
Original file line number Diff line number Diff line change
@@ -1,93 +1,93 @@
{
"metadata": [
{
"src": [
{
"files": [
"Codebelt.Unitify/**.csproj"
],
"src": "../src"
}
],
"dest": "api",
"memberLayout": "separatePages",
"filter": "filterConfig.yml",
"properties": {
"TargetFramework": "net10.0"
}
}
],
"build": {
"xref": [
"https://docs.cuemon.net/xrefmap.yml",
"https://github.com/dotnet/docfx/raw/main/.xrefmap.json"
],
"content": [
{
"files": [
"api/**/*.yml",
"packages/**/*.md",
"toc.yml",
"*.md"
],
"exclude": [
"bin/**",
"obj/**",
"api/namespaces/**",
"api/types/**"
]
}
],
"resource": [
{
"files": [
"images/**"
]
}
],
"globalMetadata": {
"_appTitle": "Unitify by Codebelt",
"_appFooter": "<span>Generated by <strong>DocFX</strong>. Copyright 2024-2026 Geekle. All rights reserved.</span><script src=\"https://context7.com/widget.js\" data-library=\"/codebeltnet/unitify\"></script>",
"_appLogoPath": "images/50x50.png",
"_appFaviconPath": "images/favicon.ico",
"_googleAnalyticsTagId": "G-J55EBSD5V7",
"_enableSearch": false,
"_disableContribution": false,
"_gitContribute": {
"repo": "https://github.com/codebeltnet/unitify",
"branch": "main"
},
"_gitUrlPattern": "github"
},
"dest": "wwwroot",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
"default",
"modern",
"templates/ms-style"
],
"overwrite": [
{
"files": [
"api/namespaces/**/*.md",
"api/types/**/*.md"
],
"exclude": [
"obj/**",
"wwwroot/**"
]
}
],
"postProcessors": [],
"markdownEngineName": "markdig",
"noLangKeyword": false,
"keepFileLink": false,
"cleanupCacheHistory": false,
"disableGitFeatures": false,
"sitemap": {
"baseUrl": "https://unitify.codebelt.net/",
"changefreq": "monthly"
}
}
}
{
"metadata": [
{
"src": [
{
"files": [
"Codebelt.Unitify/**.csproj"
],
"src": "../src"
}
],
"dest": "api",
"memberLayout": "separatePages",
"filter": "filterConfig.yml",
"properties": {
"TargetFramework": "net10.0"
}
}
],
"build": {
"xref": [
"https://docs.cuemon.net/xrefmap.yml",
"https://github.com/dotnet/docfx/raw/main/.xrefmap.json"
],
"content": [
{
"files": [
"api/**/*.yml",
"packages/**/*.md",
"toc.yml",
"*.md"
],
"exclude": [
"bin/**",
"obj/**",
"api/namespaces/**",
"api/types/**"
]
}
],
"resource": [
{
"files": [
"images/**"
]
}
],
"globalMetadata": {
"_appTitle": "Unitify by Codebelt",
"_appFooter": "<span>Generated by <strong>DocFX</strong>. Copyright 2024-2026 Geekle. All rights reserved.</span><script src=\"https://context7.com/widget.js\" data-library=\"/codebeltnet/unitify\"></script>",
"_appLogoPath": "images/50x50.png",
"_appFaviconPath": "images/favicon.ico",
"_googleAnalyticsTagId": "G-J55EBSD5V7",
"_enableSearch": false,
"_disableContribution": false,
"_gitContribute": {
"repo": "https://github.com/codebeltnet/unitify",
"branch": "main"
},
"_gitUrlPattern": "github"
},
"dest": "wwwroot",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
"default",
"modern",
"templates/ms-style"
],
"overwrite": [
{
"files": [
"api/namespaces/**/*.md",
"api/types/**/*.md"
],
"exclude": [
"obj/**",
"wwwroot/**"
]
}
],
"postProcessors": [],
"markdownEngineName": "markdig",
"noLangKeyword": false,
"keepFileLink": false,
"cleanupCacheHistory": false,
"disableGitFeatures": false,
"sitemap": {
"baseUrl": "https://unitify.codebelt.net/",
"changefreq": "monthly"
}
}
}
2 changes: 1 addition & 1 deletion .docfx/includes/availability-modern.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Availability: .NET 10 and .NET 9
Availability: .NET 11 and .NET 10
30 changes: 15 additions & 15 deletions .docfx/index.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
uid: frontpage-md
title: Unitify API by Codebelt
---
![Unitify API by Codebelt](/images/128x128.png)
# Unitify API by Codebelt
Originally, this project was part of **Cuemon for .NET**, but with the forthcoming release of .NET 9, it was split into its own project.
This project is now part of [Unitify API by Codebelt](https://github.com/codebeltnet/unitify).
[Cuemon for .NET](https://www.cuemon.net/) will pursue its original purpose; providing an addition/complement/sidecar to Microsoft .NET platform.
Proceed to the [docs](/api/Codebelt.Unitify.html) to learn more about the capabilities of this project.
---
uid: frontpage-md
title: Unitify API by Codebelt
---
![Unitify API by Codebelt](/images/128x128.png)

# Unitify API by Codebelt

Originally, this project was part of **Cuemon for .NET**, but with the forthcoming release of .NET 9, it was split into its own project.

This project is now part of [Unitify API by Codebelt](https://github.com/codebeltnet/unitify).

[Cuemon for .NET](https://www.cuemon.net/) will pursue its original purpose; providing an addition/complement/sidecar to Microsoft .NET platform.

Proceed to the [docs](/api/Codebelt.Unitify.html) to learn more about the capabilities of this project.
Loading
Loading