>
> Yeah, we can't expect everyone wanting to call a built-in function to
> know how they would define an equivalent one themselves. In that case I
> propos marking it up like this:
>
>     <function>format</function> (
>     <parameter>formatstr</parameter> <type>text</type>
>     <optional>, <parameter>formatarg</parameter> <type>"any"</type>
>     <optional>, ...</optional> </optional> )
>     <returnvalue>text</returnvalue>
>

Looks good, but I guess I have to ask: is there a parameter-list tag out
there instead of (, and should we be using that?



> The requisite nesting when there are multiple optional parameters makes
> it annoying to wrap and indent it "properly" per XML convention, but how
> about something like this, with each parameter on a line of its own, and
> all the closing </optional> tags on one line?
>
>     <function>regexp_substr</function> (
>     <parameter>string</parameter> <type>text</type>,
>     <parameter>pattern</parameter> <type>text</type>
>     <optional>, <parameter>start</parameter> <type>integer</type>
>     <optional>, <parameter>N</parameter> <type>integer</type>
>     <optional>, <parameter>flags</parameter> <type>text</type>
>     <optional>, <parameter>subexpr</parameter> <type>integer</type>
>     </optional> </optional> </optional> </optional> )
>     <returnvalue>text</returnvalue>
>

Yes, that has an easy count-the-vertical, count-the-horizontal,
do-they-match flow to it.


> A lot of functions mostly follow this style, except they tend to put the
> first parameter on the same line of the function namee, even when that
> makes the line overly long. I propose going the other way, with each
> parameter on a line of its own, even if the first one would fit after
> the function name, except the whole parameter list fits after the
> function name.
>

+1


>
> Also, when there's only one optional argument, or they're independently
> optional, not nested, the </optional> tag should go on the same line as
> the parameter.
>
>     <function>substring</function> (
>     <parameter>bits</parameter> <type>bit</type>
>     <optional> <literal>FROM</literal> <parameter>start</parameter>
> <type>integer</type> </optional>
>     <optional> <literal>FOR</literal> <parameter>count</parameter>
> <type>integer</type> </optional> )
>     <returnvalue>bit</returnvalue>
>

+1

Reply via email to