Beispiel #1
0
        private static bool IsAppConfig(CompositeSaxEvent compositeSaxEvent, IReadOnlyCollection <SaxEvent> descendants)
        {
            var isItemGroup = string.Equals("ItemGroup", compositeSaxEvent.Name);

            if (!isItemGroup)
            {
                return(false);
            }

            var item = descendants?.OfType <EndElementEvent>()
                       ?.FirstOrDefault(x => string.Equals(x.Name, "None"));

            if (item == null)
            {
                return(false);
            }

            if (!item.Attributes.ContainsKey("Include"))
            {
                return(false);
            }

            var include = item.Attributes["Include"];

            return(string.Equals("App.config", include, StringComparison.InvariantCultureIgnoreCase));
        }
Beispiel #2
0
        private static ProjectStructureItem HandleAppConfig(CompositeSaxEvent compositeSaxEvent, IReadOnlyCollection <SaxEvent> descendants)
        {
            var appConfigPath = descendants?.OfType <EndElementEvent>()
                                ?.FirstOrDefault(x => string.Equals(x.Name, "None"))
                                ?.Attributes["Include"];

            return(new AppConfigItem(appConfigPath));
        }
Beispiel #3
0
        private static ProjectStructureItem HandleAssemblyName(CompositeSaxEvent compositeSaxEvent, IReadOnlyCollection <SaxEvent> descendants)
        {
            var assemblyName = descendants.OfType <StringElementEvent>()
                               .Single()
                               .Content;

            return(new AssemblyName(assemblyName));
        }
        private static ProjectStructureItem HandleTargetFrameworkVersion(CompositeSaxEvent compositeSaxEvent, IReadOnlyCollection <SaxEvent> descendants)
        {
            var value = descendants.OfType <StringElementEvent>()
                        .FirstOrDefault()
                        ?.Content;

            return(new TargetFramework(value));
        }
        private static ProjectStructureItem HandleAppConfig(CompositeSaxEvent compositeSaxEvent, IReadOnlyCollection <SaxEvent> descendants)
        {
            var item = descendants?.OfType <EndElementEvent>()
                       .Where(x => string.Equals(x.Name, NONE_TAG_NAME))
                       .Where(x => x.Attributes.ContainsKey(INCLUDE_TAG_NAME))
                       .Select(x => x.Attributes[INCLUDE_TAG_NAME])
                       .FirstOrDefault(x => string.Equals("app.config", x, StringComparison.InvariantCultureIgnoreCase));

            return(new AppConfigItem(item));
        }
Beispiel #6
0
        public static ProjectStructureItem Build(CompositeSaxEvent saxEvent, IReadOnlyCollection <SaxEvent> descendants)
        {
            var endElementEvents = descendants?.OfType <EndElementEvent>()
                                   .ToArray();

            return(saxEvent.Switch <CompositeSaxEvent, ProjectStructureItem>()
                   .Case(IsReference, x => HandleReference(x, endElementEvents))
                   .Case(IsProjectReference, x => HandleProjectReference(x, endElementEvents))
                   .Case(IsAssemblyName, x => HandleAssemblyName(x, descendants))
                   .Case(IsOutputType, x => HandleOutputType(x, descendants))
                   .Case(x => IsAppConfig(x, descendants), x => HandleAppConfig(x, descendants))
                   .Case(x => IsPackagesConfig(x, descendants), x => HandlePackagesConfig(x, descendants))
                   .Evaluate());
        }
