survey_prepare_narrative
Parse a survey narrative question into renderable text and input parts.
Text outside square brackets is HTML escaped and retained as text. A bracketed
name such as [age] becomes a text input; [color=red|green|blue] becomes a
select input. The result is a map containing the parsed parts list.