blob: c43c7a8131cd19fb29921a7c17bb1ab852e46446 [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
Dave Borowitz987988a2014-03-19 09:29:13 -070017import com.google.common.collect.ImmutableList;
Dave Borowitz9de65952012-08-13 16:09:45 -070018import com.google.common.collect.ImmutableMap;
19import com.google.common.io.Resources;
20import com.google.template.soy.SoyFileSet;
21import com.google.template.soy.tofu.SoyTofu;
Dave Borowitzca557f72016-10-04 09:46:24 -040022
Dave Borowitz9de65952012-08-13 16:09:45 -070023import java.net.URL;
24import java.util.Map;
25
26/** Renderer that precompiles Soy and uses static precompiled CSS. */
27public class DefaultRenderer extends Renderer {
28 private final SoyTofu tofu;
29
30 DefaultRenderer() {
Han-Wen Nienhuysc0200f62016-05-02 17:34:51 +020031 this("", ImmutableList.<URL>of(), "");
Dave Borowitz9de65952012-08-13 16:09:45 -070032 }
33
Dave Borowitz76bbefd2014-03-11 16:57:45 -070034 public DefaultRenderer(String staticPrefix, Iterable<URL> customTemplates, String siteTitle) {
Han-Wen Nienhuysc0200f62016-05-02 17:34:51 +020035 this(ImmutableMap.<String, String>of(), staticPrefix, customTemplates, siteTitle);
Dave Borowitz9de65952012-08-13 16:09:45 -070036 }
37
Han-Wen Nienhuysc0200f62016-05-02 17:34:51 +020038 public DefaultRenderer(
39 Map<String, String> globals,
40 String staticPrefix,
41 Iterable<URL> customTemplates,
42 String siteTitle) {
Dave Borowitz9de65952012-08-13 16:09:45 -070043 super(
Dave Borowitzca557f72016-10-04 09:46:24 -040044 r -> Resources.getResource(Renderer.class, "templates/" + r),
Han-Wen Nienhuysc0200f62016-05-02 17:34:51 +020045 globals,
46 staticPrefix,
47 customTemplates,
48 siteTitle);
49 SoyFileSet.Builder builder = SoyFileSet.builder().setCompileTimeGlobals(this.globals);
Shawn Pearcea9b99a12015-02-10 15:35:11 -080050 for (URL template : templates.values()) {
Dave Borowitz9de65952012-08-13 16:09:45 -070051 builder.add(template);
52 }
53 tofu = builder.build().compileToTofu();
54 }
55
56 @Override
57 protected SoyTofu getTofu() {
58 return tofu;
59 }
60}