protected Map<String, String> findLiteralStringValues(Node objLiteral) { Map<String, String> literalValues = new HashMap<String, String>(); // Find object literal keys from property list. Object[] propertyList = (Object[]) objLiteral.getProp(Token.EQ); // Iterate through each literal key, extracting associated value. Ignore // any non-string values, we aren't attempting inner-resolution of references. if (propertyList != null) { int numArgs = 0; // Child nodes are linked list of object values Node propertyValue = objLiteral.getFirstChild(); while (numArgs < propertyList.length) { // Convert key/value pairs into a handy format if (propertyValue.getType() == Token.STRING) { literalValues.put((String) propertyList[numArgs], propertyValue.getString()); } propertyValue = propertyValue.getNext(); numArgs++; } } return literalValues; }
// Find an object literal's value for a given key. If not found, // return null. protected Node findLiteralValue(Node objLiteral, String key) { Node literalValueNode = null; // Get list of all properties Object[] propertyList = (Object[]) objLiteral.getProp(Token.EQ); // Iterate through key/values looking for a match if (propertyList != null) { Node propertyValue = objLiteral.getFirstChild(); for (int index = 0; index < propertyList.length; index++) { if (key.equals(propertyList[index])) { literalValueNode = propertyValue; break; } propertyValue = propertyValue.getNext(); } } return literalValueNode; }