mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-04-02 13:37:45 -05:00
Fix name comparision in GroovyXmlUtil (#373)
Nodes can also have groovy.xml.QNames, which need to be compared using their matches(Object) method.
This commit is contained in:
committed by
modmuss50
parent
8e424f3f50
commit
8a5467cdca
@@ -29,13 +29,14 @@ import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import groovy.util.Node;
|
||||
import groovy.xml.QName;
|
||||
|
||||
public final class GroovyXmlUtil {
|
||||
private GroovyXmlUtil() { }
|
||||
|
||||
public static Node getOrCreateNode(Node parent, String name) {
|
||||
for (Object object : parent.children()) {
|
||||
if (object instanceof Node && name.equals(((Node) object).name())) {
|
||||
if (object instanceof Node && isSameName(((Node) object).name(), name)) {
|
||||
return (Node) object;
|
||||
}
|
||||
}
|
||||
@@ -45,7 +46,7 @@ public final class GroovyXmlUtil {
|
||||
|
||||
public static Optional<Node> getNode(Node parent, String name) {
|
||||
for (Object object : parent.children()) {
|
||||
if (object instanceof Node && name.equals(((Node) object).name())) {
|
||||
if (object instanceof Node && isSameName(((Node) object).name(), name)) {
|
||||
return Optional.of((Node) object);
|
||||
}
|
||||
}
|
||||
@@ -53,6 +54,18 @@ public final class GroovyXmlUtil {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
private static boolean isSameName(Object nodeName, String givenName) {
|
||||
if (nodeName instanceof String) {
|
||||
return nodeName.equals(givenName);
|
||||
}
|
||||
|
||||
if (nodeName instanceof QName) {
|
||||
return ((QName) nodeName).matches(givenName);
|
||||
}
|
||||
|
||||
throw new UnsupportedOperationException("Cannot determine if " + nodeName.getClass() + " is the same as a String");
|
||||
}
|
||||
|
||||
public static Stream<Node> childrenNodesStream(Node node) {
|
||||
//noinspection unchecked
|
||||
return (Stream<Node>) (Stream) (((List<Object>) node.children()).stream().filter((i) -> i instanceof Node));
|
||||
|
||||
Reference in New Issue
Block a user