RFC Web Forms and Rebol
I’ve been considering changing the behaviour of my AltWebForm module. Currently the deserialiser extrapolates meaning from keys to produce deeper data structures:
post.title=Something&post.tag=one&post.tag=two
Becomes:
post [
title "Something"
tag ["one" "two"]
]
The first consideration is that a repetitive tag implies a block instead of a single value. This causes a problem in validation as any value can become a block where a single value is required:
post.title=First&post.title=Second
My first proposed change then is that a repetitive value overwrites the previous value, so the above becomes:
post [title "Second"]
The second consideration is how then to handle values that are legitimate collections?
My second proposed change then is that a key that represents a block of values end in a period:
post.tag.=one
post.tag.=one&post.tag.=two
Becomes:
post [tag ["one"]]
post [tag ["one" "two"]]
Respectively.
Update 15th Oct, 2015
As AltWebForm is a key component with the QuarterMaster framework, I have one other consideration for how this works. Currently QM uses smart tags to build form controls manually. For rich keys such as the above, I can use paths that are translated into a webform-encoded friendly name. The addition of the extra dot presents a challenge in how to represent the array ‘bit’:
<%! field post/title "Title Here" %>
<%! field post/tag/. "one" %>
<%! field post/tag/. "two" %>
Is one possible way to handle things.
Please post comments to the [Rebol and Red] chat room.