YAMLicious 0.0.2
dotnet add package YAMLicious --version 0.0.2
NuGet\Install-Package YAMLicious -Version 0.0.2
<PackageReference Include="YAMLicious" Version="0.0.2" />
paket add YAMLicious --version 0.0.2
#r "nuget: YAMLicious, 0.0.2"
// Install YAMLicious as a Cake Addin #addin nuget:?package=YAMLicious&version=0.0.2 // Install YAMLicious as a Cake Tool #tool nuget:?package=YAMLicious&version=0.0.2
YAMLicious
YAMLicious is a small YAML reader/writer inspired by Thoth.Json syntax!
Code examples
F# Model
type Package = {
Name: string
Version: string option
}
type ArcValidation = {
ArcSpecificationVersion: string
Packages: Package list
}
YAML
arc_specification: 2.0.0-draft
validation_packages:
- name: package1
version: 1.0.0
- name: package2
version: 2.0.0
- name: package3
Decode (from YAML)
// from yaml
let Example1 =
"arc_specification: 2.0.0-draft
validation_packages:
- name: package1
version: 1.0.0
- name: package2
version: 2.0.0
- name: package3"
let packageEncoder : (YAMLicious.YAMLElement -> Package) =
Decode.object (fun get ->
{
Name = get.Required.Field "name" Decode.string
Version = get.Optional.Field "version" Decode.string
}
)
let arcValidationDecoder : (YAMLicious.YAMLElement -> ArcValidation) =
Decode.object (fun get ->
{
ArcSpecificationVersion = get.Required.Field "arc_specification" Decode.string
Packages = get.Required.Field "validation_packages" (Decode.list packageEncoder)
}
)
let actual : ArcValidation = Examples.ValidationPackageTypes.string |> Decode.read |> arcValidationDecoder
Encode (to YAML)
// to yaml
let Example2 = {
ArcSpecificationVersion = "2.0.0-draft"
Packages = [
{ Name = "package1"; Version = Some "1.0.0" }
{ Name = "package2"; Version = Some "2.0.0" }
{ Name = "package3"; Version = None }
]
}
let packageEncoder (pack: Package) =
[
"name", Encode.string pack.Name
Encode.tryInclude "version" Encode.string pack.Version
]
|> Encode.choose
|> Encode.object
let arcValidationEncoder (arc: ArcValidation) =
Encode.object [
"arc_specification", Encode.string arc.ArcSpecificationVersion
"validation_packages", Encode.list packageEncoder arc.Packages
]
let actual : string = Encode.write 2 (arcValidationEncoder Example2)
Local Development
Requirements
Because this library targets multiple programming languages we need to support all of them:
- nodejs and npm
- verify with
node --version
(Tested with v20.10.0) - verify with
npm --version
(Tested with v9.2.0)
- verify with
- .NET SDK
- verify with
dotnet --version
(Tested with 8.0.205)
- verify with
- Python
- verify with
py --version
(Tested with 3.11.9, known to work only for >=3.11)
- verify with
Setup
This needs to be done on a fresh download once. Paths for python venv executable might be different depending on the OS.
dotnet tool restore
, Restore .NET tools (fable)npm i
, install js dependenciespy -m venv ./.venv
, setup python virtual environment.\.venv\Scripts\Activate.ps1
, activate python virtual environment- install python dependencies
python -m pip install -U pip setuptools
python -m pip install poetry
python -m poetry install --no-root
Testing
First activate python virtual environment (.\.venv\Scripts\Activate.ps1
).
.\build.cmd test
or specify target
.\build.cmd test [f#, c#, js [native], py [native]]
Publish
Requires API keys for Nuget and PyPi.
The following command will run all tests, bundle and then start publishing!
.\build.cmd publish pipeline
or only publish specific targets, without test and bundle
.\build.cmd publish [npm, pypi, nuget]
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 was computed. 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. |
.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
- Fable.Core (>= 4.3.0)
- FSharp.Core (>= 8.0.100)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on YAMLicious:
Package | Downloads |
---|---|
ARCtrl.Yaml
ARC helper functions for Common workflow language. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.0.2 | 94 | 7/11/2024 |
0.0.1 | 284 | 7/8/2024 |
0.0.1-alpha | 87 | 6/24/2024 |