Esempio n. 1
0
        void Bind(TreeNode node, CorePlus.Parser.Javascript.Node codeNode)
        {
            System.Type type = codeNode.GetType();
            node.Text = String.Format("{0}<{1}>", codeNode.GetType().Name, codeNode);
            node.Tag = codeNode;
            TreeNode prop = node.Nodes.Add(PR);
            SimpleProperty(prop);
            foreach (System.Reflection.PropertyInfo p in type.GetProperties()) {

                TreeNode tnode = new TreeNode();
                object value = p.GetValue(codeNode, null);

                if ((p.Name == "Parent" || p.Name == "Target") && value is BreakableStatement) {
                    tnode.Text = p.Name + "=" + value;
                    prop.Nodes.Add(tnode);
                    continue;
                }

                if (value is CorePlus.Parser.Javascript.Node) {

                    Bind(tnode, (CorePlus.Parser.Javascript.Node)value);

                    node.Nodes.Add(tnode);
                } else if (value is IEnumerable && !(value is string)) {
                    tnode.Text = p.Name;
                    bool isNode = false;
                    foreach (object node2 in (IEnumerable)value) {
                        TreeNode node3 = new TreeNode();
                        if (node2 is CorePlus.Parser.Javascript.Node) {
                            Bind(node3, (CorePlus.Parser.Javascript.Node)node2);
                            isNode = true;
                        } else {
                            node3.Text = node2.ToString();
                            SimpleProperty(node3);
                        }
                        tnode.Nodes.Add(node3);
                    }
                    Contains(tnode);

                    if (isNode) {
                        node.Nodes.Add(tnode);
                    } else {
                        prop.Nodes.Add(tnode);
                    }
                } else if (!HideName(p.Name)) {
                    tnode.Text = String.Format("{0} = {1}", p.Name, value);
                    //   SimpleProperty(tnode);
                    prop.Nodes.Add(tnode);
                    continue;
                } else {
                    continue;
                }
            }
        }
