Both solutions posted so far rely on having onInit be the one declaration section, but I actually have 11 different attributes, and at least four of them would make sense as declaration sections. They're also ordered among themselves. Here's a still incomplete but perhaps more representative list of attributes and their ordering:
- preRestore
- onRestore
- onAttach
- onInit
- onAwaken
- onChange
Oh, and I like the idea of sandboxing everything into a package -- but I'm already doing that.
Update: Just to be explicit, here's an example:
<script preRestore='use strict'
onRestore='my $pos = [ 10, 20 ]'
onInit='my ($x, $y) = @$pos;'
onChange='$x += 1; $y += 2; $pos = [ $x, $y ]'
/>