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)); }
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)); }
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)); }
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()); }
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); }
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)); }
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" })); }
private static bool IsProjectReference(CompositeSaxEvent x) { return(string.Equals(x.Name, PROJECT_REFERENCE)); }
private static bool IsAssemblyName(CompositeSaxEvent x) { return(string.Equals(x.Name, "AssemblyName")); }
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)); }