in freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/Transform.java [2196:2235]
private void addIndexTerm(Node node) {
Node primary = null;
Node secondary = null;
NodeList children = node.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node child = node.getChildNodes().item(i);
if (child.getNodeType() == Node.ELEMENT_NODE) {
if (child.getNodeName().equals(E_PRIMARY)) {
primary = child;
} else if (child.getNodeName().equals(E_SECONDARY)) {
secondary = child;
}
}
}
String primaryText = primary.getFirstChild().getNodeValue().trim();
if (!primaryIndexTermLookup.containsKey(primaryText)) {
primaryIndexTermLookup.put(primaryText, new ArrayList<>());
}
if (secondary != null) {
if (!secondaryIndexTermLookup.containsKey(primaryText)) {
secondaryIndexTermLookup.put(
primaryText, new TreeMap<>());
}
Map<String, List<NodeModel>> m = secondaryIndexTermLookup.get(
primaryText);
String secondaryText = secondary.getFirstChild().getNodeValue()
.trim();
List<NodeModel> nodes = m.get(secondaryText);
if (nodes == null) {
nodes = new ArrayList<>();
m.put(secondaryText, nodes);
}
nodes.add(NodeModel.wrap(node));
} else {
primaryIndexTermLookup.get(primaryText).add(NodeModel.wrap(node));
}
}