FSharp.Data.YamlValue
0.2.1
dotnet add package FSharp.Data.YamlValue --version 0.2.1
NuGet\Install-Package FSharp.Data.YamlValue -Version 0.2.1
<PackageReference Include="FSharp.Data.YamlValue" Version="0.2.1" />
<PackageVersion Include="FSharp.Data.YamlValue" Version="0.2.1" />
<PackageReference Include="FSharp.Data.YamlValue" />
paket add FSharp.Data.YamlValue --version 0.2.1
#r "nuget: FSharp.Data.YamlValue, 0.2.1"
#:package FSharp.Data.YamlValue@0.2.1
#addin nuget:?package=FSharp.Data.YamlValue&version=0.2.1
#tool nuget:?package=FSharp.Data.YamlValue&version=0.2.1
FSharp.Data.YamlValue
A YAML document API for F#, in the shape of FSharp.Data's JsonValue.
Parse YAML into a discriminated union you can pattern match, navigate with the ? dynamic
operator, read with AsInteger()-style accessors, and write back out — including comments.
Hand-written parser, zero dependencies, netstandard2.0/net8.0, AOT-compatible, and Fable-compatible
(JavaScript and Python).
Install
dotnet add package FSharp.Data.YamlValue
Quick start
open FSharp.Data
open FSharp.Data.YamlExtensions
let info =
YamlValue.Parse """
name: Tomas # given name
born: 1985
siblings:
- Anna
- Petr
"""
info?name.AsString() // "Tomas"
info?born.AsInteger() // 1985
for sibling in info?siblings do
printfn "%s" (sibling.AsString())
Editing with SetPath/GetPath
YamlBuilders adds an immutable edit API with a string-path DSL, beyond what JsonValue offers:
open FSharp.Data.YamlValueBuilders
let doc = YamlValue.Parse """
name: myapp
services:
web:
image: nginx
"""
let updated = doc.SetPath("services.web.image", YamlValue.String "nginx:1.27")
updated.TryGetPath("services.web.image") // Some (YamlValue.String "nginx:1.27")
Source positions and timestamp text
ParseWithPositions also returns the line/column/offset span of every node, keyed by JSON Pointer;
ParseWithMetadata additionally keeps the original text of timestamps. Parse is unchanged.
let value, spans = YamlValue.ParseWithPositions "name: web\nports:\n - 80\n"
spans.["/ports/0"].Start.Line // 3
let parsed = YamlValue.ParseWithMetadata "released: 2026-10-14"
parsed.TimestampText.["/released"] // "2026-10-14"
Learn more
- Full README, examples, and the
JsonValue-parity table: github.com/dburriss/FSharp.Data.YamlValue - API reference:
docs/reference.md - Fable (JS/Python) support and known differences:
docs/fable.md - Runnable example scripts:
examples/
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- FSharp.Core (>= 10.1.402)
-
net8.0
- FSharp.Core (>= 10.1.402)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
The package now ships its F# sources and project file under `fable/` so it can be consumed from Fable JS and Python with a plain `PackageReference`; 0.2.0 only worked via a project reference (consumers failed with "Fable packages must include F# sources"). The `lib/` DLLs and the .NET public API are unchanged.