コード例 #1
0
        public static void PropertyToXrefString(this TypeSDPModel typeSDPModel, PageModel pageModel)
        {
            if (typeSDPModel == null)
            {
                return;
            }

            typeSDPModel.Implements   = typeSDPModel.Implements?.Select(i => { return(i = InterpretXref(pageModel, i) ?? i); });
            typeSDPModel.Inheritances = typeSDPModel.Inheritances?.Select(i => { return(i = InterpretXref(pageModel, i) ?? i); });
        }
コード例 #2
0
        public override bool Interpret(PageModel pageModel, BuildContext context)
        {
            if (!base.Valid(pageModel))
            {
                return(false);
            }

            var typeItem = pageModel.Items?.Where(item => item.Type == MemberType.Interface || item.Type == MemberType.Class)?.ToList()?.FirstOrDefault();

            if (typeItem != null)
            {
                var objType = new TypeSDPModel();
                objType.Constructors     = TransferConstructors(pageModel.Items);
                objType.Fields           = TransferFields(pageModel.Items);
                objType.Methods          = TransferMethods(pageModel.Items);
                objType.FullName         = typeItem.FullName;
                objType.Inheritances     = ConvertStringToInlineMD(typeItem.Inheritance);
                objType.InheritedMembers = typeItem.InheritedMembers;
                objType.Name             = typeItem.Name;
                objType.NameWithType     = typeItem.NameWithType;
                objType.Package          = typeItem.PackageName;
                objType.Summary          = typeItem.Summary;
                objType.Syntax           = TransferSyntax(typeItem.Syntax);
                objType.Type             = typeItem.Type?.ToString().ToLower();
                objType.Implements       = typeItem.Implements;
                objType.TypeParameters   = TransferTypeParameters(typeItem.Syntax);
                objType.Uid = typeItem.Uid;

                objType.PropertyToXrefString(pageModel);
                base.Save(objType, objType.YamlMime, objType.Uid, objType.Type);

                List <AbstractExpression> expressions = new List <AbstractExpression>();
                expressions.Add(new ConstructorExpression(_outputFolder, objType.Uid));
                expressions.Add(new FieldExpression(_outputFolder, objType.Uid));
                expressions.Add(new MethodExpression(_outputFolder, objType.Uid));
                foreach (var expression in expressions)
                {
                    if (!expression.Interpret(pageModel, context))
                    {
                        break;
                    }
                }

                return(false);
            }

            return(true);
        }
コード例 #3
0
        private void PopulateTypeChildren(Type t, TypeSDPModel sdpType)
        {
            var members = new List <Member>();

            if (t.Members != null)
            {
                members.AddRange(t.Members);
            }
            if (t.InheritedMembers != null)
            {
                members.AddRange(t.InheritedMembers.Keys.Select(im => _store.MembersByUid[im]));
            }
            members = members.OrderBy(m => m.DisplayName).ToList();
            if (members.Count > 0)
            {
                var eiis = members.Where(m => m.IsEII).ToList();
                if (eiis.Count > 0)
                {
                    sdpType.EIIs = eiis.Select(m => ConvertTypeMemberLink(t, m))
                                   .Where(m => m != null).ToList();
                }
                foreach (var mGroup in members
                         .Where(m => !m.IsEII)
                         .GroupBy(m => m.ItemType))
                {
                    var list = mGroup.Select(m => ConvertTypeMemberLink(t, m))
                               .Where(m => m != null).ToList();
                    switch (mGroup.Key)
                    {
                    case ItemType.Property:
                        sdpType.Properties = list;
                        break;

                    case ItemType.Method:
                        sdpType.Methods = list;
                        break;

                    case ItemType.Event:
                        sdpType.Events = list;
                        break;

                    case ItemType.Field:
                        sdpType.Fields = list;
                        break;

                    case ItemType.AttachedEvent:
                        sdpType.AttachedEvents = list;
                        break;

                    case ItemType.AttachedProperty:
                        sdpType.AttachedProperties = list;
                        break;

                    case ItemType.Constructor:
                        sdpType.Constructors = list;
                        break;

                    case ItemType.Operator:
                        sdpType.Operators = list;
                        break;
                    }
                }
            }
            if (t.ExtensionMethods?.Count > 0)
            {
                sdpType.ExtensionMethods = t.ExtensionMethods.Select(im => ExtensionMethodToTypeMemberLink(t, im))
                                           .Where(ext => ext != null).ToList().NullIfEmpty();
            }
        }