blob: 5a54cea4986870287fedfde7e97cd43bf039330b [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 static com.google.common.base.Preconditions.checkState;
18
Dave Borowitz76bbefd2014-03-11 16:57:45 -070019import com.google.common.collect.FluentIterable;
Dave Borowitz9de65952012-08-13 16:09:45 -070020import com.google.common.collect.ImmutableMap;
Shawn Pearcea9b99a12015-02-10 15:35:11 -080021import com.google.common.hash.HashCode;
Dave Borowitz9de65952012-08-13 16:09:45 -070022import com.google.template.soy.SoyFileSet;
23import com.google.template.soy.tofu.SoyTofu;
Dave Borowitz9de65952012-08-13 16:09:45 -070024import java.io.File;
25import java.net.URISyntaxException;
26import java.net.URL;
27
28/** Renderer that reloads Soy templates from the filesystem on every request. */
29public class DebugRenderer extends Renderer {
Han-Wen Nienhuysc0200f62016-05-02 17:34:51 +020030 public DebugRenderer(
31 String staticPrefix,
32 Iterable<String> customTemplatesFilenames,
33 final String soyTemplatesRoot,
34 String siteTitle) {
Dave Borowitz9de65952012-08-13 16:09:45 -070035 super(
Dave Borowitz76bbefd2014-03-11 16:57:45 -070036 new FileUrlMapper(soyTemplatesRoot + File.separator),
Han-Wen Nienhuysc0200f62016-05-02 17:34:51 +020037 ImmutableMap.<String, String>of(),
38 staticPrefix,
Dave Borowitz76bbefd2014-03-11 16:57:45 -070039 FluentIterable.from(customTemplatesFilenames).transform(new FileUrlMapper()),
40 siteTitle);
Dave Borowitz9de65952012-08-13 16:09:45 -070041 }
42
43 @Override
Shawn Pearcea9b99a12015-02-10 15:35:11 -080044 public HashCode getTemplateHash(String soyFile) {
45 return computeTemplateHash(soyFile);
46 }
47
48 @Override
Dave Borowitz9de65952012-08-13 16:09:45 -070049 protected SoyTofu getTofu() {
Han-Wen Nienhuysc0200f62016-05-02 17:34:51 +020050 SoyFileSet.Builder builder = SoyFileSet.builder().setCompileTimeGlobals(globals);
Shawn Pearcea9b99a12015-02-10 15:35:11 -080051 for (URL template : templates.values()) {
Dave Borowitz9de65952012-08-13 16:09:45 -070052 try {
53 checkState(new File(template.toURI()).exists(), "Missing Soy template %s", template);
54 } catch (URISyntaxException e) {
55 throw new IllegalStateException(e);
56 }
57 builder.add(template);
58 }
59 return builder.build().compileToTofu();
60 }
61}