What does the colon do in DRYML?
What’s the difference between a tag invocation without a colon, with a colon on the end of the tag name and with a colon in the middle of the tag name?
Without any colons, this is an invocation of a DRYML or HTML tag.
For instance <field-list> invokes the
field-list tag in a fashion
similar to how
<br/> inserts a break in your HTML.
With a trailing colon, this parameterizes the enclosing tag.
<page> <content-body:>This will appear in the middle of your page</content-body:> </page>
content-body is not a tag in RAPID, it’s a parameter to <page>.
What sometimes confuses people is the convention in Hobo to make the parameter names the same as a tag name:
<form with="&Foo.new"> <field-list: fields="bar"/> </form>
form for="Foo" has a parameter called
field-list, which we
are modifying here. It’s not a coincidence that the
form for="Foo" is implemented via the
in Hobo. Therefore this is similar:
<form with="&Foo.new"> <field-list fields="bar"/> </form>
If you actually try this, the form will look the same, except that it will be missing its buttons. Why? The previous is actually a short-hand for
<form with="&Foo.new"> <default:> <field-list fields="bar"/> </default:> </form>
In the case of
form for="Foo", the default parameter comprises the
entire inner contents of the form, enclosing the three innner
parameters: error-messages, field-list and actions. Our first example
told DRYML to modify the field-list parameter but leave the other two
parameters unchanged. Our last example tells it to replace the default
parameters with a field-list invocation.
There’s a third tag invocation form:
This is a shorthand for:
Which is similar to:
except that the final form loses its place in the context hierarchy. The context hierarchy is used by <nested-cache> as well as for determining parameter names for inputs in a form.
Edit this page