Author: sshafroi
Date: 2008-04-07 12:24:50 +0200 (Mon, 07 Apr 2008)
New Revision: 6379
Modified:
branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/Builder.java
branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateDTD.java
branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateRelaxNG.java
branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateXSD.java
Log:
Navigator's can be nested. Implement this for xsd and dtd. The RelaxNG
generator will ignore this and just avoid blowing the stack.
Modified: branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/Builder.java
===================================================================
--- branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/Builder.java
2008-04-07 10:14:14 UTC (rev 6378)
+++ branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/Builder.java
2008-04-07 10:24:50 UTC (rev 6379)
@@ -170,6 +170,9 @@
navigator.attributes.add(new ConfigAttribute("sort", null, false));
navigator.attributes.add(new ConfigAttribute("boundary-match"));
+ // allow recursive nesting of navigator.
+ navigator.addChild(navigator);
+
// only for fast commands
navigators.addChild(navigator);
Modified: branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateDTD.java
===================================================================
--- branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateDTD.java
2008-04-07 10:14:14 UTC (rev 6378)
+++ branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateDTD.java
2008-04-07 10:24:50 UTC (rev 6379)
@@ -65,8 +65,10 @@
}
printlnU(">");
- for (int i = 0; i < element.children.size(); i++) {
- generate(element.children.get(i));
+ for (ConfigElement child : element.children) {
+ if (!written.contains(child.name)) {
+ generate(child);
+ }
}
}
}
Modified:
branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateRelaxNG.java
===================================================================
--- branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateRelaxNG.java
2008-04-07 10:14:14 UTC (rev 6378)
+++ branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateRelaxNG.java
2008-04-07 10:24:50 UTC (rev 6379)
@@ -36,16 +36,25 @@
}
}
+ // prevent blowing the stack. This is because we currently don't
support
+ // recursive elements in this RelaxNG generator.
+ boolean empty = true;
+ for (ConfigElement child : element.children) {
+ if (!element.name.equals(child.name)) {
+ empty = false;
+ }
+ }
+
println("element " + element.name + " {");
indent();
- if (element.attributes.isEmpty() && element.children.isEmpty()) {
+ if (element.attributes.isEmpty() && empty) {
print(" empty ");
} else {
for (final Iterator<ConfigAttribute> iterator =
element.attributes.iterator(); iterator.hasNext();) {
final ConfigAttribute attrib = iterator.next();
generate(attrib);
- if (iterator.hasNext() || !element.children.isEmpty()) {
+ if (iterator.hasNext() || !empty) {
println(",");
} else {
println("");
@@ -53,13 +62,18 @@
}
}
- if (!element.children.isEmpty()) {
+ if (!empty) {
println("(");
- for (int i = 0; i < element.children.size(); i++) {
- if (i > 0) {
- println("|");
+ boolean one = false;
+ for (ConfigElement child : element.children) {
+ if (!element.name.equals(child.name)) {
+ if(one) {
+ println("|");
+ } else {
+ one = true;
+ }
+ generate(child);
}
- generate(element.children.get(i));
}
println(")*");
}
Modified: branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateXSD.java
===================================================================
--- branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateXSD.java
2008-04-07 10:14:14 UTC (rev 6378)
+++ branches/2.17/mojo/src/main/java/no/sesat/mojo/modes/GenerateXSD.java
2008-04-07 10:24:50 UTC (rev 6379)
@@ -72,7 +72,9 @@
}
for (ConfigElement child : element.children) {
- generate(child);
+ if (!written.contains(child.name)) {
+ generate(child);
+ }
}
}
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits