Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2014 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package ro.pippo.trimou;
 
 
 import java.io.Writer;
 import java.util.Map;

Trimou template engine for Pippo.

Author(s):
James Moger
 
 public class TrimouTemplateEngine implements TemplateEngine {
 
     private static final Logger log = LoggerFactory.getLogger(TrimouTemplateEngine.class);
 
     public static final String MUSTACHE = "mustache";
     public static final String FILE_SUFFIX = "." + ;
 
     private Languages languages;
     private MustacheEngine engine;
 
     @Override
     public void init(Application application) {
         this. = application.getLanguages();
         this. = new ThreadLocalLocaleSupport();
 
         Router router = application.getRouter();
         PippoSettings pippoSettings = application.getPippoSettings();
 
         MustacheEngineBuilder builder = MustacheEngineBuilder.newBuilder();
         builder.setLocaleSupport();
         builder.registerHelper("ng"new AngularJsHelper());
         builder.registerHelper("i18n"new I18nHelper(application.getMessages()));
         builder.registerHelper("formatTime"new DateTimeFormatHelper());
         builder.registerHelper("prettyTime"new PrettyTimeHelper());
         builder.registerHelper("webjarsAt"new WebjarsAtHelper(router));
         builder.registerHelper("publicAt"new PublicAtHelper(router));
         builder.registerHelpers(HelpersBuilder.extra().build());
 
         String pathPrefix = pippoSettings.getString(.null);
         if (StringUtils.isNullOrEmpty(pathPrefix)) {
             pathPrefix = .;
         }
         pathPrefix = StringUtils.removeStart(pathPrefix"/");
         builder.addTemplateLocator(new PippoTemplateLocator(10, pathPrefix));
 
         if (pippoSettings.isDev()) {
             // enable debug mode
             builder.setProperty(.true);
         } else {
             // automatically minify pages generated in production/test
             builder.addMustacheListener(Minify.htmlListener());
         }
 
         // set global template variables
         builder.addGlobalData("contextPath"router.getContextPath());
         builder.addGlobalData("appPath"router.getApplicationPath());
 
          = builder.build();
     }
 
     @Override
     public void renderString(String templateContentMap<StringObjectmodelWriter writer) {
        String language = (Stringmodel.get(.);
        if (StringUtils.isNullOrEmpty(language)) {
            language = .getLanguageOrDefault(language);
        }
        // prepare the locale
        Locale locale = (Localemodel.get(.);
        if (locale == null) {
            locale = .getLocaleOrDefault(language);
        }
        try {
            .setCurrentLocale(locale);
            Mustache template = .compileMustache("StringTemplate"templateContent);
            template.render(writermodel);
            writer.flush();
        } catch (Exception e) {
            if (e instanceof PippoRuntimeException) {
                throw (PippoRuntimeExceptione;
            }
            throw new PippoRuntimeException(e);
        } finally {
            .remove();
        }
    }
    @Override
    public void renderResource(String templateNameMap<StringObjectmodelWriter writer) {
        String language = (Stringmodel.get(.);
        if (StringUtils.isNullOrEmpty(language)) {
            language = .getLanguageOrDefault(language);
        }
        // prepare the locale
        Locale locale = (Localemodel.get(.);
        if (locale == null) {
            locale = .getLocaleOrDefault(language);
        }
        try {
            Mustache template = null;
            .setCurrentLocale(locale);
            templateName = StringUtils.removeEnd(templateName);
            if (locale != null) {
                // try the complete Locale
                template = .getMustache(getLocalizedTemplateName(templateNamelocale.toString()));
                if (template == null) {
                    // try only the language
                    template = .getMustache(getLocalizedTemplateName(templateNamelocale.getLanguage()));
                }
            }
            if (template == null) {
                // fallback to the template without any language or locale
                template = .getMustache(templateName);
            }
            if (template == null) {
                throw new PippoRuntimeException("Template '{}' not found!"templateName);
            }
            template.render(writermodel);
            writer.flush();
        } catch (Exception e) {
            if (e instanceof PippoRuntimeException) {
                throw (PippoRuntimeExceptione;
            }
            throw new PippoRuntimeException(e);
        } finally {
            .remove();
        }
    }
    private String getLocalizedTemplateName(String templateNameString localePart) {
        return StringUtils.removeEnd(templateName) + "_" + localePart;
    }
New to GrepCode? Check out our FAQ X