[ticketvalidator]
new.required = purpose
*.required = address
done.*.required = weather, brightness
*.integer = age, lines_of_code
*.task.float = cost
This means:
- If the state is 'new', the field 'purpose' must be filled-in.
- 'address' is always required.
- If the state is 'done', 'weather' and 'brightness' are required, independent on the type (of course, "done.required = ..." would do the same here).
- 'age' and 'lines_of_code' must always be integers.
- Independent on the state, 'cost' must be a float if the ticket type is 'task'.