On Tue, 2017-01-24 at 23:47 +0100, Daniel Dekany wrote: > > Should the TemplateResolver-s (the work name for the new interface) > still get the template name already resolved to absolute and > normalized? So when cfg.getTemplate is called, then it invokes > cfg.templateNameFormat.normalizeAbsoluteName(String) to normalize the > path, and only then it calls the TemplateResolver. Also #import and > such currently calls templateNameFormat.toAbsoluteName(String, > String), and that would happen earlier than TemplateResolver is > involved. > > And how would it look... perhaps like this: > > public interface TemplateResolver { > > Template getTemplate(String templatePath, Local lookupLocale, Object > customLookupCondition) > throws IOException; > > } > > You may notice that it misses the `encoding` and `parsed` parameter of > cfg.getTemplate. That's because I belive that in FM3 we should not > allow specifying those as getTemplate parameters anymore, but that > will be another thread when we get there.
IMO it should pass through the exact text from the include/etc in the template. It might be worth constraining to a valid URI syntax but other than that a TemplateResolver would be much more flexible if no normalization/etc is done. Passing in the Locale rather than trying to call it multiple times with different locale extensions is a good idea too as different underlying content or file stores may have their own approach for this. For example a JCR back end has quite a bit for meta data and content variations. In general more parameters and less built into the path/name is a good thing IMO. -David