/
person.piqi
47 lines (44 loc) · 966 Bytes
/
person.piqi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
% definition of a record type
.record [
.name person % record name
.field [
.name name % field name
.type string % field type
]
.field [
.name id
.type int
]
.field [
.name email
.type string
.optional % field is optional
]
.field [
.name phone
.type phone-number
.repeated % field can be repeated 0 or more times
]
]
.record [
.name phone-number
.field [
.name number
.type string
]
.field [
.name type
.type phone-type
.optional
.default.home % default value for an optional field
% ".default.home" is a shorthand for ".default (.home)", where
% ".home" is a value of the enum type defined below
]
]
% definition of an enum type
.enum [
.name phone-type
.option [ .name mobile ]
.option [ .name home ]
.option [ .name work ]
]