From e81b6ce09444a4f7457834d4150ad1e1ef9dd6e6 Mon Sep 17 00:00:00 2001 From: Don Brown Date: Sun, 5 Feb 2012 11:14:09 +0800 Subject: [PATCH 1/3] Add file template loader to allow easy overrides --- circumflex-ftl/src/main/scala/config.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circumflex-ftl/src/main/scala/config.scala b/circumflex-ftl/src/main/scala/config.scala index 3e20bf73..d016b30a 100644 --- a/circumflex-ftl/src/main/scala/config.scala +++ b/circumflex-ftl/src/main/scala/config.scala @@ -53,7 +53,7 @@ class DefaultConfiguration extends Configuration { CX_LOG.warn("Not running in webapp context.") } addLoader(new ClassTemplateLoader(getClass, "/")) - + addLoader(new FileTemplateLoader()) } object MarkevenDirective extends TemplateDirectiveModel { From ff06199e2fa48a08c818bb500585d5f03474ee0f Mon Sep 17 00:00:00 2001 From: Don Brown Date: Mon, 13 Feb 2012 00:53:58 +0800 Subject: [PATCH 2/3] Set intelligent defaults for docco to support java and scala * Base dir defaults to src/main * Output dir defaults to target/docco * Templates loaded from root, not local dir * Mojo can now be used in multi-module project * Filename matcher now matches java and scala source files --- circumflex-ftl/src/main/scala/config.scala | 4 ++-- .../maven/AbstractCircumflexMojo.java | 8 ++++++- .../java/ru/circumflex/maven/DoccoMojo.java | 22 ++++++++++++++++++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/circumflex-ftl/src/main/scala/config.scala b/circumflex-ftl/src/main/scala/config.scala index d016b30a..0e4720b9 100644 --- a/circumflex-ftl/src/main/scala/config.scala +++ b/circumflex-ftl/src/main/scala/config.scala @@ -6,7 +6,7 @@ import markeven.BlockProcessor import _root_.freemarker.template._ import _root_.freemarker.core.Environment import _root_.freemarker.cache._ -import java.io.StringWriter +import java.io.{File, StringWriter} /*!# Default FreeMarker Configuration @@ -53,7 +53,7 @@ class DefaultConfiguration extends Configuration { CX_LOG.warn("Not running in webapp context.") } addLoader(new ClassTemplateLoader(getClass, "/")) - addLoader(new FileTemplateLoader()) + addLoader(new FileTemplateLoader(new File("/"))) } object MarkevenDirective extends TemplateDirectiveModel { diff --git a/circumflex-maven-plugin/src/main/java/ru/circumflex/maven/AbstractCircumflexMojo.java b/circumflex-maven-plugin/src/main/java/ru/circumflex/maven/AbstractCircumflexMojo.java index 0eb5e4fe..f5dc0c14 100644 --- a/circumflex-maven-plugin/src/main/java/ru/circumflex/maven/AbstractCircumflexMojo.java +++ b/circumflex-maven-plugin/src/main/java/ru/circumflex/maven/AbstractCircumflexMojo.java @@ -75,12 +75,18 @@ protected ClassLoader prepareClassLoader() throws MojoExecutionException { protected Properties collectProps() { Properties result = new Properties(); + copyProps(getDefaultProperties(), result); copyProps(project.getProperties(), result); copyProps(System.getProperties(), result); return result; } - private void copyProps(Properties src, Properties dst) { + protected Properties getDefaultProperties() + { + return new Properties(); + } + + private void copyProps(Properties src, Properties dst) { for (Object key : src.keySet()) { String value = src.get(key).toString().trim(); if (skipUnresolved && value.matches(".*\\$\\{.*\\}.*")) { diff --git a/circumflex-maven-plugin/src/main/java/ru/circumflex/maven/DoccoMojo.java b/circumflex-maven-plugin/src/main/java/ru/circumflex/maven/DoccoMojo.java index a0b7149a..05a11a75 100644 --- a/circumflex-maven-plugin/src/main/java/ru/circumflex/maven/DoccoMojo.java +++ b/circumflex-maven-plugin/src/main/java/ru/circumflex/maven/DoccoMojo.java @@ -4,6 +4,8 @@ import org.apache.maven.plugin.MojoFailureException; import ru.circumflex.docco.DoccoBatch; import ru.circumflex.core.Circumflex; + +import java.io.File; import java.util.Properties; /** @@ -16,9 +18,18 @@ public class DoccoMojo extends AbstractCircumflexMojo { */ protected String[] customResources; + /** + * @parameter expression="${project.build.sourceDirectory} + */ + protected File sourceDirectory; + + /** + * @parameter expression="${project.build.directory} + */ + protected File buildDirectory; + public void execute() throws MojoExecutionException, MojoFailureException { Thread.currentThread().setContextClassLoader(prepareClassLoader()); - if (!project.isExecutionRoot()) return; // Configure Circumflex Properties props = collectProps(); for (Object k : props.keySet()) { @@ -33,4 +44,13 @@ public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Generating docco in " + db.outputPath()); db.generate(); } + + @Override + protected Properties getDefaultProperties() { + Properties props = new Properties(); + props.setProperty("docco.basePath", sourceDirectory.getParentFile().getAbsolutePath()); + props.setProperty("docco.outputPath", new File(buildDirectory, "docco").getAbsolutePath()); + props.setProperty("docco.filenameRegex", ".*\\.(java|scala)$"); + return props; + } } From 335a9297b935ee74eab7944a639174ce0f652e69 Mon Sep 17 00:00:00 2001 From: Don Brown Date: Tue, 14 Feb 2012 00:28:41 +0800 Subject: [PATCH 3/3] Allow customization of index file name --- circumflex-docco/src/main/scala/docco.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/circumflex-docco/src/main/scala/docco.scala b/circumflex-docco/src/main/scala/docco.scala index 334480d5..c2821570 100644 --- a/circumflex-docco/src/main/scala/docco.scala +++ b/circumflex-docco/src/main/scala/docco.scala @@ -179,6 +179,9 @@ class DoccoBatch { .map(_.toString).getOrElse("/docco-batch-page.html.ftl") val indexTemplate: String = cx.get("docco.indexTemplate") .map(_.toString).getOrElse("/docco-index.html.ftl") + val indexFile: String = cx.get("docco.indexFile") + .map(_.toString).getOrElse("index.html") + // Regex to filter sources val filenameRegex = cx.get("docco.filenameRegex").map(_.toString) .getOrElse(".*\\.scala$") @@ -264,7 +267,7 @@ class DoccoBatch { (dirName -> filenames) } val dirs = indexMap.keys.toList.sortBy(_.toString) - val out = new FileWriter(new File(outputPath, "index.html")) + val out = new FileWriter(new File(outputPath, indexFile)) try { var data = Map[String, Any]("dirs" -> dirs, "index" -> indexMap, "title" -> title) ftlConfig.getTemplate(indexTemplate).process(data, out)