Ejemplo n.º 1
0
 private static DataIndexEntryNode DataIndexEntry(string filePath, CatalogueBaseNode node, DataIndexEntryKind dataType)
 {
     return(DataIndexEntry(
                filePath: filePath,
                dataType: dataType,
                dataId: node.Id,
                dataName: node.Name,
                dataBattleScribeVersion: node.BattleScribeVersion,
                dataRevision: node.Revision));
 }
Ejemplo n.º 2
0
        public CatalogueBaseNode Convert(CatalogueBaseNode node)
        {
            var(profiles, rules)             = ConvertRulesAndProfiles(node.Profiles.NodeList, node.Rules.NodeList);
            var(sharedProfiles, sharedRules) = ConvertRulesAndProfiles(node.SharedProfiles.NodeList, node.SharedRules.NodeList);
            var infoLinks                  = ConvertLinks(node.InfoLinks).ToArray();
            var selectionEntries           = node.SelectionEntries.Select(ConvertSelectionEntryBase).ToArray();
            var sharedSelectionEntries     = node.SharedSelectionEntries.Select(ConvertSelectionEntryBase).ToArray();
            var sharedSelectionEntryGroups = node.SharedSelectionEntryGroups.Select(ConvertSelectionEntryBase).ToArray();
            var newNode = node
                          .WithProfiles(profiles)
                          .WithRules(rules)
                          .WithSharedProfiles(sharedProfiles)
                          .WithSharedRules(sharedRules)
                          .WithSharedSelectionEntries(sharedSelectionEntries)
                          .WithSharedSelectionEntryGroups(sharedSelectionEntryGroups)
                          .WithSelectionEntries(selectionEntries);

            return(newNode);
        }
Ejemplo n.º 3
0
    protected CatalogueBaseSymbol(
        SourceGlobalNamespaceSymbol containingSymbol,
        CatalogueBaseNode declaration,
        DiagnosticBag diagnostics)
        : base(containingSymbol, declaration)
    {
        ContainingNamespace            = containingSymbol;
        Declaration                    = declaration;
        costTypes                      = declaration.CostTypes.Select(x => new CostTypeSymbol(this, x, diagnostics)).ToImmutableArray();
        profileTypes                   = declaration.ProfileTypes.Select(x => new ProfileTypeSymbol(this, x, diagnostics)).ToImmutableArray();
        publications                   = declaration.Publications.Select(x => new PublicationSymbol(this, x, diagnostics)).ToImmutableArray();
        RootContainerEntries           = CreateRootContainerEntries().ToImmutableArray();
        RootResourceEntries            = CreateRootResourceEntries().ToImmutableArray();
        SharedSelectionEntryContainers = CreateSharedContainerEntries().ToImmutableArray();
        SharedResourceEntries          = CreateSharedResourceEntries().ToImmutableArray();

        IEnumerable <IContainerEntrySymbol> CreateRootContainerEntries()
        {
            foreach (var item in declaration.SelectionEntries)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
            foreach (var item in declaration.EntryLinks)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
            foreach (var item in declaration.ForceEntries)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
            foreach (var item in declaration.CategoryEntries)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
        }

        IEnumerable <IResourceEntrySymbol> CreateRootResourceEntries()
        {
            foreach (var item in declaration.Rules)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
        }

        IEnumerable <ISelectionEntryContainerSymbol> CreateSharedContainerEntries()
        {
            foreach (var item in declaration.SharedSelectionEntries)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
            foreach (var item in declaration.SharedSelectionEntryGroups)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
        }

        IEnumerable <IResourceEntrySymbol> CreateSharedResourceEntries()
        {
            foreach (var item in declaration.SharedInfoGroups)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
            foreach (var item in declaration.SharedProfiles)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
            foreach (var item in declaration.SharedRules)
            {
                yield return(EntrySymbol.CreateEntry(this, item, diagnostics));
            }
        }
    }
Ejemplo n.º 4
0
 private CatalogueBaseSymbol GetCatalogueSymbol(CatalogueBaseNode node)
 {
     return(Compilation.SourceGlobalNamespace.Catalogues
            .First(x => x.Declaration == node));
 }