Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / uglify-js / lib / object-ast.js
1 var jsp = require("./parse-js"),
2     pro = require("./process");
3
4 var BY_TYPE = {};
5
6 function HOP(obj, prop) {
7         return Object.prototype.hasOwnProperty.call(obj, prop);
8 };
9
10 function AST_Node(parent) {
11         this.parent = parent;
12 };
13
14 AST_Node.prototype.init = function(){};
15
16 function DEFINE_NODE_CLASS(type, props, methods) {
17         var base = methods && methods.BASE || AST_Node;
18         if (!base) base = AST_Node;
19         function D(parent, data) {
20                 base.apply(this, arguments);
21                 if (props) props.forEach(function(name, i){
22                         this["_" + name] = data[i];
23                 });
24                 this.init();
25         };
26         var P = D.prototype = new AST_Node;
27         P.node_type = function(){ return type };
28         if (props) props.forEach(function(name){
29                 var propname = "_" + name;
30                 P["set_" + name] = function(val) {
31                         this[propname] = val;
32                         return this;
33                 };
34                 P["get_" + name] = function() {
35                         return this[propname];
36                 };
37         });
38         if (type != null) BY_TYPE[type] = D;
39         if (methods) for (var i in methods) if (HOP(methods, i)) {
40                 P[i] = methods[i];
41         }
42         return D;
43 };
44
45 var AST_String_Node = DEFINE_NODE_CLASS("string", ["value"]);
46 var AST_Number_Node = DEFINE_NODE_CLASS("num", ["value"]);
47 var AST_Name_Node = DEFINE_NODE_CLASS("name", ["value"]);
48
49 var AST_Statlist_Node = DEFINE_NODE_CLASS(null, ["body"]);
50 var AST_Root_Node = DEFINE_NODE_CLASS("toplevel", null, { BASE: AST_Statlist_Node });
51 var AST_Block_Node = DEFINE_NODE_CLASS("block", null, { BASE: AST_Statlist_Node });
52 var AST_Splice_Node = DEFINE_NODE_CLASS("splice", null, { BASE: AST_Statlist_Node });
53
54 var AST_Var_Node = DEFINE_NODE_CLASS("var", ["definitions"]);
55 var AST_Const_Node = DEFINE_NODE_CLASS("const", ["definitions"]);
56
57 var AST_Try_Node = DEFINE_NODE_CLASS("try", ["body", "catch", "finally"]);
58 var AST_Throw_Node = DEFINE_NODE_CLASS("throw", ["exception"]);
59
60 var AST_New_Node = DEFINE_NODE_CLASS("new", ["constructor", "arguments"]);
61
62 var AST_Switch_Node = DEFINE_NODE_CLASS("switch", ["expression", "branches"]);
63 var AST_Switch_Branch_Node = DEFINE_NODE_CLASS(null, ["expression", "body"]);
64
65 var AST_Break_Node = DEFINE_NODE_CLASS("break", ["label"]);
66 var AST_Continue_Node = DEFINE_NODE_CLASS("continue", ["label"]);
67 var AST_Assign_Node = DEFINE_NODE_CLASS("assign", ["operator", "lvalue", "rvalue"]);
68 var AST_Dot_Node = DEFINE_NODE_CLASS("dot", ["expression", "name"]);
69 var AST_Call_Node = DEFINE_NODE_CLASS("call", ["function", "arguments"]);
70
71 var AST_Lambda_Node = DEFINE_NODE_CLASS(null, ["name", "arguments", "body"])
72 var AST_Function_Node = DEFINE_NODE_CLASS("function", null, AST_Lambda_Node);
73 var AST_Defun_Node = DEFINE_NODE_CLASS("defun", null, AST_Lambda_Node);
74
75 var AST_If_Node = DEFINE_NODE_CLASS("if", ["condition", "then", "else"]);