ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <Jan.Mate...@rzf.fin-nrw.de>
Subject AW: svn commit: r513191 - in /ant/sandbox/antlibs/manual4eclipse: ./ docs/ src/ src/main/ src/main/org/ src/main/org/apache/ src/main/org/apache/ant/ src/main/org/apache/ant/manual4eclipse/
Date Thu, 01 Mar 2007 09:09:29 GMT
What does <whinemode/> mean?

Jan 

>-----Ursprüngliche Nachricht-----
>Von: Peter Reilly [mailto:peter.kitt.reilly@gmail.com] 
>Gesendet: Donnerstag, 1. März 2007 10:02
>An: Ant Developers List
>Betreff: Re: svn commit: r513191 - in 
>/ant/sandbox/antlibs/manual4eclipse: ./ docs/ src/ src/main/ 
>src/main/org/ src/main/org/apache/ src/main/org/apache/ant/ 
>src/main/org/apache/ant/manual4eclipse/
>
><whinemode>
>
>On 3/1/07, jhm@apache.org <jhm@apache.org> wrote:
>> Author: jhm
>> Date: Wed Feb 28 22:44:52 2007
>> New Revision: 513191
>>
>> URL: http://svn.apache.org/viewvc?view=rev&rev=513191
>> Log:
>> Initial commit. (Have to convert into AntLib and try 
>svn:external the common directory...) And docs ;-)
>>
>> Added:
>>     ant/sandbox/antlibs/manual4eclipse/   (with props)
>>     ant/sandbox/antlibs/manual4eclipse/NOTICE   (with props)
>>     ant/sandbox/antlibs/manual4eclipse/build.xml   (with props)
>>     ant/sandbox/antlibs/manual4eclipse/docs/
>>     ant/sandbox/antlibs/manual4eclipse/libraries.properties  
> (with props)
>>     ant/sandbox/antlibs/manual4eclipse/src/
>>     ant/sandbox/antlibs/manual4eclipse/src/main/
>>     ant/sandbox/antlibs/manual4eclipse/src/main/org/
>>     ant/sandbox/antlibs/manual4eclipse/src/main/org/apache/
>>     ant/sandbox/antlibs/manual4eclipse/src/main/org/apache/ant/
>>     
>ant/sandbox/antlibs/manual4eclipse/src/main/org/apache/ant/manu
>al4eclipse/
>>     
>ant/sandbox/antlibs/manual4eclipse/src/main/org/apache/ant/manu
>al4eclipse/Manual4EclipseTask.java   (with props)
>>
>> Propchange: ant/sandbox/antlibs/manual4eclipse/
>> 
>---------------------------------------------------------------
>---------------
>> --- svn:externals (added)
>> +++ svn:externals Wed Feb 28 22:44:52 2007
>> @@ -0,0 +1 @@
>> +common          
>http://svn.apache.org/repos/asf/ant/antlibs/common/trunk
>>
>> Added: ant/sandbox/antlibs/manual4eclipse/NOTICE
>> URL: 
>http://svn.apache.org/viewvc/ant/sandbox/antlibs/manual4eclipse
>/NOTICE?view=auto&rev=513191
>> 
>===============================================================
>===============
>> --- ant/sandbox/antlibs/manual4eclipse/NOTICE (added)
>> +++ ant/sandbox/antlibs/manual4eclipse/NOTICE Wed Feb 28 
>22:44:52 2007
>> @@ -0,0 +1,11 @@
>> +   
>===============================================================
>==========
>> +   ==  NOTICE file corresponding to the section 4 d of      
>              ==
>> +   ==  the Apache License, Version 2.0                      
>              ==
>> +   
>===============================================================
>==========
>> +
>> +   Apache HTTP Ant Library
>> +   Copyright 2001-2006 The Apache Software Foundation
>> +
>> +   This product includes software developed by
>> +   The Apache Software Foundation (http://www.apache.org/).
>> +
>>
>> Propchange: ant/sandbox/antlibs/manual4eclipse/NOTICE
>> 
>---------------------------------------------------------------
>---------------
>>     svn:eol-style = native
>>
>> Added: ant/sandbox/antlibs/manual4eclipse/build.xml
>> URL: 
>http://svn.apache.org/viewvc/ant/sandbox/antlibs/manual4eclipse
>/build.xml?view=auto&rev=513191
>> 
>===============================================================
>===============
>> --- ant/sandbox/antlibs/manual4eclipse/build.xml (added)
>> +++ ant/sandbox/antlibs/manual4eclipse/build.xml Wed Feb 28 
>22:44:52 2007
>> @@ -0,0 +1,22 @@
>> +<?xml version="1.0"?>
>> +<!--
>> +Licensed to the Apache Software Foundation (ASF) under one
>> +or more contributor license agreements.  See the NOTICE file
>> +distributed with this work for additional information
>> +regarding copyright ownership.  The ASF licenses this file
>> +to you under the Apache License, Version 2.0 (the
>> +"License"); you may not use this file except in compliance
>> +with the License.  You may obtain a copy of the License at
>> +
>> +http://www.apache.org/licenses/LICENSE-2.0
>> +
>> +Unless required by applicable law or agreed to in writing,
>> +software distributed under the License is distributed on an
>> +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> +KIND, either express or implied.  See the License for the
>> +specific language governing permissions and limitations
>> +under the License.
>> +-->
>> +<project default="dist" name="http">
>> +  <import file="common/build.xml"/>
>> +</project>
>> \ No newline at end of file
>>
>> Propchange: ant/sandbox/antlibs/manual4eclipse/build.xml
>> 
>---------------------------------------------------------------
>---------------
>>     svn:eol-style = native
>>
>> Added: ant/sandbox/antlibs/manual4eclipse/libraries.properties
>> URL: 
>http://svn.apache.org/viewvc/ant/sandbox/antlibs/manual4eclipse
>/libraries.properties?view=auto&rev=513191
>> 
>===============================================================
>===============
>> --- ant/sandbox/antlibs/manual4eclipse/libraries.properties (added)
>> +++ ant/sandbox/antlibs/manual4eclipse/libraries.properties 
>Wed Feb 28 22:44:52 2007
>> @@ -0,0 +1 @@
>> +artifact.version=1.0-alpha-SNAPSHOT
>> \ No newline at end of file
>>
>> Propchange: ant/sandbox/antlibs/manual4eclipse/libraries.properties
>> 
>---------------------------------------------------------------
>---------------
>>     svn:eol-style = native
>>
>> Added: 
>ant/sandbox/antlibs/manual4eclipse/src/main/org/apache/ant/manu
>al4eclipse/Manual4EclipseTask.java
>> URL: 
>http://svn.apache.org/viewvc/ant/sandbox/antlibs/manual4eclipse
>/src/main/org/apache/ant/manual4eclipse/Manual4EclipseTask.java
>?view=auto&rev=513191
>> 
>===============================================================
>===============
>> --- 
>ant/sandbox/antlibs/manual4eclipse/src/main/org/apache/ant/manu
>al4eclipse/Manual4EclipseTask.java (added)
>> +++ 
>ant/sandbox/antlibs/manual4eclipse/src/main/org/apache/ant/manu
>al4eclipse/Manual4EclipseTask.java Wed Feb 28 22:44:52 2007
>> @@ -0,0 +1,306 @@
>> +package org.apache.ant.manual4eclipse;
>> +
>> +/*
>> + *  Licensed to the Apache Software Foundation (ASF) under 
>one or more
>> + *  contributor license agreements.  See the NOTICE file 
>distributed with
>> + *  this work for additional information regarding 
>copyright ownership.
>> + *  The ASF licenses this file to You under the Apache 
>License, Version 2.0
>> + *  (the "License"); you may not use this file except in 
>compliance with
>> + *  the License.  You may obtain a copy of the License at
>> + *
>> + *      http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + *  Unless required by applicable law or agreed to in 
>writing, software
>> + *  distributed under the License is distributed on an "AS 
>IS" BASIS,
>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
>express or implied.
>> + *  See the License for the specific language governing 
>permissions and
>> + *  limitations under the License.
>> + *
>> + */
>> +
>> +import java.io.File;
>> +import java.io.FileWriter;
>> +import java.io.IOException;
>> +import java.util.ArrayList;
>> +import java.util.List;
>> +
>> +import org.apache.tools.ant.BuildException;
>> +import org.apache.tools.ant.Project;
>> +import org.apache.tools.ant.Task;
>> +import org.apache.tools.ant.util.JAXPUtils;
>> +import org.w3c.dom.Document;
>> +import org.w3c.dom.Element;
>> +import org.w3c.dom.Node;
>> +import org.w3c.dom.NodeList;
>> +import org.xml.sax.SAXException;
>> +
>> +
>> +/**
>> + * This task creates the files needed for generating an 
>Eclipse Help PlugIn
>> + * from Ant's manual. Mainly the toc.xml and the plugin.xml.
>> + */
>> +public class Manual4EclipseTask extends Task {
>> +
>> +
>> +       /** Line Separator. */
>> +       String BR = System.getProperty("line.separator");
>Should be private static final
>
>> +
>> +       /** Ant Property: The output directory for generated 
>files. */
>> +       private File dir;
>> +
>> +       /** Ant Property: The directory where the Ant manual 
>(sources) is. */
>> +       private File manualDir;
>> +
>> +
>All the following fields should be private:
>> +       /** List of files which are already processed. */
>> +       List<File> processedFiles = new ArrayList<File>();
>> +
>> +       /** List of Link references <tt><a href="LINK"></tt> 
>to ignore. */
>> +       List<String> ignoreLinks = new ArrayList<String>();
>> +
>> +       /** List of Link references <tt><a href="LINK"></tt> 
>to ignore. */
>> +       List<String> ignoreTargets = new ArrayList<String>();
>> +
>> +       /** List of Link references <tt><a href="LINK"></tt> 
>to ignore. */
>> +       List<String> ignoreText = new ArrayList<String>();
>> +
>> +
>Javadoc!
>> +       public Manual4EclipseTask() {
>> +               ignoreLinks.add("api/index.html");
>> +               ignoreTargets.add("_main");
>> +               ignoreText.add("Ant API");
>> +               ignoreText.add("Table of Contents");
>> +       }
>> +
>> +
>> +       @Override
>> +       public void execute() throws BuildException {
>> +               log("Generate Eclipse plugin files");
>> +               try {
>> +                       createToc(new File(manualDir, "toc.html"));
>> +                       createPluginXml();
>> +               } catch (Exception e) {
>> +                       throw new BuildException(e, getLocation());
>> +               }
>> +       }
>> +
>> +
>> +       private void createPluginXml() throws IOException {
>> +               log("generating plugin.xml", Project.MSG_INFO);
>> +               StringBuffer sb = new StringBuffer();
>> +               sb.append("<?xml version=\"1.0\" 
>encoding=\"ISO-8859-1\"?>").append(BR);
>> +               sb.append("<?eclipse version=\"3.2\"?>").append(BR);
>> +               sb.append("<plugin>").append(BR);
>> +               sb.append("    <extension 
>point=\"org.eclipse.help.toc\">").append(BR);
>> +               sb.append("        <toc file=\"toc.xml\" 
>primary=\"true\" />").append(BR);
>> +               sb.append("        <index 
>path=\"index\"/>").append(BR);
>> +               sb.append("    </extension>").append(BR);
>> +               sb.append("    <extension 
>point=\"org.eclipse.help.base.luceneSearchParticipants\">").append(BR);
>> +               sb.append("        <binding 
>participantId=\"org.eclipse.help.base.xhtml\"/>").append(BR);
>> +               sb.append("    </extension>").append(BR);
>> +               sb.append("</plugin>").append(BR);
>> +               write(sb, new File(dir, "plugin.xml"));
>> +       }
>> +
>> +
>> +
>> +       private void createToc(File listHtml) throws 
>IOException, SAXException {
>> +               log("generating toc.xml", Project.MSG_INFO);
>> +               StringBuffer toc = new StringBuffer();
>> +               toc.append("<?xml version=\"1.0\" 
>encoding=\"ISO-8859-1\"?>").append(BR);
>> +               toc.append("<?NLS 
>TYPE=\"org.eclipse.help.toc\"?>").append(BR);
>> +               toc.append("<toc label=\"Ant Manual\" 
>topic=\"cover.html\">").append(BR);
>> +               createTopic(toc, listHtml);
>> +               toc.append("</toc>").append(BR);
>> +               write(toc, new File(dir, "toc.xml"));
>> +       }
>> +
>> +
>> +
>> +       private void createTopic(StringBuffer toc, File listHtml)
>> +                       throws SAXException, IOException {
>> +               if (processedFiles.contains(listHtml)) {
>> +                       return;
>> +               }
>> +               log("Processing " + listHtml, Project.MSG_VERBOSE);
>> +               processedFiles.add(listHtml);
>> +               Document document = 
>JAXPUtils.getDocumentBuilder().parse(listHtml);
>> +               NodeList tagsA = document.getElementsByTagName("a");
>> +               for (int i = 0; i < tagsA.getLength(); i++) {
>> +                       Topic topic = new Topic(tagsA.item(i));
>> +                       if (topic.isIgnorable()) continue;
>> +
>> +                       if (topic.hasNestedTopics()) {
>> +                               // start recursion
>> +                               
>toc.append("<").append(topic).append(">").append(BR);
>> +                               if 
>("anttaskslist.html".equals(topic.href)) {
>> +                                       
>createTopic4TaskOverview(toc);
>> +                               } else {
>> +                                       createTopic(toc, new 
>File(manualDir, topic.href));
>> +                               }
>> +                               toc.append("</topic>").append(BR);
>> +                       } else {
>> +                               
>toc.append("<").append(topic).append("/>").append(BR);
>> +                       }
>> +               }
>> +       }
>> +
>> +
>> +
>> +       /**
>> +        * Generate topics for the core and optional tasks.
>> +        * Because the task lists (overview, core, optional) 
>have a TOC-header,
>> +        * the generic recursion-algorithm does not work. So 
>we have to deal
>> +        * with that.
>> +        * @param toc    StringBuffer with the toc.xml in progress
>> +        * @param label  Label for the root node
>> +        * @throws IOException
>> +        * @throws SAXException
>> +        * @throws BuildException
>> +        */
>> +       private void createTopic4TaskOverview(StringBuffer 
>toc) throws BuildException, SAXException, IOException {
>> +               File taskListFile = new File(manualDir, 
>"anttaskslist.html");
>> +               File coreTaskFile = new File(manualDir, 
>"coretasklist.html");
>> +               File optionalTask = new File(manualDir, 
>"optionaltasklist.html");
>> +               processedFiles.add(taskListFile);
>> +               processedFiles.add(coreTaskFile);
>> +               processedFiles.add(optionalTask);
>> +
>> +               log("Using hard coded TOC-structure instead 
>of " + taskListFile, Project.MSG_VERBOSE);
>> +
>> +               toc.append("<topic label=\"Overview of Ant 
>Tasks\" href=\"tasksoverview.html\"/>").append(BR);
>> +               toc.append("<topic label=\"Core 
>Tasks\">").append(BR);
>> +               // Core Tasks
>> +               createTopics4TaskList(toc, coreTaskFile);
>> +               toc.append("</topic>").append(BR);
>> +               toc.append("<topic label=\"Optional 
>Tasks\">").append(BR);
>> +               // Optional Tasks
>> +               toc.append("<topic label=\"Library 
>Dependencies\" 
>href=\"install.html#librarydependencies\"/>").append(BR);
>> +               createTopics4TaskList(toc, optionalTask);
>> +               toc.append("</topic>").append(BR);
>> +       }
>> +
>> +
>> +
>> +       /**
>> +        * Creates a <topic> element (with nested) for Task list.
>> +        * The task lists are placed after a &lt;h3> header 
>and there are
>> +        * &lt;a> tags before that. So we have to do more 
>work and search
>> +        * for the right are.
>> +        * @param toc    StringBuffer with the toc.xml in progress
>> +        * @param file   The file with the task list
>> +        * @throws BuildException
>> +        * @throws SAXException
>> +        * @throws IOException
>> +        */
>> +       private void createTopics4TaskList(StringBuffer toc, 
>File file) throws BuildException, SAXException, IOException {
>> +               log("Processing " + file, Project.MSG_VERBOSE);
>> +               Document doc = 
>JAXPUtils.getDocumentBuilder().parse(file);
>> +               // Access to the HTML root element
>> +               Element html = doc.getDocumentElement();
>> +               // search for the <body> element
>> +               Element body = null;
>> +               NodeList childNodes = html.getChildNodes();
>> +               for (int i=0; i<childNodes.getLength(); i++) {
>> +                       Node n = childNodes.item(i);
>> +                       if 
>(n.getNodeName().equalsIgnoreCase("body")) {
>> +                               body = (Element)n;
>> +                       }
>> +               }
>> +               // search in the body for the task listing
>> +               childNodes = body.getChildNodes();
>> +               boolean needSection = false;
>> +               for (int i=0; i<childNodes.getLength(); i++) {
>> +                       Node n = childNodes.item(i);
>> +                       // After the H3-section we'll get 
>the task listing
>> +                       if (needSection) {
>> +                               if 
>(n.getNodeName().equalsIgnoreCase("a")) {
>> +                                       Topic t = new Topic(n);
>> +                                       
>toc.append("<").append(t.toString()).append("/>").append(BR);
>> +                               }
>> +                       }
>> +                       if (n.getNodeName().equalsIgnoreCase("h3")) {
>> +                               needSection = true;
>> +                       }
>> +               }
>> +       }
>> +
>> +
>> +
>> +
>> +       /**
>> +        * Writes a StringBuffer to file.
>> +        * @param sb   The StringBuffer to write
>> +        * @param file The file to write into
>> +        * @throws IOException if writing throws an IOException
>> +        */
>> +       private void write(StringBuffer sb, File file) 
>throws IOException {
>> +               FileWriter out = new FileWriter(file);
>> +               out.write(sb.toString());
>> +               out.close();
>> +       }
>> +
>> +
>> +
>Javadoc:
>> +       public void setDir(File dir) {
>> +               this.dir = dir;
>> +       }
>> +
>Javadoc:
>> +       public void setManualDir(File manualDir) {
>> +               this.manualDir = manualDir;
>> +       }
>> +
>> +
>> +
>> +
>> +       /**
>> +        * This class encapsulates the information of a 
><tt><a></tt> tag from a
>> +        * toc-listing from the Ant manual.
>> +        */
>> +       public class Topic {
>> +               /** <topic>s label attribute gets the value 
>from &lt;a>s text content. */
>> +               String label;
>> +               /** Internal value coming from &lt;a>s 
>target attribute. */
>> +               String target;
>> +               /** <topic>s href attribute gets the value 
>from &lt;a>s href attribute. */
>> +               String href;
>> +
>> +               /**
>> +                * Constructor analyzes a DOMNode and 
>creates a Topic object.
>> +                * @param n the DOMNode
>> +                */
>> +               public Topic(Node n) {
>> +                       Node item = 
>n.getAttributes().getNamedItem("href");
>> +                       href   = (item!=null) ? 
>item.getTextContent() : "";
>> +                       item = 
>n.getAttributes().getNamedItem("target");
>> +                       target = (item!=null) ? 
>item.getTextContent() : "";
>> +                       label  = n.getTextContent().trim();
>> +               }
>> +               /**
>> +                * Checks the data against the three ignore-lists.
>> +                * @return <i>true</i> if one (or more) of 
>the lists matches
>> +                */
>> +               public boolean isIgnorable() {
>> +                       return ignoreLinks.contains(href)
>> +                           || ignoreTargets.contains(target)
>> +                           || ignoreText.contains(label);
>> +               }
>> +               /**
>> +                * You have to create nested <topic> 
>elements if the link-target
>> +                * would open the linked page in the 
>navigation frame. This method
>> +                * does the check.
>> +                * @return <i>true</i> if nestd <topic> 
>elements could come.
>> +                */
>> +               public boolean hasNestedTopics() {
>> +                       return "navFrame".equals(target);
>> +               }
>> +               @Override
>> +               public String toString() {
>> +                       StringBuffer rv = new StringBuffer("topic");
>> +                       if (label.length()>0) rv.append(" 
>label=\"").append(label).append("\"");
>> +                       if (href.length()>0 && 
>!hasNestedTopics())  rv.append(" href=\"").append(href).append("\"");
>> +                       return rv.toString().replaceAll("&", 
>"&amp;");
>> +               }
>> +       }
>> +
>> +}
>>
>> Propchange: 
>ant/sandbox/antlibs/manual4eclipse/src/main/org/apache/ant/manu
>al4eclipse/Manual4EclipseTask.java
>> 
>---------------------------------------------------------------
>---------------
>>     svn:eol-style = native
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
>> For additional commands, e-mail: dev-help@ant.apache.org
>>
>>
>
></whinemode>
>
>Cheers,
>Peter
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
>For additional commands, e-mail: dev-help@ant.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message