Author: ltheussl
Date: Tue May 12 13:46:00 2009
New Revision: 773896
URL: http://svn.apache.org/viewvc?rev=773896&view=rev
Log:
[DOXIA-319] Improve toc macro for CSS
Modified:
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
Modified:
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java?rev=773896&r1=773895&r2=773896&view=diff
==============================================================================
---
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
(original)
+++
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
Tue May 12 13:46:00 2009
@@ -19,8 +19,14 @@
* under the License.
*/
+import java.util.Iterator;
+import java.util.Map;
+
import org.apache.maven.doxia.logging.Log;
import org.apache.maven.doxia.logging.SystemStreamLog;
+import org.apache.maven.doxia.sink.SinkEventAttributeSet;
+import org.apache.maven.doxia.sink.SinkEventAttributes;
+
import org.codehaus.plexus.util.StringUtils;
/**
@@ -74,4 +80,39 @@
throw new IllegalArgumentException( paramName + " is a required
parameter!" );
}
}
+
+ /**
+ * Convert the Map of macro parameters to an AttributeSet.
+ * No check of validity is done, all parameters are added.
+ *
+ * @param parameters the macro parameters.
+ * @return a SinkEventAttributeSet containing the same parameters,
+ * or null if parameters is null.
+ *
+ * @since 1.1.1.
+ */
+ protected static SinkEventAttributes getAttributesFromMap( Map parameters )
+ {
+ if ( parameters == null )
+ {
+ return null;
+ }
+
+ final int count = parameters.size();
+
+ if ( count <= 0 )
+ {
+ return null;
+ }
+
+ final SinkEventAttributeSet atts = new SinkEventAttributeSet( count );
+
+ for ( Iterator it = parameters.keySet().iterator(); it.hasNext(); )
+ {
+ final Object key = it.next();
+ atts.addAttribute( key, parameters.get( key ) );
+ }
+
+ return atts;
+ }
}
Modified:
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java?rev=773896&r1=773895&r2=773896&view=diff
==============================================================================
---
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
(original)
+++
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
Tue May 12 13:46:00 2009
@@ -127,29 +127,26 @@
throw new MacroExecutionException( "ParseException: " +
e.getMessage(), e );
}
- if ( index.getChildEntries().size() > 0 )
+ if ( index.getChildEntries().size() > 0
+ && ( ( fromDepth <= toDepth ) || ( section == 0 ) ) )
{
- if ( ( fromDepth <= toDepth ) || ( section == 0 ) )
- {
- sink.list();
- }
+ sink.list( getAttributesFromMap( request.getParameters() ) );
int i = 1;
for ( Iterator it = index.getChildEntries().iterator();
it.hasNext(); )
{
IndexEntry sectionIndex = (IndexEntry) it.next();
+
if ( ( i == section ) || ( section == 0 ) )
{
writeSubSectionN( sink, sectionIndex, 1 );
}
+
i++;
}
- if ( ( fromDepth <= toDepth ) || ( section == 0 ) )
- {
- sink.list_();
- }
+ sink.list_();
}
}
Modified:
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java?rev=773896&r1=773895&r2=773896&view=diff
==============================================================================
---
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
(original)
+++
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
Tue May 12 13:46:00 2009
@@ -30,6 +30,7 @@
import org.apache.maven.doxia.macro.MacroExecutionException;
import org.apache.maven.doxia.macro.MacroRequest;
import org.apache.maven.doxia.parser.XhtmlBaseParser;
+import org.apache.maven.doxia.sink.SinkEventAttributeSet;
import org.apache.maven.doxia.sink.SinkEventElement;
import org.apache.maven.doxia.sink.SinkEventTestingSink;
@@ -109,16 +110,22 @@
macroParameters.put( "section", "2" );
macroParameters.put( "fromDepth", "1" );
macroParameters.put( "toDepth", "2" );
+ macroParameters.put( "class", "myClass" );
+ macroParameters.put( "id", "myId" );
sink.reset();
request = new MacroRequest( macroParameters, basedir );
macro.execute( sink, request );
it = sink.getEventList().iterator();
- assertEquals( "list", ( (SinkEventElement) it.next() ).getName() );
+ SinkEventElement event = (SinkEventElement) it.next();
+ assertEquals( "list", event.getName() );
+ SinkEventAttributeSet atts = (SinkEventAttributeSet)
event.getArgs()[0];
+ assertEquals( "myId", atts.getAttribute( "id" ) );
+ assertEquals( "myClass", atts.getAttribute( "class" ) );
assertEquals( "listItem", ( (SinkEventElement) it.next() ).getName() );
assertEquals( "link", ( (SinkEventElement) it.next() ).getName() );
- SinkEventElement event = (SinkEventElement) it.next();
+ event = (SinkEventElement) it.next();
assertEquals( "text", event.getName() );
assertEquals( "h22", (String) event.getArgs()[0] );
assertEquals( "link_", ( (SinkEventElement) it.next() ).getName() );