Esempio n. 2
0
        void AddSingle(CorePlus.Json.JsonObject obj, string key, object value)
        {
            if (value is string) {
                obj.Add(key, (string)value);
            } else if (value is bool) {
                obj.Add(key, (bool)value);
            } else if (value is TypeSummary) {
                var t =  new JsonObject();
                var v = (TypeSummary)value;
                t.Add("type", v.Type);
                t.Add("summary", v.Summary);
                obj[key] = t;
            }else if(value is ArrayProxy<string>){
                var t = new JsonArray();
                foreach (string v in (ArrayProxy<string>)value) {
                    t.Add(v);
                }
                obj[key] = t;
            } else if (value is ArrayProxy<TypeSummary>) {
                var ta = new JsonArray();
                foreach (TypeSummary v in (ArrayProxy<TypeSummary>)value) {
                    var t = new JsonObject();
                    t.Add("type", v.Type);
                    t.Add("summary", v.Summary);
                    ta.Add(t);
                }
                obj[key] = ta;
            } else if(value is ParamInfoCollection) {
                var ta = new JsonArray();
                foreach(ParamInfo v in (ParamInfoCollection)value) {
                    var t = new JsonObject();
                    t.Add("type", v.Type);
                    t.Add("name", v.Name);

                    if(v.DefaultValue != null)
                        t.Add("defaultValue", v.DefaultValue);
                    t.Add("summary", v.Summary);
                    ta.Add(t);
                }
                obj["params"] = ta;
            } else {
                obj.Add(key, value.ToString());
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Adds the members.
        /// </summary>
        /// <param name="dc">The dc.</param>
        /// <param name="obj">The obj.</param>
        /// <param name="defines">要操作的字符串。</param>
        void SaveTmpList(SortedList<string, DocComment> members, CorePlus.Json.JsonObject obj, string currentMemberOf, bool isStatic)
        {
            foreach (var vk in members) {
                DocComment value = vk.Value;

                string names = "members";

                switch (value.MemberType) {
                    case "method":
                    case "function":
                        names = "methods";
                        break;
                    case "field":
                        names = "fields";
                        break;
                    case "config":
                        names = "configs";
                        break;
                    case "property":
                    case "getter":
                    case "setter":
                        names = "properties";
                        break;
                    case "event":
                        names = "events";
                        break;

                }

                JsonArray arr = obj[names] as JsonArray;

                if (arr == null) {
                    obj[names] = arr = new JsonArray();
                }

                JsonObject values = new JsonObject();
                arr.Add(values);

                values.Add("name", value.Name);
                values.Add("icon", GetIcon(value));
                values.Add("fullName", value.FullName);
                values.Add("summary", value.Summary);
                values.Add("isStatic", isStatic);

                string m = value.MemberOf;
                if(currentMemberOf != m)
                    values.Add("defines", m);

            }
        }
Esempio n. 4
0
 void SaveSimpleComment(DocComment dc, CorePlus.Json.JsonObject obj)
 {
     obj.Add("type", dc.MemberType);
     obj.Add("icon", GetIcon(dc));
 }
Esempio n. 5
0
 void SaveJSONP(string filePath, CorePlus.Json.JsonObject obj)
 {
     File.WriteAllText(filePath, "jsonp(" + obj.ToString() + ");", Encoding.UTF8);
 }
Esempio n. 6
0
        void SaveClassInfo(DocComment dc, CorePlus.Json.JsonObject obj)
        {
            string fullName = dc.FullName;
            obj.Add("fullName",fullName);
            obj.Add("source", dc.Source);

            if(dc.Source != null) {
                obj.Add("sourceFile", "data/source/" + dc.Source + ".html#" + fullName.Replace('.', '-'));
            }

            SortedList<string, DocComment> members = new SortedList<string,DocComment>();
            SortedList<string, DocComment> statics = new SortedList<string, DocComment>();

            if (dc.MemberType == "class" && dc.Variant.Members != null) {
                GetMembersAndCopyToTmpList(dc.Variant.Members, members, statics);
            }

            // 如果有成员。生成成员字段。
            if(dc.Variant.Count > 0) {
                GetMembersAndCopyToTmpList(dc.Variant, members, statics);
            }

            if (_project.DefaultExtends != null && dc.MemberType == "class") {

                DocComment dc2 ;

                if (_data.DocComments.TryGetValue(_project.DefaultExtends, out dc2) && dc2.Variant != null) {

                    GetMembersAndCopyToTmpList(dc2.Variant, members, statics);
                }

            }

            DocComment e;
            if(dc.Extends != null && _data.DocComments.TryGetValue(dc.Extends, out e)) {
                string extends = dc.Extends;
                if (e.Variant.Members != null) {
                    GetMembersAndCopyToTmpList(e.Variant.Members, members, statics);
                }

                JsonArray baseClasses = new JsonArray();

                obj["baseClasses"] = baseClasses;
                while (extends != null && _data.DocComments.TryGetValue(extends, out e)) {
                    baseClasses.Insert(0, extends);

                    extends = e.Extends;
                }
            }

            if(dc.Implements != null) {
                foreach(string im in dc.Implements) {
                    if(_data.DocComments.TryGetValue(im, out e))
                        GetMembersAndCopyToTmpList(e.Variant, members, members);
                }
            }

            string memberOf = dc.FullName;
            SaveTmpList(members, obj, memberOf, false);
            SaveTmpList(statics, obj, memberOf, true);

            if(_extendsInfo.ContainsKey(fullName)) {

                JsonArray subClasses = new JsonArray();

                obj["subClasses"] = subClasses;
                var list = _extendsInfo[fullName];
                list.Sort();
                subClasses.AddRange(list);
            }

            foreach(string key in dc){
                AddSingle(obj, key, dc[key]);
            }
        }
Esempio n. 7
0
        void GenerateAPISignle(CorePlus.Json.JsonObject dom, Variant value)
        {
            // 如果有子成员。
            if(value.Count > 0){
                CorePlus.Json.JsonObject parent = new JsonObject();
                dom.Add(value.DocComment.Name, parent);
                foreach(var vk in value) {
                    GenerateAPISignle(parent, vk.Value);
                }

            } else {
                dom.Add(value.DocComment.Name, 0);
            }
        }