let simpletpl = { foo = "bar" }; let stringfieldtpl = { "field 1" = 1, }; let nestedtpl = { inner = { field = "value", }, scalar = 1, list = [1, 2, 3, 4], maybe_val = NULL, }; assert | simpletpl.foo == "bar"; |; assert | stringfieldtpl."field 1" == 1; |; assert | nestedtpl.scalar == 1; |; assert | nestedtpl.maybe_val == NULL; |; assert | nestedtpl.inner.field == "value"; |; assert | nestedtpl.list.0 == 1; |; assert | nestedtpl.list.1 == 2; |; assert | nestedtpl.list.2 == 3; |; assert | nestedtpl.list.3 == 4; |; let nestedcopy = nestedtpl{ inner = self.inner{ inner = { field3 = "three", }, field2 = 2, }, maybe_val = "some val", }; let deepnestedcopy = nestedcopy{ ignoreme = "ignored", inner = self.inner{ inner = self.inner{ field4 = 4, }, }, }; assert | nestedcopy.inner.field2 == 2; |; assert | nestedcopy.inner.inner.field3 == "three"; |; assert | deepnestedcopy.inner.inner.field4 == 4; |; assert | deepnestedcopy.maybe_val == "some val"; |; let base_maybe = { real = "A real value", }; let copy_maybe = base_maybe{ real = NULL, }; assert | copy_maybe.real == NULL; |; let quotedself_tpl = { "self" = "myself", }; assert | quotedself_tpl."self" == "myself"; |; let quotedenv_tpl = { "env" = "myenv", }; assert | quotedenv_tpl."env" == "myenv"; |; let unquotedenv_tpl = { env = "myenv", }; assert | unquotedenv_tpl."env" == "myenv"; |; let unquotedself_tpl = { self = "myself", }; assert | unquotedself_tpl."self" == "myself"; |;