* @return The definition that can be rendered.
* @since 2.1.0
*/
protected Definition replaceDefinition(Definition d, String name,
Map<Integer, String> vars) {
Definition nudef = new Definition();
nudef.setExtends(replace(d.getExtends(), vars));
nudef.setName(name);
nudef.setPreparer(replace(d.getPreparer(), vars));
nudef.setRole(replace(d.getRole(), vars));
nudef.setTemplate(replace(d.getTemplate(), vars));
for (String attributeName : d.getLocalAttributeNames()) {
Attribute attr = d.getLocalAttribute(attributeName);
Attribute nuattr = new Attribute();
nuattr.setRole(replace(attr.getRole(), vars));
nuattr.setRenderer(attr.getRenderer());
Object value = attr.getValue();
if (value instanceof String) {
value = replace((String) value, vars);
}
nuattr.setValue(value);
nudef.putAttribute(replace(attributeName, vars), nuattr);
}
return nudef;
}