1+ namespace ARCtrl.Yaml
2+
3+ open ARCtrl.ValidationPackages
4+ open YAMLicious
5+ open YAMLicious.YAMLiciousTypes
6+
7+ module ValidationPackagesConfig =
8+
9+ let encoder ( validationpackage : ValidationPackagesConfig ) =
10+ [
11+ " validation_packages" , Encode.array ValidationPackage.encoder validationpackage.ValidationPackages
12+ Encode.tryInclude " arc_specification" Encode.string ( validationpackage.ARCSpecification)
13+ ]
14+ |> Encode.choose
15+ |> Encode.object
16+
17+ let decoder : ( YAMLElement -> ValidationPackagesConfig ) =
18+ Decode.object ( fun get ->
19+ ValidationPackagesConfig(
20+ validation_ packages = get.Required.Field " validation_packages" ( Decode.array ValidationPackage.decoder),
21+ ?arc_ specification = get.Optional.Field " arc_specification" Decode.string
22+ )
23+ )
24+
25+ [<AutoOpen>]
26+ module ValidationPackageConfigExtensions =
27+
28+ open Arctrl.Yaml
29+ type ValidationPackagesConfig with
30+
31+ static member fromYamlString ( s : string ) =
32+ Decode.fromYamlString ValidationPackagesConfig.decoder s
33+
34+ static member toYamlString (? whitespace ) =
35+ fun ( vp : ValidationPackagesConfig ) ->
36+ ValidationPackagesConfig.encoder vp
37+ |> Encode.toYamlString ( Encode.defaultWhitespace whitespace)
38+
39+ member this.toYamlString (? whitespace ) =
40+ ValidationPackagesConfig.toYamlString( ?whitespace= whitespace) this
41+
42+ //let fromFile (path : string) =
43+ // File.ReadAllText path
44+ // |> fromString
45+
46+ //let toFile (path : string) (c:Comment) =
47+ // File.WriteAllText(path,toString c)
0 commit comments