YAMLicious 0.0.2

dotnet add package YAMLicious --version 0.0.2                
NuGet\Install-Package YAMLicious -Version 0.0.2                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用了 NuGet 模块的 Install-Package 版本。
<PackageReference Include="YAMLicious" Version="0.0.2" />                
对于支持 包引用 的项目,将此 XML 节点复制到项目文件中以引用此包。
paket add YAMLicious --version 0.0.2                
#r "nuget: YAMLicious, 0.0.2"                
#r 指令可用于 F# Interactive 和多语言笔记本。将此内容复制到交互式工具或脚本的源代码中以引用该包。
// 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

NuGet Version NuGet Downloads

YAMLicious 是一个受 Thoth.Json 语法启发的袖珍 YAML 读取器/写入器!

代码示例

F# 模型

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

解码(从 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

编码(到 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)

本地开发

需求

由于此库针对多种编程语言,我们需要支持所有这些语言

  • nodejs 和 npm
    • 验证 node --version(已测试 v20.10.0)
    • 验证 npm --version(已测试 v9.2.0)
  • .NET SDK
    • 验证 dotnet --version(已测试 8.0.205)
  • Python
    • 验证 py --version(已测试 3.11.9,已知只支持 >=3.11)

设置

这需要在新鲜下载后一次性完成。Python venv 可执行文件的路径可能因操作系统而异。

  1. dotnet tool restore,恢复 .NET 工具(fable)
  2. npm i,安装 JS 依赖项
  3. py -m venv ./.venv,设置 Python 虚拟环境
  4. .\.venv\Scripts\Activate.ps1,激活 Python 虚拟环境
  5. 安装 Python 依赖项
    1. python -m pip install -U pip setuptools
    2. python -m pip install poetry
    3. python -m poetry install --no-root

测试

首先激活 Python 虚拟环境(.\.venv\Scripts\Activate.ps1)。

.\build.cmd test

或指定目标

.\build.cmd test [f#,c#,js [native],py [native]]

发布

需要 Nuget 和 PyPi 的 API 密钥。

以下命令将运行所有测试,捆绑然后开始发布!

.\build.cmd publish pipeline

或仅发布特定目标,不进行测试和打包

.\build.cmd publish [npm, pypi, nuget]

产品 兼容性和附加的自动计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET Standard netstandard2.0 兼容。 netstandard2.1 已计算。
.NET Framework net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET Standard

NuGet 包 (1)

显示依赖 YAMLicious 的前 1 个 NuGet 包

下载
ARCtrl.Yaml

为常规工作流语言提供 AR 帮助函数。

GitHub 代码库

此包未由任何流行的 GitHub 代码库使用。

版本 下载 最后更新
0.0.2 92 7/11/2024
0.0.1 191 7/8/2024
0.0.1-alpha 85 6/24/2024