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.pebble;
 
 import java.io.Writer;
 import java.util.List;
 import java.util.Map;
 
 
 
Pebble template engine for Pippo.

Author(s):
James Moger
 
 public class PebbleTemplateEngine implements TemplateEngine {
 
     private final Logger log = LoggerFactory.getLogger(PebbleTemplateEngine.class);
 
     public static final String PEBBLE = "peb";
     public static final String FILE_SUFFIX = "." + ;
 
     private Languages languages;
 
     private PebbleEngine engine;
 
     @Override
     public void init(Application application) {
         this. = application.getLanguages();
 
         Router router = application.getRouter();
         PippoSettings pippoSettings = application.getPippoSettings();
 
         String pathPrefix = pippoSettings.getString(.null);
         if (StringUtils.isNullOrEmpty(pathPrefix)) {
             pathPrefix = .;
         }
 
         List<Loaderloaders = Lists.newArrayList();
         PippoTemplateLoader templateLoader = new PippoTemplateLoader();
         templateLoader.setCharset(.);
         templateLoader.setPrefix(pathPrefix);
         templateLoader.setSuffix();
         loaders.add(templateLoader);
 
          = new PebbleEngine(new DelegatingLoader(loaders));
         .setStrictVariables(false);
         .addExtension(new I18nExtension(application.getMessages()));
         .addExtension(new FormatTimeExtension());
         .addExtension(new PrettyTimeExtension());
         .addExtension(new AngularJSExtension());
         .addExtension(new WebjarsAtExtension(router));
         .addExtension(new PublicAtExtension(router));
 
         if (pippoSettings.isDev()) {
             // do not cache templates in dev mode
             .setTemplateCache(null);
             .addExtension(new DebugExtension());
         }
 
         // set global template variables
         .getGlobalVariables().put("contextPath"router.getContextPath());
         .getGlobalVariables().put("appPath"router.getApplicationPath());
     }
    @Override
    public void renderString(String templateContentMap<StringObjectmodelWriter writer) {
        String language = (Stringmodel.get(.);
        if (StringUtils.isNullOrEmpty(language)) {
            language = .getLanguageOrDefault(language);
        }
        Locale locale = (Localemodel.get(.);
        if (locale == null) {
            locale = .getLocaleOrDefault(language);
        }
        try {
            PebbleEngine stringEngine = new PebbleEngine(new StringLoader());
            stringEngine.setStrictVariables(.isStrictVariables());
            stringEngine.setTemplateCache(null);
            PebbleTemplate template = stringEngine.getTemplate(templateContent);
            template.evaluate(writermodellocale);
            writer.flush();
        } catch (Exception e) {
            throw new PippoRuntimeException(e);
        }
    }
    @Override
    public void renderResource(String templateNameMap<StringObjectmodelWriter writer) {
        String language = (Stringmodel.get(.);
        if (StringUtils.isNullOrEmpty(language)) {
            language = .getLanguageOrDefault(language);
        }
        Locale locale = (Localemodel.get(.);
        if (locale == null) {
            locale = .getLocaleOrDefault(language);
        }
        try {
            PebbleTemplate template = null;
            if (locale != null) {
                // try the complete Locale
                template = getTemplate(templateNamelocale.toString());
                if (template == null) {
                    // try only the language
                    template = getTemplate(templateNamelocale.getLanguage());
                }
            }
            if (template == null) {
                // fallback to the template without any language or locale
                template = .getTemplate(templateName);
            }
            template.evaluate(writermodellocale);
            writer.flush();
        } catch (Exception e) {
            throw new PippoRuntimeException(e);
        }
    }
    private PebbleTemplate getTemplate(String templateNameString localePartthrows PebbleException {
        PebbleTemplate template = null;
        try {
            if (Strings.isNullOrEmpty(localePart)) {
                template = .getTemplate(templateName);
            } else {
                String localizedName = StringUtils.removeEnd(templateName) + "_" + localePart;
                template = .getTemplate(localizedName);
            }
        } catch (LoaderException e) {
            .debug(e.getMessage());
        }
        return template;
    }
New to GrepCode? Check out our FAQ X