Beispiel #7
0
        private static ProjectStructureItem HandleProjectReference(CompositeSaxEvent saxEvent, EndElementEvent[] endElementEvents)
        {
            var include = saxEvent.Attributes["Include"];
            var guid    = endElementEvents.Single(x => string.Equals(x.Name, "Project"))
                          .Descendants
                          .OfType <StringElementEvent>()
                          .Single()
                          .Content;
            var name = endElementEvents.Single(x => string.Equals(x.Name, "Name"))
                       .Descendants
                       .OfType <StringElementEvent>()
                       .Single()
                       .Content;

            return(new ProjectReference(include, name, guid));
        }
        public static IEnumerable <ProjectStructureItem> Build(CompositeSaxEvent saxEvent, IReadOnlyCollection <SaxEvent> descendants)
        {
            var endElementEvents = descendants?.OfType <EndElementEvent>()
                                   .ToArray();

            return(saxEvent.Switch <CompositeSaxEvent, ProjectStructureItem>()
                   .Case(IsReference, x => HandleReference(x, endElementEvents))
                   .Case(IsProjectReference, x => HandleProjectReference(x, endElementEvents))
                   .Case(IsAssemblyName, x => HandleAssemblyName(x, descendants))
                   .Case(IsOutputType, x => HandleOutputType(x, descendants))
                   .Case(x => IsAppConfig(x, descendants), x => HandleAppConfig(x, descendants))
                   .Case(x => IsPackagesConfig(x, descendants), x => HandlePackagesConfig(x, descendants))
                   .Case(IsTargetFrameworkVersion, x => HandleTargetFrameworkVersion(x, descendants))
                   .Case(IsCompolible, x => HandleCompilable(x, endElementEvents))
                   .EvaluateAll());
        }
        private static bool HasInclude(CompositeSaxEvent compositeSaxEvent, IReadOnlyCollection <SaxEvent> descendants, string includeName)
        {
            var isItemGroup = string.Equals(ITEMGROUP_TAG_NAME, compositeSaxEvent.Name);

            if (!isItemGroup)
            {
                return(false);
            }

            var hasInclude = descendants?.OfType <EndElementEvent>()
                             .Where(x => string.Equals(x.Name, NONE_TAG_NAME))
                             .Where(x => x.Attributes.ContainsKey(INCLUDE_TAG_NAME))
                             .Select(x => x.Attributes[INCLUDE_TAG_NAME])
                             .Any(x => string.Equals(includeName, x, StringComparison.InvariantCultureIgnoreCase));

            return(hasInclude.HasValue && hasInclude.Value);
        }
Beispiel #10
0
        private static ProjectStructureItem HandleReference(CompositeSaxEvent saxEvent, EndElementEvent[] endElementEvents)
        {
            var include  = saxEvent.Attributes["Include"];
            var hintPath = endElementEvents?.SingleOrDefault(x => string.Equals(x.Name, "HintPath"))
                           ?.Descendants
                           ?.OfType <StringElementEvent>()
                           .SingleOrDefault()
                           ?.Content;
            var isPrivate = endElementEvents?.SingleOrDefault(x => string.Equals(x.Name, "Private"))
                            ?.Descendants
                            ?.OfType <StringElementEvent>()
                            .SingleOrDefault()
                            ?.Content
                            ?.ToUpper();

            return(new Reference(include, hintPath, string.Equals(true.ToString().ToUpper(), isPrivate)));
        }
        private static ProjectStructureItem HandleCompilable(CompositeSaxEvent compositeSaxEvent, EndElementEvent[] endElementEvents)
        {
            var value = compositeSaxEvent.Attributes[INCLUDE_TAG_NAME];

            return(new CompilableItem(value));
        }
 private static bool IsCompolible(CompositeSaxEvent x)
 {
     return(string.Equals(x.Name, COMPILE));
 }
Beispiel #13
0
 private static bool IsReference(CompositeSaxEvent x)
 {
     return(string.Equals(x.Name, REFERENCE));
 }
 private static bool IsTargetFrameworkVersion(CompositeSaxEvent compositeSaxEvent)
 {
     return(compositeSaxEvent.Path.SequenceEqual(new[] { "Project", "PropertyGroup", "TargetFrameworkVersion" }));
 }
Beispiel #15
0
 private static bool IsProjectReference(CompositeSaxEvent x)
 {
     return(string.Equals(x.Name, PROJECT_REFERENCE));
 }
Beispiel #16
0
 private static bool IsAssemblyName(CompositeSaxEvent x)
 {
     return(string.Equals(x.Name, "AssemblyName"));
 }
Beispiel #17
0
 private static bool IsOutputType(CompositeSaxEvent x)
 {
     return(string.Equals(x.Name, "OutputType"));
 }
 private static bool IsPackagesConfig(CompositeSaxEvent compositeSaxEvent, IReadOnlyCollection <SaxEvent> descendants)
 {
     return(HasInclude(compositeSaxEvent, descendants, PACKAGES_CONFIG_NAME));
 }
 private static bool IsAppConfig(CompositeSaxEvent compositeSaxEvent, IReadOnlyCollection <SaxEvent> descendants)
 {
     return(HasInclude(compositeSaxEvent, descendants, APP_CONFIG_NAME));
 }