Hi Rob,

maybe we could name it KeyReplacingLocalizer.

Here is the reference of the ReplacingResourceModel. It wasn't in html5
submodule but in minis.

https://github.com/wicketstuff/core/blob/85bfa1b4bf67261ad4a7b07295c366c49733ad1f/jdk-1.7-parent/minis-parent/minis/src/main/java/org/wicketstuff/minis/model/ReplacingResourceModel.java

The pattern is like this:

private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("\\$\\
{(.*?)\\}");

kind regards

Tobias

2015-03-04 9:57 GMT+01:00 Rob Sonke <r...@tigrou.nl>:

> Agree Martin, thanks for the tips (also Tobias). I'll look into an
> implementation of an extra Localizer, good names are welcome, and file a
> ticket.
>
> Rob
>
> On Wed, Mar 4, 2015 at 9:46 AM, Martin Grigorov <mgrigo...@apache.org>
> wrote:
>
> > Hi,
> >
> > Since there were no many requests for this functionality I'd prefer if we
> > use a specialization of Localizer as Rob did.
> > The Pattern compilation is the slower operation, so it should be a static
> > final field. The matching is usually fast so maybe there is no problem to
> > put it directly in Localizer. But I don't see why to do it if there are
> > just few users of this functionality.
> >
> > Please file a ticket!
> > Preferably with a patch/PR and some tests!
> >
> > Thanks!
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Wed, Mar 4, 2015 at 10:25 AM, Tobias Soloschenko <
> > tobiassolosche...@googlemail.com> wrote:
> >
> > > Hi,
> > >
> > > maybe we can provide a new Localizer or change the existing default
> > > implementation. As far as I know the StringResourceModel uses the same
> > > Syntax for replacing which might lead to errors
> > >
> > > @others: What do you think?
> > >
> > > @Rob: the pattern should be modified a bit so that it is not greedy
> (.*?)
> > > - have a look in WicketStuff / submodul html5 - there is a class
> > > ReplacingResourceModel - the pattern you find there is a better one.
> > >
> > > kind regards
> > >
> > > Tobias
> > >
> > > > Am 04.03.2015 um 09:09 schrieb Rob Sonke <r...@tigrou.nl>:
> > > >
> > > > Hi,
> > > >
> > > > It took a while to dive into this but I wrote a simple solution based
> > on
> > > > the pattern/matcher example of Tobias and this seems to work well. It
> > > only
> > > > wraps the default Localizer class in Wicket by overriding the
> getString
> > > > method:
> > > >
> > > > getResourceSettings().setLocalizer(new Localizer()
> > > >
> > > > {
> > > >
> > > >  public String getString(final String key, final Component component,
> > > > final IModel<?> model, final Locale locale, final String style, final
> > > > IModel<String> defaultValue) throws MissingResourceException
> > > >
> > > >  {
> > > >
> > > >    String value = super.getString(key, component, model, locale,
> style,
> > > > defaultValue);
> > > >
> > > >    StringBuffer output = new StringBuffer();
> > > >
> > > >    final Pattern PLACEHOLDER_PATTERN =
> > Pattern.compile("\\$\\{(.*)\\}");
> > > >
> > > >    Matcher matcher = PLACEHOLDER_PATTERN.matcher(value);
> > > >
> > > >
> > > >    // Search for other nested keys to replace
> > > >
> > > >    while (matcher.find())
> > > >
> > > >    {
> > > >
> > > >      String replacedPlaceHolder = getString(matcher.group(1),
> > component,
> > > > model, locale, style, (String)null);
> > > >
> > > >      matcher.appendReplacement(output, replacedPlaceHolder);
> > > >
> > > >    }
> > > >
> > > >    matcher.appendTail(output);
> > > >
> > > >    return output.toString();
> > > >
> > > >  }
> > > >
> > > > });
> > > >
> > > >
> > > > Any need for putting this in Wicket? Or maybe somebody has better
> > options
> > > > how to do this. I'm all ears but I'm already happy that I could
> > implement
> > > > this anyway without patching the Wicket source.
> > > >
> > > >
> > > > Rob
> > > >
> > > > On Sat, Feb 21, 2015 at 6:14 PM, Tobias Soloschenko <
> > > > tobiassolosche...@googlemail.com> wrote:
> > > >
> > > >> Hi,
> > > >>
> > > >> if it gained not as much interest in the community, but there are
> > still
> > > >> some users asking for such an implementation - maybe we can put it
> > into
> > > >> wicketstuff-minis?
> > > >>
> > > >> kind regards
> > > >>
> > > >> Tobias
> > > >>
> > > >> P.S.: I also answered the question in stackoverflow. :-)
> > > >>
> > > >> Am 21.02.15 um 17:59 schrieb Sven Meier:
> > > >>
> > > >> Hi,
> > > >>>
> > > >>> such a feature was asked a few times, e.g.:
> > > >>>
> > > >>> http://stackoverflow.com/questions/16684200/refer-to-
> > > >>> one-property-from-another
> > > >>>
> > > >>> But apparently it never gained much interest in the community. In
> my
> > > >>> experience you won't find many cases where this is useful anyway.
> > > >>>
> > > >>> Have fun
> > > >>> Sven
> > > >>>
> > > >>>
> > > >>>> On 21.02.2015 16:51, Tobias Soloschenko wrote:
> > > >>>>
> > > >>>> Rob,
> > > >>>>
> > > >>>> we will see what others say and if there is a standard way for
> this
> > in
> > > >>>> wicket. I'm currently testing the implementation - it also
> replaces
> > > keys
> > > >>>> found in hierarchy, because Wickets Localizer is going to be used
> > for
> > > each
> > > >>>> key which is going to be replaced. So the example of your first
> mail
> > > is
> > > >>>> also covered.
> > > >>>>
> > > >>>> kind regards
> > > >>>>
> > > >>>> Tobias
> > > >>>>
> > > >>>>> Am 21.02.15 um 16:37 schrieb Rob Sonke:
> > > >>>>>
> > > >>>>> Tobias,
> > > >>>>>
> > > >>>>> Somehow I'm missing your replies in gmail. But thanks for the
> > > >>>>> suggestions.
> > > >>>>> Using custom models would be a last resort for me. Because I will
> > > have
> > > >>>>> to
> > > >>>>> replace all occurences. I'm somehow hoping to hook into the
> > > localizer.
> > > >>>>>
> > > >>>>> On Sat, Feb 21, 2015 at 2:01 PM, Rob Sonke <r...@tigrou.nl>
> wrote:
> > > >>>>>
> > > >>>>> Hi all,
> > > >>>>>>
> > > >>>>>> I'm trying to achieve a fairly simple thing within .properties
> > > files to
> > > >>>>>> avoid a lot of duplicate words through different files.
> > > >>>>>>
> > > >>>>>> For example there's is a HomePage.properties with:
> > > >>>>>> lbl.foo=This is an example text, we love ${lbl.item}
> > > >>>>>>
> > > >>>>>> And then in MyWebApplication.properties:
> > > >>>>>> lbl.item=Wicket
> > > >>>>>>
> > > >>>>>> But as far as I can see, Wicket tries to resolve the parameters
> > with
> > > >>>>>> objects passed to eg StringResourceModel. How can I hook into
> this
> > > and
> > > >>>>>> solve this in a nice way?
> > > >>>>>>
> > > >>>>>> Kind regards,
> > > >>>>>> Rob
> > > >>>>
> > > >>>>
> > ---------------------------------------------------------------------
> > > >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > > >>>> For additional commands, e-mail: users-h...@wicket.apache.org
> > > >>>
> > > >>>
> ---------------------------------------------------------------------
> > > >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > > >>> For additional commands, e-mail: users-h...@wicket.apache.org
> > > >>
> > > >>
> ---------------------------------------------------------------------
> > > >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > > >> For additional commands, e-mail: users-h...@wicket.apache.org
> > > >>
> > > >>
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > > For additional commands, e-mail: users-h...@wicket.apache.org
> > >
> > >
> >
>

Reply via email to