Ejemplo n.º 1
0
    protected SelectionEntryBaseSymbol(
        ISymbol containingSymbol,
        SelectionEntryBaseNode declaration,
        DiagnosticBag diagnostics)
        : base(containingSymbol, declaration, diagnostics)
    {
        Categories            = CreateCategoryEntries().ToImmutableArray();
        PrimaryCategory       = Categories.FirstOrDefault(x => x.IsPrimaryCategory);
        ChildSelectionEntries = CreateSelectionEntryContainers().ToImmutableArray();

        IEnumerable <ICategoryEntrySymbol> CreateCategoryEntries()
        {
            foreach (var item in declaration.CategoryLinks)
            {
                yield return(CreateEntry(this, item, diagnostics));
            }
        }

        IEnumerable <ISelectionEntryContainerSymbol> CreateSelectionEntryContainers()
        {
            foreach (var item in declaration.EntryLinks)
            {
                yield return(CreateEntry(this, item, diagnostics));
            }
            foreach (var item in declaration.SelectionEntries)
            {
                yield return(CreateEntry(this, item, diagnostics));
            }
            foreach (var item in declaration.SelectionEntryGroups)
            {
                yield return(CreateEntry(this, item, diagnostics));
            }
        }
    }
Ejemplo n.º 2
0
 private static EntryLinkNode EntryLink(SelectionEntryBaseNode selectionEntryBase, EntryLinkKind type, string id = null)
 {
     return(EntryLink(
                id: id ?? NewId(),
                name: selectionEntryBase.Name,
                publicationId: selectionEntryBase.PublicationId,
                page: selectionEntryBase.Page,
                hidden: false,
                collective: false,
                exported: true,
                targetId: selectionEntryBase.Id,
                type: type));
 }