On Wed, Jul 3, 2019 at 8:39 AM Simon Urli <simon.u...@xwiki.com> wrote:
>
> Hi everyone,
>
> On 28/06/2019 21:32, Thomas Mortagne wrote:
> > On Fri, Jun 28, 2019 at 7:12 PM Vincent Massol <vinc...@massol.net> wrote:
> >>
> >>
> >>
> >>> On 28 Jun 2019, at 19:10, Vincent Massol <vinc...@massol.net> wrote:
> >>>
> >>> Hi Simon,
> >>>
> >>>> On 28 Jun 2019, at 18:56, Simon Urli <simon.u...@xwiki.com> wrote:
> >>>>
> >>>> Hi everyone,
> >>>>
> >>>> this is a proposal to add a new wikimacro script binding for the next 
> >>>> release, that I also plan to backport on 11.3.x and 10.11.x branches.
> >>>>
> >>>> We had recently a bug report (https://jira.xwiki.org/browse/XWIKI-16520) 
> >>>> about the WikiMacro parameter: types were introduce in 10.10 (with 
> >>>> https://jira.xwiki.org/browse/XWIKI-13282) but we in fact never 
> >>>> converted them, making their type pretty useless.
> >>>>
> >>>> We provided a first fix to it actually broke at least one existing 
> >>>> macro, AttachmentSelector which was still expecting String parameter 
> >>>> values instead of the types used in some of those parameters.
> >>>>
> >>>> So even if the parameters were supposed to be typed since XWiki 10.10, 
> >>>> in practice they never have been. We might as well consider returning a 
> >>>> typed values as a regression since it might break some of the existing 
> >>>> macros.
> >>>>
> >>>> That's why I propose to implement right now a new wikimacro binding, to 
> >>>> be able to get both typed parameter values and string parameter values.
> >>>> The old binding would then still be available by using $xcontext.macro 
> >>>> but we would deprecate its usage.
> >>>>
> >>>> I propose that all the existing $xcontext.macro information to be 
> >>>> available by using $macro, and to be able to use:
> >>>>
> >>>> * $macro.parameters.foo to get a typed parameter value
> >
> > +1, we chose params in the previous binding because it's shorter and I
> > don't really have anything against it either
>
> So I did the implementation for this binding, as a matter of fact I had
> to use
>
> $wikimacro instead of $macro because "macro" is already a reserved
> binding for velocity.
>
> So $wikimacro have the same objects as $xcontext.macro except params
> which is now parameters and contains converted values.

Note: it's not the same object, Simon just mean the same bindings are
exposed in both objects.

>
> The work is done as part of https://jira.xwiki.org/browse/XWIKI-16549.
>
> Simon
> >
> >>>> * $macro.parametersAsString.foo to get the string value parameter
> >
> > I don't think we really need that. Also it does not make much sense
> > from API point of view since the input parameter value before
> > conversion is not String but Object, macros coming from a wiki source
> > will be Strings but it's just a use case.
> >
> > If we want to provider devs with a way to get the String
> > representation of any property we can introduce a
> > $services.properties.toString($value) for example.
> >
> >>>>
> >>>>
> >>>> Could you tell me if you agree with all those changes?
> >>>
> >>> Sounds good.
> >>
> >> Actually I’m hesitating because we said we didn’t want to expose bindings 
> >> directly  in the velocity context.
> >>
> >> So $services.macro might be better since $services is reserved.
> >>
> >> Imagine an existing wiki macro doing:
> >>
> >> #set ($macro = “….”)
> >>
> >> You would break it.
> >
> > Why ?
> >
> > It's not because the macro binding is already set before the execution
> > of the macro that the #set will crash.
> >
> >>
> >> Thanks
> >> -Vincent
> >>
> >>> I’m wondering if I wouldn’t prefer the following:
> >>>
> >>> * $macro.parameters.foo.value() <- typed
> >
> > -1, it's way too complex for what is supposed to be the thing you want
> > to to pretty much all the time
> >
> >>> * $macro.parameters.foo.rawValue() or toString() <- string, as specified 
> >>> by the user when using the macro
> >>>
> >>> $macro.parameters.foo would return some MacroParameter object.
> >>>
> >>> Note that $macro.parameters.foo when used in a string context  would call 
> >>> $macro.parameters.foo.toString() which would return the raw value.
> >>>
> >>> Thanks
> >>> -Vincent
> >>>
> >>>
> >>>
> >>>>
> >>>> Thanks,
> >>>> Simon
> >>>>
> >>>>
> >>>> --
> >>>> Simon Urli
> >>>> Software Engineer at XWiki SAS
> >>>> simon.u...@xwiki.com
> >>>> More about us at http://www.xwiki.com
> >>
> >
> >
>
> --
> Simon Urli
> Software Engineer at XWiki SAS
> simon.u...@xwiki.com
> More about us at http://www.xwiki.com



-- 
Thomas Mortagne

Reply via email to