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