blob: f3f244bbe5e5d467410e3eebda63d6eb8e70e8fc [file] [log] [blame]
Dave Borowitz9de65952012-08-13 16:09:45 -07001// Copyright 2012 Google Inc. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package com.google.gitiles;
16
17import com.google.common.base.Function;
Dave Borowitz987988a2014-03-19 09:29:13 -070018import com.google.common.collect.ImmutableList;
Dave Borowitz9de65952012-08-13 16:09:45 -070019import com.google.common.collect.ImmutableMap;
20import com.google.common.io.Resources;
21import com.google.template.soy.SoyFileSet;
22import com.google.template.soy.tofu.SoyTofu;
23
24import java.net.URL;
25import java.util.Map;
26
27/** Renderer that precompiles Soy and uses static precompiled CSS. */
28public class DefaultRenderer extends Renderer {
29 private final SoyTofu tofu;
30
31 DefaultRenderer() {
Dave Borowitz987988a2014-03-19 09:29:13 -070032 this("", ImmutableList.<URL> of(), "");
Dave Borowitz9de65952012-08-13 16:09:45 -070033 }
34
Dave Borowitz76bbefd2014-03-11 16:57:45 -070035 public DefaultRenderer(String staticPrefix, Iterable<URL> customTemplates, String siteTitle) {
Chad Horohoe2a28d622012-11-12 11:56:59 -080036 this(ImmutableMap.<String, String> of(), staticPrefix, customTemplates, siteTitle);
Dave Borowitz9de65952012-08-13 16:09:45 -070037 }
38
Dave Borowitz76bbefd2014-03-11 16:57:45 -070039 public DefaultRenderer(Map<String, String> globals, String staticPrefix,
40 Iterable<URL> customTemplates, String siteTitle) {
Dave Borowitz9de65952012-08-13 16:09:45 -070041 super(
42 new Function<String, URL>() {
43 @Override
44 public URL apply(String name) {
45 return Resources.getResource(Renderer.class, "templates/" + name);
46 }
47 },
Chad Horohoe2a28d622012-11-12 11:56:59 -080048 globals, staticPrefix, customTemplates, siteTitle);
Dave Borowitz11bbead2014-06-26 12:18:26 -070049 SoyFileSet.Builder builder = SoyFileSet.builder()
Dave Borowitz9de65952012-08-13 16:09:45 -070050 .setCompileTimeGlobals(this.globals);
Shawn Pearcea9b99a12015-02-10 15:35:11 -080051 for (URL template : templates.values()) {
Dave Borowitz9de65952012-08-13 16:09:45 -070052 builder.add(template);
53 }
54 tofu = builder.build().compileToTofu();
55 }
56
57 @Override
58 protected SoyTofu getTofu() {
59 return tofu;
60 }
61}