当前位置: 首页>>代码示例>>Java>>正文


Java ObjectLiteral.getElements方法代码示例

本文整理汇总了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);
}
 
开发者ID:MikaGuraN,项目名称:HL4A,代码行数:20,代码来源:IRFactory.java

示例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;
}
 
开发者ID:Samsung,项目名称:SJS,代码行数:18,代码来源:MapLiteralTerm.java

示例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;
}
 
开发者ID:Samsung,项目名称:SJS,代码行数:17,代码来源:ConstraintGenUtil.java

示例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;
}
 
开发者ID:Samsung,项目名称:SJS,代码行数:23,代码来源:ConstraintVisitor.java

示例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;
}
 
开发者ID:Samsung,项目名称:SJS,代码行数:25,代码来源:ConstraintVisitor.java

示例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);

	}

}
 
开发者ID:bobbylight,项目名称:RSTALanguageSupport,代码行数:18,代码来源:JavaScriptOutlineTreeGenerator.java

示例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;
}
 
开发者ID:Samsung,项目名称:SJS,代码行数:13,代码来源:ConstraintGenUtil.java

示例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;
}
 
开发者ID:Samsung,项目名称:SJS,代码行数:17,代码来源:ConstraintGenUtil.java

示例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);
  }
}
 
开发者ID:gruifo,项目名称:gruifo,代码行数:38,代码来源:JavaScriptFileParser.java

示例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('}');
}
 
开发者ID:konsoletyper,项目名称:teavm,代码行数:12,代码来源:AstWriter.java

示例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;
}
 
开发者ID:MikaGuraN,项目名称:HL4A,代码行数:53,代码来源:IRFactory.java

示例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);

		}

	}

}
 
开发者ID:bobbylight,项目名称:RSTALanguageSupport,代码行数:35,代码来源:JavaScriptOutlineTreeGenerator.java


注:本文中的org.mozilla.javascript.ast.ObjectLiteral.getElements方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。