# HG changeset patch # User Dave Smith # Date 1389982589 0 # Node ID e3c55e83c9a4b6fb24227db7f9751dda581764d9 # Parent 9de72de14ab3753c3e7b67b14da9e73ac51429c3 USASR-1307: start custom class/property displays diff -r 9de72de14ab3 -r e3c55e83c9a4 src/main/groovy/org/ssdt_ohio/gradle/doc/tools/UserClassDocProxy.groovy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/groovy/org/ssdt_ohio/gradle/doc/tools/UserClassDocProxy.groovy Fri Jan 17 18:16:29 2014 +0000 @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2013. Ohio Department of Education. - All Rights Reserved. + * Unauthorized copying of this file, in any medium, is strictly prohibited. + * Written by State Software Development Team (http://ssdt.oecn.k12.oh.us/) + */ + +package org.ssdt_ohio.gradle.doc.tools + +import org.codehaus.groovy.groovydoc.GroovyFieldDoc + +class UserClassDocProxy extends groovy.util.Proxy { + + GroovyFieldDoc[] properties() { + println "getting properties for $adaptee" + getAdaptee().properties().findAll { GroovyFieldDoc p -> + !p.isTransient() + } + + } + +} diff -r 9de72de14ab3 -r e3c55e83c9a4 src/main/groovy/org/ssdt_ohio/gradle/plugins/UserDocPlugin.groovy --- a/src/main/groovy/org/ssdt_ohio/gradle/plugins/UserDocPlugin.groovy Tue Dec 10 23:24:56 2013 +0000 +++ b/src/main/groovy/org/ssdt_ohio/gradle/plugins/UserDocPlugin.groovy Fri Jan 17 18:16:29 2014 +0000 @@ -27,8 +27,10 @@ private void configureUserdoc(final Project project) { UserDoc userDoc = project.getTasks().create(USERDOC_TASK_NAME, UserDoc.class); - userDoc.setDescription("Generates UserDoc API documentation for the main source code."); + userDoc.setDescription("Generates UserDoc API documentation"); userDoc.setGroup(JavaBasePlugin.DOCUMENTATION_GROUP); + userDoc.windowTitle = project.name + userDoc.docTitle = project.name JavaPluginConvention convention = project.getConvention().getPlugin(JavaPluginConvention.class); SourceSet sourceSet = convention.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME); diff -r 9de72de14ab3 -r e3c55e83c9a4 src/main/groovy/org/ssdt_ohio/gradle/tasks/UserDoc.groovy --- a/src/main/groovy/org/ssdt_ohio/gradle/tasks/UserDoc.groovy Tue Dec 10 23:24:56 2013 +0000 +++ b/src/main/groovy/org/ssdt_ohio/gradle/tasks/UserDoc.groovy Fri Jan 17 18:16:29 2014 +0000 @@ -3,7 +3,6 @@ import org.codehaus.groovy.tools.groovydoc.ClasspathResourceManager import org.codehaus.groovy.tools.groovydoc.FileOutputTool import org.codehaus.groovy.tools.groovydoc.GroovyDocTool -import org.codehaus.groovy.tools.groovydoc.OutputTool import org.codehaus.groovy.tools.groovydoc.gstringTemplates.GroovyDocTemplateInfo import org.gradle.api.InvalidUserDataException import org.gradle.api.file.FileCollection @@ -30,6 +29,15 @@ classPathRegistry = getServices().get(ClassPathRegistry.class); } + String windowTitle + + String docTitle + + Boolean publicScope = true + Boolean protectedScope = false + Boolean packageScope = false + Boolean privateScope = false + @TaskAction protected void generate() { checkGroovyClasspathNonEmpty(getGroovyClasspath().getFiles()); @@ -48,15 +56,15 @@ args.destdir = destinationDir Properties properties = new Properties(); -// properties.setProperty("windowTitle", windowTitle); -// properties.setProperty("docTitle", docTitle); + properties.setProperty("windowTitle", windowTitle); + properties.setProperty("docTitle", docTitle); // properties.setProperty("footer", footer); // properties.setProperty("header", header); // checkScopeProperties(properties); -// properties.setProperty("publicScope", publicScope.toString()); -// properties.setProperty("protectedScope", protectedScope.toString()); -// properties.setProperty("packageScope", packageScope.toString()); -// properties.setProperty("privateScope", privateScope.toString()); + properties.setProperty("publicScope", publicScope.toString()); + properties.setProperty("protectedScope", protectedScope.toString()); + properties.setProperty("packageScope", packageScope.toString()); + properties.setProperty("privateScope", privateScope.toString()); // properties.setProperty("author", author.toString()); // properties.setProperty("processScripts", processScripts.toString()); // properties.setProperty("includeMainForScripts", includeMainForScripts.toString()); @@ -65,7 +73,7 @@ // properties.setProperty("fileEncoding", fileEncoding != null ? fileEncoding : ""); // - def tool = new GroovyDocTool(new ClasspathResourceManager(), + def tool = new GroovyDocTool(new ClasspathResourceManager(this.getClass().getClassLoader()), [tmpDir.getPath()] as String[], getDocTemplates(), getPackageTemplates(), diff -r 9de72de14ab3 -r e3c55e83c9a4 src/main/resources/org/ssdt_ohio/gradle/userdoc/templates/classDocName.html --- a/src/main/resources/org/ssdt_ohio/gradle/userdoc/templates/classDocName.html Tue Dec 10 23:24:56 2013 +0000 +++ b/src/main/resources/org/ssdt_ohio/gradle/userdoc/templates/classDocName.html Fri Jan 17 18:16:29 2014 +0000 @@ -5,6 +5,10 @@ <% + + + classDoc = new org.ssdt_ohio.gradle.doc.tools.UserClassDocProxy().wrap(classDoc) + def title = classDoc.name() + (props.docTitle ? " (${props.docTitle})" : "") def isVisible = { it.isPublic() || (it.isProtected() && props.protectedScope == 'true') || (!it.isProtected() && !it.isPrivate() && props.packageScope == 'true') || props.privateScope == 'true' } def isVisibleExt = { t -> java.lang.reflect.Modifier.isPublic(t.modifiers) || java.lang.reflect.Modifier.isProtected(t.modifiers) } @@ -22,7 +26,7 @@ def dolink = { t, boolean b -> boolean isArray = false if (!t || t instanceof String) { - return classDoc.getDocUrl(t, b) + return (classDoc.getDocUrl(t, b) -'java.util.' - 'java.lang.') } if (t instanceof org.codehaus.groovy.tools.groovydoc.ArrayClassDocWrapper) { t = t.delegate @@ -30,9 +34,9 @@ } if (t instanceof org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDoc) { if (t.fullPathName == 'def') return classDoc.getDocUrl("java.lang.Object def", b) - return "" + (b ? t.qualifiedTypeName() : t.name()) + "" + (isArray ? "[]" : "") + return "" + ( (b ? t.qualifiedTypeName() : t.name() ) - "java.lang." - "java.util." ) + "" + (isArray ? "[]" : "") } - return classDoc.getDocUrl(t.qualifiedTypeName(), b) + (isArray ? "[]" : "") + return ( classDoc.getDocUrl(t.qualifiedTypeName(), b) - 'java.util.' - 'java.lang.' ) + (isArray ? "[]" : "") } def linkfull = { t -> dolink(t, true) } def linkable = { t -> dolink(t, false) } @@ -52,7 +56,7 @@ } def annotations = { t, sepChar -> t.annotations() ? t.annotations().collect { - // it.isTypeAvailable() ? '@'+linkable(it.type().name())+(it.description()-('@'+it.type().name())): it.description() +// it.isTypeAvailable() ? '@'+linkable(it.type().name())+(it.description()-('@'+it.type().name())): it.description() it.description() }.join(sepChar) + sepChar : '' } @@ -60,7 +64,9 @@ "required":"true", "optional":"false" ] - def isRequired = { f, v -> def req = f.constantValueExpression() == null; req.toString() == v } + def isRequired = { f, v -> + def req = f.constantValueExpression() == null; req.toString() == v + } def upcase = { n -> n[0].toUpperCase() + n[1..-1] } def paramsOf = { n, boolean brief -> n.parameters().collect{ param -> (brief?'':annotations(param, ' ')) + linkable(param.isTypeAvailable()?param.type():param.typeName()) + (param.vararg()?'... ':' ') + param.name() + (param.defaultValue() ? " = " + param.defaultValue():"") }.join(", ") } def nameFromParams = { n -> n.name() + '(' + n.parameters().collect{ param -> param.isTypeAvailable()?param.type().qualifiedTypeName():param.typeName() }.join(', ') + ')' }