本文整理汇总了Java中org.mozilla.javascript.ast.ObjectLiteral.getElements方法的典型用法代码示例。如果您正苦于以下问题:Java ObjectLiteral.getElements方法的具体用法?Java ObjectLiteral.getElements怎么用?Java ObjectLiteral.getElements使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.mozilla.javascript.ast.ObjectLiteral
的用法示例。
在下文中一共展示了ObjectLiteral.getElements方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: decompileObjectLiteral
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
void decompileObjectLiteral(ObjectLiteral node) {
decompiler.addToken(Token.LC);
List<ObjectProperty> props = node.getElements();
int size = props.size();
for (int i = 0; i < size; i++) {
ObjectProperty prop = props.get(i);
boolean destructuringShorthand =
Boolean.TRUE.equals(prop.getProp(Node.DESTRUCTURING_SHORTHAND));
decompile(prop.getLeft());
if (!destructuringShorthand) {
decompiler.addToken(Token.COLON);
decompile(prop.getRight());
}
if (i < size - 1) {
decompiler.addToken(Token.COMMA);
}
}
decompiler.addToken(Token.RC);
}
示例2: getPropertyNames
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
public List<String> getPropertyNames(){
List<String> propNames = new ArrayList<String>();
ObjectLiteral ol = (ObjectLiteral)this.getNode();
for (ObjectProperty op : ol.getElements()){
AstNode left = op.getLeft();
if (left instanceof Name){
propNames.add(((Name)left).getIdentifier());
} else if (left instanceof StringLiteral){
String identifier = ConstraintGenUtil.removeQuotes(((StringLiteral)left).toSource());
propNames.add(identifier);
} else {
System.err.println(left.getClass().getName() + " " + left.toSource());
throw new Error("unsupported case in getPropertyNames()");
}
}
return propNames;
}
示例3: getPropertyNames
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
public static List<String> getPropertyNames(ObjectLiteral ol){
List<String> propNames = new ArrayList<String>();
for (ObjectProperty op : ol.getElements()){
AstNode left = op.getLeft();
if (left instanceof Name){
propNames.add(((Name)left).getIdentifier());
} else if (left instanceof StringLiteral){
String identifier = ConstraintGenUtil.removeQuotes(((StringLiteral)left).toSource());
propNames.add(identifier);
} else {
System.err.println(left.getClass().getName() + " " + left.toSource());
throw new Error("unsupported case in getPropertyNames()");
}
}
return propNames;
}
示例4: processObjectLiteralForObject
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
/**
* Create constraints for an object literal.
*/
private ITypeTerm processObjectLiteralForObject(ObjectLiteral n) {
ITypeTerm expTerm = findOrCreateObjectLiteralTerm(n);
ObjectLiteral o = (ObjectLiteral)n;
for (ObjectProperty prop : o.getElements()){
AstNode left = prop.getLeft();
AstNode right = prop.getRight();
if (left instanceof Name){
String identifier = ((Name)left).getIdentifier();
// for object literal o = { name_1 : exp_1, ..., name_k : exp_k } generate
// a constraint |exp_i| <: prop(|o|, name_i)
ITypeTerm propTerm = findOrCreatePropertyAccessTerm(expTerm, identifier, null);
ITypeTerm valTerm = processExpression(right);
processCopy(right, valTerm, propTerm, n.getLineno(), null);
}
}
return expTerm;
}
示例5: processObjectLiteralForMap
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
/**
* Create constraints for a map literal.
*/
private ITypeTerm processObjectLiteralForMap(ObjectLiteral o) {
ITypeTerm expTerm = findOrCreateMapLiteralTerm(o);
for (ObjectProperty prop : o.getElements()){
AstNode left = prop.getLeft();
AstNode right = prop.getRight();
if (left instanceof StringLiteral){
// for map literal o = { name_1 : exp_1, ..., name_k : exp_k } generate
// a constraint |exp_i| <: MapElem(|o|)
ITypeTerm mapAccessTerm = findOrCreateIndexedTerm(expTerm, o.getLineno());
ITypeTerm valTerm = processExpression(right);
processCopy(right, valTerm, mapAccessTerm,
o.getLineno(), (solution) ->
genericTypeError("map does not have a homogenous value type", locationOf(prop))
.withNote("map value type is " + describeTypeOf(mapAccessTerm, solution))
.withNote("key " + left.toSource() + " has type " + describeTypeOf(valTerm, solution)));
}
}
return expTerm;
}
示例6: visitPrototypeMembers
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
private void visitPrototypeMembers(ObjectLiteral objLiteral,
String clazz) {
List<ObjectProperty> properties = objLiteral.getElements();
for (ObjectProperty property : properties) {
AstNode propertyKey = property.getLeft();
JavaScriptTreeNode tn = createTreeNode(propertyKey);
String memberName = RhinoUtil.getPropertyName(propertyKey);
AstNode propertyValue = property.getRight();
visitPrototypeMember(tn, clazz,
memberName, propertyValue);
}
}
示例7: isObject
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
/**
* Tests if an object literal is an object by checking that all
* properties are unquoted.
*/
static boolean isObject(ObjectLiteral o){
boolean result = (o.getElements().size() > 0);
for (ObjectProperty prop : o.getElements()){
AstNode left = prop.getLeft();
result = result && (left instanceof Name);
}
return result;
}
示例8: isMap
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
/**
* Tests if an object literal is a map by checking that
* all properties are quoted.
* In JavaScript, both double quotes and single quotes are
* supported but for now we assume double quotes are used.
*
* Empty object literals are assumed to be maps.
*/
static boolean isMap(ObjectLiteral o){
boolean result = true;
for (ObjectProperty prop : o.getElements()){
AstNode left = prop.getLeft();
result = result && (left instanceof StringLiteral);
}
return result;
}
示例9: visitMethodOrEnum
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
private void visitMethodOrEnum(final String name, final String jsDoc,
final AstNode astNode) {
if (jsDoc == null) {
//TODO sometimes values are recognized as enums even if they are not.
LOG.error("Comment in node {} for file {} is empty.", name, fileName);
return;
}
final JsElement element = parser.parse(fileName, jsDoc);
if (element == null || element.isPrivate()) {
return; // ignore private stuff...
}
if (element.isEnum()) {
final JsFile jsFile = parseClassOrInterfaceName(name, false, element);
files.put(name, jsFile);
if (astNode instanceof ObjectLiteral) {
final ObjectLiteral ol = (ObjectLiteral) astNode;
for (final ObjectProperty op : ol.getElements()) {
final Name left = (Name) op.getLeft();
jsFile.addEnumValue(left.toSource(), left.getJsDoc());
}
}
} else if (isMethod(name, element)) {
//method assigned as method variable.
final JsMethod method = addMethod(name, element, false);
if (method == null) {
LOG.warn("Should this be abstract: {} in file:{}", name, fileName);
} else {
method.setAbstract(true);
}
} else if (element.isConst() || element.isDefine()){
consts.put(name, element);
} else {
LOG.warn("We missed something: {}: {} in file:{}", name, element,
fileName);
}
}
示例10: print
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
private void print(ObjectLiteral node) throws IOException {
writer.append('{').ws();
if (node.getElements() != null && !node.getElements().isEmpty()) {
print(node.getElements().get(0));
for (int i = 1; i < node.getElements().size(); ++i) {
writer.append(',').ws();
print(node.getElements().get(i));
}
}
writer.ws().append('}');
}
示例11: transformObjectLiteral
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
private Node transformObjectLiteral(ObjectLiteral node) {
if (node.isDestructuring()) {
return node;
}
// createObjectLiteral rewrites its argument as object
// creation plus object property entries, so later compiler
// stages don't need to know about object literals.
decompiler.addToken(Token.LC);
List<ObjectProperty> elems = node.getElements();
Node object = new Node(Token.OBJECTLIT);
Object[] properties;
if (elems.isEmpty()) {
properties = ScriptRuntime.emptyArgs;
} else {
int size = elems.size(), i = 0;
properties = new Object[size];
for (ObjectProperty prop : elems) {
if (prop.isGetterMethod()) {
decompiler.addToken(Token.GET);
} else if (prop.isSetterMethod()) {
decompiler.addToken(Token.SET);
} else if (prop.isNormalMethod()) {
decompiler.addToken(Token.METHOD);
}
properties[i++] = getPropKey(prop.getLeft());
// OBJECTLIT is used as ':' in object literal for
// decompilation to solve spacing ambiguity.
if (!(prop.isMethod())) {
decompiler.addToken(Token.OBJECTLIT);
}
Node right = transform(prop.getRight());
if (prop.isGetterMethod()) {
right = createUnary(Token.GET, right);
} else if (prop.isSetterMethod()) {
right = createUnary(Token.SET, right);
} else if (prop.isNormalMethod()) {
right = createUnary(Token.METHOD, right);
}
object.addChildToBack(right);
if (i < size) {
decompiler.addToken(Token.COMMA);
}
}
}
decompiler.addToken(Token.RC);
object.putProp(Node.OBJECT_IDS_PROP, properties);
return object;
}
示例12: visitPropertyDescriptors
import org.mozilla.javascript.ast.ObjectLiteral; //导入方法依赖的package包/类
/**
* It is assumed that <code>descriptorObjectLit</code> has been
* identified as an object literal containing property descriptors. Any
* property descriptors found as properties of that literal are parsed
* and tree nodes are created for them.
*
* @param descriptorObjLit The object literal containing property
* descriptors (for example, the object parameter to
* <code>Object.create()</code>).
* @param clazz The class that the properties belong to.
*/
private void visitPropertyDescriptors(ObjectLiteral descriptorObjLit,
String clazz) {
List<ObjectProperty> descriptors = descriptorObjLit.getElements();
for (ObjectProperty prop : descriptors) {
AstNode propertyKey = prop.getLeft();
AstNode propertyValue = prop.getRight();
// Should always be true, as this should be a property descriptor
if (propertyValue instanceof ObjectLiteral) {
JavaScriptTreeNode tn = createTreeNode(propertyKey);
String memberName = RhinoUtil.getPropertyName(propertyKey);
visitPropertyDescriptor(tn, clazz,
memberName, (ObjectLiteral)propertyValue);
}
}
}