View Javadoc
1   package org.codehaus.gmavenplus.groovyworkarounds;
2   
3   import org.codehaus.gmavenplus.model.internal.Version;
4   
5   import static org.codehaus.gmavenplus.util.ClassWrangler.groovyAtLeast;
6   
7   
8   /**
9    * This class was taken mostly from the Groovy project
10   * (<a href="https://github.com/groovy/groovy-core/blob/master/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/gstringTemplates/GroovyDocTemplateInfo.java">GroovyDocTemplateInfo.java</a> and <a href="https://github.com/groovy/groovy-core/blob/master/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/groovydoc/GroovyDoc.java">GroovyDoc.java</a>)
11   * because it wasn't available prior to Groovy 1.7.
12   */
13  public class GroovyDocTemplateInfo {
14  
15      /**
16       * Groovy 2.5.0 version.
17       */
18      protected static final Version GROOVY_2_5_0 = new Version(2, 5, 0);
19  
20      /**
21       * Groovy 1.6.2 version.
22       */
23      protected static final Version GROOVY_1_6_2 = new Version(1, 6, 2);
24  
25      /**
26       * Groovy 1.6.0 version.
27       */
28      protected static final Version GROOVY_1_6_0 = new Version(1, 6, 0);
29  
30      /**
31       * Groovy 1.6.0 RC-2 version.
32       */
33      protected static final Version GROOVY_1_6_0_RC2 = new Version(1, 6, 0, "RC-2");
34  
35      /**
36       * The version of Groovy whose locations to use for GroovyDoc templates.
37       */
38      protected final Version groovyVersion;
39  
40      /**
41       * Base directory of templates.
42       */
43      protected final String templateBaseDir;
44  
45      /**
46       * Constructs a new GroovyDocTemplateInfo using the specified Groovy version to determine templates location.
47       *
48       * @param version the version of Groovy whose locations to use for templates
49       */
50      public GroovyDocTemplateInfo(Version version) {
51          groovyVersion = version;
52          if (groovyAtLeast(groovyVersion, GROOVY_1_6_2)) {
53              templateBaseDir = "org/codehaus/groovy/tools/groovydoc/gstringTemplates/";
54          } else {
55              templateBaseDir = "org/codehaus/groovy/tools/groovydoc/gstring-templates/";
56          }
57      }
58  
59      public String[] defaultDocTemplates() {
60          if (groovyAtLeast(groovyVersion, GROOVY_2_5_0)) {
61              return new String[]{
62                      templateBaseDir + "topLevel/index.html",
63                      templateBaseDir + "topLevel/overview-frame.html",
64                      templateBaseDir + "topLevel/allclasses-frame.html",
65                      templateBaseDir + "topLevel/overview-summary.html",
66                      templateBaseDir + "topLevel/help-doc.html",
67                      templateBaseDir + "topLevel/index-all.html",
68                      templateBaseDir + "topLevel/deprecated-list.html",
69                      templateBaseDir + "topLevel/stylesheet.css",
70                      templateBaseDir + "topLevel/inherit.gif",
71                      "org/apache/groovy/docgenerator/groovy.ico"
72              };
73          } else if (groovyAtLeast(groovyVersion, GROOVY_1_6_2)) {
74              return new String[]{
75                      templateBaseDir + "topLevel/index.html",
76                      templateBaseDir + "topLevel/overview-frame.html",
77                      templateBaseDir + "topLevel/allclasses-frame.html",
78                      templateBaseDir + "topLevel/overview-summary.html",
79                      templateBaseDir + "topLevel/help-doc.html",
80                      templateBaseDir + "topLevel/index-all.html",
81                      templateBaseDir + "topLevel/deprecated-list.html",
82                      templateBaseDir + "topLevel/stylesheet.css",
83                      templateBaseDir + "topLevel/inherit.gif",
84                      "org/codehaus/groovy/tools/groovy.ico"
85              };
86          } else if (groovyAtLeast(groovyVersion, GROOVY_1_6_0)) {
87              return new String[]{
88                      templateBaseDir + "top-level/index.html",
89                      templateBaseDir + "top-level/overview-frame.html",
90                      templateBaseDir + "top-level/allclasses-frame.html",
91                      templateBaseDir + "top-level/overview-summary.html",
92                      templateBaseDir + "top-level/help-doc.html",
93                      templateBaseDir + "top-level/index-all.html",
94                      templateBaseDir + "top-level/deprecated-list.html",
95                      templateBaseDir + "top-level/stylesheet.css",
96                      templateBaseDir + "top-level/inherit.gif"
97              };
98          } else if (groovyAtLeast(groovyVersion, GROOVY_1_6_0_RC2)) {
99              return new String[]{
100                     templateBaseDir + "top-level/index.html",
101                     templateBaseDir + "top-level/overview-frame.html",
102                     templateBaseDir + "top-level/allclasses-frame.html",
103                     templateBaseDir + "top-level/overview-summary.html",
104                     templateBaseDir + "top-level/stylesheet.css",
105                     templateBaseDir + "top-level/inherit.gif"
106             };
107         } else {
108             return new String[]{
109                     templateBaseDir + "top-level/index.html",
110                     templateBaseDir + "top-level/overview-frame.html",
111                     templateBaseDir + "top-level/allclasses-frame.html",
112                     templateBaseDir + "top-level/overview-summary.html",
113                     templateBaseDir + "top-level/stylesheet.css"
114             };
115         }
116     }
117 
118     public String[] defaultPackageTemplates() {
119         if (groovyAtLeast(groovyVersion, GROOVY_1_6_2)) {
120             return new String[]{
121                     templateBaseDir + "packageLevel/package-frame.html",
122                     templateBaseDir + "packageLevel/package-summary.html"
123             };
124         } else {
125             return new String[]{
126                     templateBaseDir + "package-level/package-frame.html",
127                     templateBaseDir + "package-level/package-summary.html"
128             };
129         }
130     }
131 
132     public String[] defaultClassTemplates() {
133         if (groovyAtLeast(groovyVersion, GROOVY_1_6_2)) {
134             return new String[]{
135                     templateBaseDir + "classLevel/classDocName.html"
136             };
137         } else {
138             return new String[]{
139                     templateBaseDir + "class-level/classDocName.html"
140             };
141         }
142     }
143 
144 }