Skip to content

Commit 9d9918d

Browse files
Add Dates types rendering (#10)
1 parent ba7d693 commit 9d9918d

File tree

4 files changed

+29
-9
lines changed

4 files changed

+29
-9
lines changed

Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
name = "Jinja2Cpp"
22
uuid = "53d8605c-dcf1-482a-b927-58e959abfe3c"
3-
version = "0.1.3"
3+
version = "0.1.4"
44

55
[deps]
6+
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
67
jinja2cppwrapper_jll = "1834a480-2153-5a5f-b716-e106e053fa41"
78

89
[compat]

src/Jinja2Value.jl

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
#__ Jinja2Value
22

3+
using Dates
4+
35
abstract type Jinja2ValueType end
46

5-
struct Jinja2StringType <: Jinja2ValueType end
6-
struct Jinja2IntegerType <: Jinja2ValueType end
7-
struct Jinja2BoolType <: Jinja2ValueType end
8-
struct Jinja2DoubleType <: Jinja2ValueType end
9-
struct Jinja2ListType <: Jinja2ValueType end
10-
struct Jinja2MapType <: Jinja2ValueType end
11-
struct Jinja2EmptyType <: Jinja2ValueType end
12-
struct Jinja2CustomType <: Jinja2ValueType end
7+
struct Jinja2StringType <: Jinja2ValueType end
8+
struct Jinja2IntegerType <: Jinja2ValueType end
9+
struct Jinja2BoolType <: Jinja2ValueType end
10+
struct Jinja2DoubleType <: Jinja2ValueType end
11+
struct Jinja2ListType <: Jinja2ValueType end
12+
struct Jinja2MapType <: Jinja2ValueType end
13+
struct Jinja2EmptyType <: Jinja2ValueType end
14+
struct Jinja2DateTimeType <: Jinja2ValueType end
15+
struct Jinja2CustomType <: Jinja2ValueType end
1316

1417
@inline Jinja2ValueType(::T) where {T} = Jinja2ValueType(T)
1518
@inline Jinja2ValueType(::Type{<:AbstractString}) = Jinja2StringType()
@@ -25,6 +28,7 @@ struct Jinja2CustomType <: Jinja2ValueType end
2528
@inline Jinja2ValueType(::Type{<:AbstractDict}) = Jinja2MapType()
2629
@inline Jinja2ValueType(::Type{<:NamedTuple}) = Jinja2MapType()
2730
@inline Jinja2ValueType(::Type{<:Enum}) = Jinja2StringType()
31+
@inline Jinja2ValueType(::Type{<:TimeType}) = Jinja2DateTimeType()
2832
@inline Jinja2ValueType(::Type{<:Any}) = Jinja2CustomType()
2933

3034
@inline function check_value_null(handle)
@@ -75,6 +79,10 @@ end
7579
return check_value_null(handle)
7680
end
7781

82+
@inline function jinja_value(::Jinja2DateTimeType, x::TimeType)
83+
return jinja_value(Jinja2StringType(), string(x))
84+
end
85+
7886
@inline function jinja_value(::Jinja2EmptyType, ::Any)
7987
handle = jinja2cpp_value_create_empty()
8088
return check_value_null(handle)

test/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
[deps]
2+
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
23
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

test/runtests.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Test
2+
using Dates
23
using Jinja2Cpp
34

45
import Jinja2Cpp.Jinja2Wrapper:
@@ -245,4 +246,13 @@ end
245246
@test jinja2_render(tmpl_true, FlagHolder(true)) == "Flag is ON"
246247
@test jinja2_render(tmpl_false, Dict("flag"=>false)) == "Flag is OFF"
247248
end
249+
250+
@testset "Case №11: Rendering with Dates values" begin
251+
dt = now(UTC)
252+
t = Time(dt)
253+
d = Date(dt)
254+
tmpl = Jinja2Template("Now is {{ t }}. Today is {{ d }}. Date and time: {{ dt }}")
255+
@test jinja2_render(tmpl, Dict("t" => t, "d" => d, "dt" => dt)) ==
256+
"Now is $(t). Today is $(d). Date and time: $(dt)"
257+
end
248258
end

0 commit comments

Comments
 (0)