Feature/noda time support #32 (#37) · Szer/GiraffeGenerator@a6603ab · GitHub
Skip to content

Commit a6603ab

Browse files
authored
Feature/noda time support #32 (#37)
Added NodaTime support
1 parent 2b22358 commit a6603ab

15 files changed

Lines changed: 938 additions & 49 deletions

‎README.md‎

Lines changed: 57 additions & 1 deletion

‎src/GiraffeGenerator.Core/AST.fs‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,19 @@ let dateTimeType = synType "System.DateTime"
469469
let dateTimeOffsetType = synType "System.DateTimeOffset"
470470
let guidType = synType "System.Guid"
471471
let uriType = synType "System.Uri"
472+
let nodaTypes =
473+
{|
474+
Instant = synType "NodaTime.Instant"
475+
LocalDate = synType "NodaTime.LocalDate"
476+
LocalTime = synType "NodaTime.LocalTime"
477+
LocalDateTime = synType "NodaTime.LocalDateTime"
478+
OffsetDateTime = synType "NodaTime.OffsetDateTime"
479+
ZonedDateTime = synType "NodaTime.ZonedDateTime"
480+
Offset = synType "NodaTime.Offset"
481+
Duration = synType "NodaTime.Duration"
482+
Period = synType "NodaTime.Period"
483+
DateTimeZone = synType "NodaTime.DateTimeZone"
484+
|}
472485

473486
/// Expression for field in records
474487
/// {name}: {fieldType}

‎src/GiraffeGenerator.Core/CodeGen.fs‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,10 +194,12 @@ let generateInputsCombination combinedRecordPropertyToOriginalValue synt (schema
194194
generateBinds onlyNames.Head onlyNames.Tail finalGenerator
195195

196196
/// Creating whole module AST for Giraffe webapp
197-
let giraffeAst (api: Api) =
197+
let giraffeAst (api: Api) =
198+
let moduleName = Configuration.value.ModuleName |> Option.defaultValue api.Name
199+
198200
moduleDecl
199201
(xml api.Docs)
200-
api.Name
202+
moduleName
201203
[ openDecl "FSharp.Control.Tasks.V2.ContextInsensitive"
202204
openDecl "Giraffe"
203205
openDecl "System.Threading.Tasks"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[<RequireQualifiedAccess>]
2+
module Configuration
3+
4+
type DateTimeGeneratedType =
5+
| ZonedDateTime
6+
| OffsetDateTime
7+
| LocalDateTime
8+
| Instant
9+
10+
type Configuration =
11+
{
12+
UseNodaTime: bool
13+
MapDateTimeInto: DateTimeGeneratedType
14+
ModuleName: string option
15+
}
16+
17+
let mutable value =
18+
{ UseNodaTime = false
19+
MapDateTimeInto = OffsetDateTime
20+
ModuleName = None }

‎src/GiraffeGenerator.Core/GiraffeGenerator.Core.fsproj‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9+
<Compile Include="Configuration.fs" />
910
<Compile Include="AST.fs" />
1011
<Compile Include="ASTExt.fs" />
1112
<Compile Include="OpenApi.fs" />
@@ -28,6 +29,7 @@
2829
<PackageReference Include="Fantomas" Version="4.0.0" />
2930
<PackageReference Include="FSharp.Compiler.Service" Version="37.0.0" />
3031
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.2.3" />
32+
<PackageReference Include="NodaTime" Version="3.0.1" />
3133
</ItemGroup>
3234

3335
</Project>

‎src/GiraffeGenerator.Core/OpenApi.fs‎

Lines changed: 95 additions & 34 deletions

0 commit comments

Comments
 (0)