Update of 
/var/cvs/speeltuin/ernst/tagfileparser/src/nl/vpro/tagfileparser/parser/file
In directory 
james.mmbase.org:/tmp/cvs-serv1313/src/nl/vpro/tagfileparser/parser/file

Modified Files:
        BasicTagParser.java AbstractTagParser.java TagParser.java 
Log Message:
work in progress


See also: 
http://cvs.mmbase.org/viewcvs/speeltuin/ernst/tagfileparser/src/nl/vpro/tagfileparser/parser/file


Index: BasicTagParser.java
===================================================================
RCS file: 
/var/cvs/speeltuin/ernst/tagfileparser/src/nl/vpro/tagfileparser/parser/file/BasicTagParser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- BasicTagParser.java 9 Jul 2008 10:07:45 -0000       1.1
+++ BasicTagParser.java 15 Jul 2008 06:54:23 -0000      1.2
@@ -24,6 +24,7 @@
 
                public BasicTagParser(){
                        setIncludeExtension("tagf");
+                       setTagExtension("tag");
                        addElementParser(new TagDirectiveParser());
                        addElementParser(new VariableDirectiveParser());
                        addElementParser(new AttributeDirectiveParser());


Index: AbstractTagParser.java
===================================================================
RCS file: 
/var/cvs/speeltuin/ernst/tagfileparser/src/nl/vpro/tagfileparser/parser/file/AbstractTagParser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- AbstractTagParser.java      9 Jul 2008 10:07:45 -0000       1.1
+++ AbstractTagParser.java      15 Jul 2008 06:54:23 -0000      1.2
@@ -7,8 +7,11 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import org.apache.commons.logging.*;
+import org.apache.log4j.spi.LoggerFactory;
 
 import nl.vpro.tagfileparser.model.TagInfo;
 import nl.vpro.tagfileparser.parser.BasicTagParserException;
@@ -18,7 +21,8 @@
  * This abstract Tag parser will has all the plumbing for parsing tag files.
  * Concrete implementations should do the following:
  * <ul>
- * <li>Set a tag file extension type. Tag files are checked for this extension 
before they are parsed.
+ * <li>Set a tag file extension type. Tag files are checked for this extension
+ * before they are parsed.
  * <li>Set an include file extension type. includes like
  * <code><[EMAIL PROTECTED] file="somefile.[includeExtension]" %><code> will 
be resolved and included. If no include extension is set, no includes will be 
resolved
  * <li>Register any number of instances of the [EMAIL PROTECTED] 
ElementParser} type. they are used to parse the different elements of the tag 
file.
@@ -27,6 +31,7 @@
  *
  */
 public class AbstractTagParser implements TagParser {
+       private static final Log log = 
LogFactory.getLog(AbstractTagParser.class);
 
        private List<ElementParser> elementParsers = new 
ArrayList<ElementParser>();
        private String includeExtension = null;
@@ -36,6 +41,7 @@
        private Matcher matcher, fileNameMatcher;
 
        protected final void addElementParser(ElementParser elementParser) {
+               log.debug("adding element parser: " + elementParser);
                elementParsers.add(elementParser);
        }
 
@@ -54,6 +60,7 @@
                includePattern = Pattern.compile("<[EMAIL 
PROTECTED]"[\\w\\.-]+\\." + includeExtension
                                + "\"\\s*%>");
                includeNamePattern = 
Pattern.compile("file\\s*=\\s*\"([\\w\\.-]+)\"");
+               log.debug(String.format("setting include pattern: '%s'", 
includePattern.pattern()));
        }
 
        protected final void setTagExtension(String tagExtension) {
@@ -63,17 +70,21 @@
        /**
         * @see 
nl.vpro.tagfileparser.parser.file.TagParser#parseTag(java.io.File)
         * @throws BasicTagParserException
-        *             when something goes wrong reading the tag file, or a 
tagfile with the wrong extension is fed into it.
+        *             when something goes wrong reading the tag file, or a 
tagfile
+        *             with the wrong extension is fed into it.
         */
        public final TagInfo parseTag(File tagFile) {
                TagInfo tagInfo;
 
                if (tagExtension != null && 
tagFile.getName().endsWith(tagExtension)) {
+                       log.info(String.format("Parsing tagfile '%s'", 
tagFile.getName()));
                        tagInfo = new TagInfo(resolveTagName(tagFile));
                        // first: create the file reader.
                        List<String> tagFileLines = createTagFileLines(tagFile);
+                       log.debug(String.format("%s lines in tag file %s", 
tagFileLines.size(), tagFile.getName()));
                        // let all the element parsers parse the tag file
                        for (ElementParser elementParser : elementParsers) {
+                               log.debug(String.format("applying element 
parser '%s'", elementParser.toString()));
                                elementParser.parse(tagFileLines.iterator(), 
tagInfo);
                        }
                } else {
@@ -97,10 +108,10 @@
        private final List<String> createTagFileLines(File tagFile) {
                try {
 
-                       BufferedReader br = new BufferedReader(new 
FileReader(tagFile));
+                       BufferedReader tagFileReader = new BufferedReader(new 
FileReader(tagFile));
                        List<String> lines = new ArrayList<String>();
 
-                       String line = br.readLine();
+                       String line = tagFileReader.readLine();
                        while (line != null) {
                                if (includeExtension != null) {
                                        matcher = includePattern.matcher(line);
@@ -108,6 +119,7 @@
                                                fileNameMatcher = 
includeNamePattern.matcher(line);
                                                fileNameMatcher.find();
                                                String includeName = 
fileNameMatcher.group(1);
+                                               log.debug(String.format("** 
include found: '%S'", includeName));
                                                File include = 
resolveInclude(tagFile, includeName);
                                                if (include.isFile() && 
include.canRead()) {
                                                        
lines.addAll(createTagFileLines(include));
@@ -115,11 +127,15 @@
                                                        throw new 
BasicTagParserException("include  " + includeName
                                                                        + ", 
could not be resolved fron tag " + tagFile.getAbsoluteFile());
                                                }
+                                       } else {
+                                               lines.add(line);
                                        }
                                } else {
                                        lines.add(line);
                                }
+                               line = tagFileReader.readLine();
                        }
+//                     log.debug(String.format("%s lines found", 
lines.size()));
                        return lines;
                } catch (FileNotFoundException e) {
                        throw new BasicTagParserException("something went wrong 
trying to find file: " + tagFile, e);


Index: TagParser.java
===================================================================
RCS file: 
/var/cvs/speeltuin/ernst/tagfileparser/src/nl/vpro/tagfileparser/parser/file/TagParser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- TagParser.java      9 Jul 2008 10:07:45 -0000       1.1
+++ TagParser.java      15 Jul 2008 06:54:23 -0000      1.2
@@ -7,7 +7,7 @@
 /**
  * This interface represents a tagfile parser of some kind. different 
implementations
  * are necessary for different kind of tag files (.tag, .tagx). They will be 
mapped
- * to a file extension.
+ * to a file extension. To create a new type, extend [EMAIL PROTECTED] 
AbstractTagParser}.
  * @author Ernst Bunders
  *
  */
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to