diff --git a/examples/fsharp_signature_files/BUILD.bazel b/examples/fsharp_signature_files/BUILD.bazel new file mode 100644 index 00000000..be90a734 --- /dev/null +++ b/examples/fsharp_signature_files/BUILD.bazel @@ -0,0 +1,16 @@ +load( + "@rules_dotnet//dotnet:defs.bzl", + "fsharp_library", +) + +fsharp_library( + name = "fsharp_signature_files", + srcs = [ + "domain.fsi", + "domain.fs", + ], + target_frameworks = ["netstandard2.1"], + deps = [ + "@paket.example_deps//fsharp.core", + ], +) diff --git a/examples/fsharp_signature_files/domain.fs b/examples/fsharp_signature_files/domain.fs new file mode 100644 index 00000000..477df13e --- /dev/null +++ b/examples/fsharp_signature_files/domain.fs @@ -0,0 +1,22 @@ +namespace Domain + +type OrderID = + | OrderID of string + +[] +module OrderID = + + open System + open System.Text.RegularExpressions + + let pattern = Regex "^[a-z][a-z0-9]{5}$" + + let tryParse (x : string) : OrderID option = + if pattern.IsMatch(x) then + Some (OrderID x) + else + None + + let toString (x : OrderID) : string = + let (OrderID s) = x + s diff --git a/examples/fsharp_signature_files/domain.fsi b/examples/fsharp_signature_files/domain.fsi new file mode 100644 index 00000000..1e1a3758 --- /dev/null +++ b/examples/fsharp_signature_files/domain.fsi @@ -0,0 +1,8 @@ +namespace Domain + +type OrderID = internal | OrderID of string + +[] +module OrderID = + val tryParse : string -> OrderID option + val toString : OrderID -> string diff --git a/examples/fsharp_signature_files/fsharp_signature_files.fsproj b/examples/fsharp_signature_files/fsharp_signature_files.fsproj new file mode 100644 index 00000000..a4c624f0 --- /dev/null +++ b/examples/fsharp_signature_files/fsharp_signature_files.fsproj @@ -0,0 +1,10 @@ + + + netstandard2.1 + true + + + + + +