Re: Keyword arguments and fn:serialize [was fn:slice]

On Tue, 2020-12-08 at 00:02 +0000, Michael Kay wrote:
> By "doesn't work for fn:serialize" I mean it doesn't solve the
> usability problems of fn:serialize.

Hmm - i think beneto is on to something by suggesting multiple
functions there.

serialize-html(), serialize-json() etc.

Clearly you can call serialize() unchanged in my proposal, or with
keyword arguments,
   serialize(arg: $string, params: $map)
but this isn't much better than
   serialize($string, $map)

So the question you're really asking is, how can we use this proposal
to improve the usability of serialize().

If we go with Beneto's functions, we then could have,

serialize-html(
    input: $string,
    html-version: 5,
    indent: false()
)

where serialize-html() has a single required option, $input as item()*,
and a set of optional parameters corresponding to the individual keys
in the options() map that apply to HTML.

I think that you are proposing instead that the ekyword arguments
wouldbe collected into a map and that map passed, with no static
typing, to the function as a map, is that right?

If so, how would that work with calling fn:replace() ? What i'm
proposing would also let me write,
  fn:replace(
    input: .,
    pattern: "(.*?)\s+(.*)",
    replacement: "$2, $1",
    flags: "s"
  )    
and would call fn:replace() as in XPath 3.

Since the arguments are required, there's a replace#3 and a replace#4;
if instead it was 3 fixed required argument and an optional fourth, i
could maybe write replace#* to refer to it (or  replace#3+ if the
grammar allows it, although that's maybe too ugly). You can't, with the
proposal i wrote, have both a 3-argument function and a 4-argument
function where the 4th argument is optional and the names are the same,
as it wouldn't be possible to tell which one to call - unless there was
a rule to disambiguate, which is certainly possible.

Thanks!


-- 
Liam Quin, https://www.delightfulcomputing.com/
Available for XML/Document/Information Architecture/XSLT/
XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.
Barefoot Web-slave, antique illustrations:  http://www.fromoldbooks.org

Received on Tuesday, 8 December 2020 00:22:19 UTC