MCPcopy Create free account
hub / github.com/dynjs/dynjs / pp

Method pp

src/main/java/org/dynjs/runtime/builtins/types/object/prototype/Pp.java:28–94  ·  view source on GitHub ↗
(ExecutionContext context, StringBuilder out, String indent, JSObject jsObj, Set<JSObject> seen)

Source from the content-addressed store, hash-verified

26 }
27
28 protected void pp(ExecutionContext context, StringBuilder out, String indent, JSObject jsObj, Set<JSObject> seen) {
29 out.append(indent).append("[");
30 Object ctorProp = jsObj.getProperty(context, "__ctor__");
31 if (ctorProp instanceof PropertyDescriptor) {
32 out.append(((PropertyDescriptor) ctorProp).getValue());
33 } else {
34 if (jsObj instanceof JSFunction) {
35 out.append(jsObj.get(context, "name")).append("(..)");
36 } else {
37 out.append("unknown");
38 }
39 }
40 seen.add(jsObj);
41
42 out.append("@");
43 out.append(System.identityHashCode(jsObj));
44
45 if (jsObj.getPrototype() != null) {
46 out.append("\n").append(indent + " ").append("__proto__:\n");
47 pp(context, out, indent + " ", jsObj.getPrototype(), seen);
48 }
49
50 NameEnumerator enumerator = jsObj.getAllEnumerablePropertyNames();
51 if (enumerator.hasNext()) {
52 out.append("\n");
53
54 while (enumerator.hasNext()) {
55 String name = enumerator.next();
56 out.append(indent + " ").append(name).append(": {\n");
57 Object v = jsObj.getProperty(context, name);
58 if (v == Types.UNDEFINED) {
59 out.append("undefined");
60 } else {
61 PropertyDescriptor prop = (PropertyDescriptor) v;
62
63 if (prop.hasValue()) {
64 out.append(indent + " ").append("value: ");
65 v = prop.getValue();
66 if (v instanceof JSObject) {
67 if (seen.contains(v)) {
68 out.append("[circular]");
69 } else {
70 out.append( "\n" );
71 pp(context, out, indent + " ", (JSObject) v, seen);
72 }
73 } else {
74 out.append(v);
75 }
76 }
77 if (prop.hasGet()) {
78 out.append(indent + " ").append("get: ");
79 pp(context, out, indent + " ", (JSObject) ((PropertyDescriptor) v).getGetter(), seen);
80 }
81
82 if (prop.hasSet()) {
83 out.append(indent + " ").append("set: ");
84 pp(context, out, indent + " ", (JSObject) ((PropertyDescriptor) v).getSetter(), seen);
85 }

Callers 2

callMethod · 0.95
jasmine.jsFile · 0.80

Calls 15

hasNextMethod · 0.95
nextMethod · 0.95
hasValueMethod · 0.95
getValueMethod · 0.95
hasGetMethod · 0.95
hasSetMethod · 0.95
appendMethod · 0.80
containsMethod · 0.80
getGetterMethod · 0.80
getSetterMethod · 0.80
getPropertyMethod · 0.65
getMethod · 0.65

Tested by

no test coverage detected