/// <summary> /// Walks the given document and constructs a <see cref="SetCodeItems" /> of CodeItems /// within it including regions. /// </summary> /// <param name="document">The document to walk.</param> /// <returns>The set of code items within the document, including regions.</returns> internal SetCodeItems RetrieveAllCodeItems(Document document) { var codeItems = new SetCodeItems(); var fileCodeModel = RetrieveFileCodeModel(document.ProjectItem); RetrieveCodeItems(codeItems, fileCodeModel); codeItems.AddRange(_codeModelHelper.RetrieveCodeRegions(document.GetTextDocument())); return codeItems; }
/// <summary> /// Walks the given document and constructs a <see cref="SetCodeItems" /> of CodeItems /// within it including regions. /// </summary> /// <param name="document">The document to walk.</param> /// <returns>The set of code items within the document, including regions.</returns> internal SetCodeItems RetrieveAllCodeItems(Document document) { var codeItems = new SetCodeItems(); var fileCodeModel = RetrieveFileCodeModel(document.ProjectItem); RetrieveCodeItems(codeItems, fileCodeModel); codeItems.AddRange(_codeModelHelper.RetrieveCodeRegions(document.GetTextDocument())); return(codeItems); }
/// <summary> /// Walks the given document and constructs a <see cref="SetCodeItems" /> of CodeItems /// within it including regions. /// </summary> /// <param name="document">The document to walk.</param> /// <returns>The set of code items within the document, including regions.</returns> internal SetCodeItems RetrieveAllCodeItems(Document document) { var codeItems = new SetCodeItems(); if (document.ProjectItem != null) { RetrieveCodeItems(codeItems, document.ProjectItem.FileCodeModel); } codeItems.AddRange(_codeModelHelper.RetrieveCodeRegions(document.GetTextDocument())); return codeItems; }
/// <summary> /// Organizes the specified code items by alpha sort order. /// </summary> /// <param name="rawCodeItems">The raw code items.</param> /// <returns>The organized code items.</returns> private static SetCodeItems OrganizeCodeItemsByAlphaSortOrder(SetCodeItems rawCodeItems) { var organizedCodeItems = new SetCodeItems(); if (rawCodeItems != null) { var codeItemsWithoutRegions = rawCodeItems.Where(x => !(x is CodeItemRegion)); var structuredCodeItems = OrganizeCodeItemsByFileSortOrder(codeItemsWithoutRegions); organizedCodeItems.AddRange(structuredCodeItems); // Sort the list of code items by name recursively. RecursivelySort(organizedCodeItems, new CodeItemNameComparer()); } return(organizedCodeItems); }
/// <summary> /// Organizes the specified code items by alpha sort order. /// </summary> /// <param name="rawCodeItems">The raw code items.</param> /// <returns>The organized code items.</returns> private static SetCodeItems OrganizeCodeItemsByAlphaSortOrder(SetCodeItems rawCodeItems) { var organizedCodeItems = new SetCodeItems(); if (rawCodeItems != null) { var codeItemsWithoutRegions = rawCodeItems.Where(x => !(x is CodeItemRegion)); var structuredCodeItems = OrganizeCodeItemsByFileSortOrder(codeItemsWithoutRegions); organizedCodeItems.AddRange(structuredCodeItems); // Sort the list of code items by name recursively. RecursivelySort(organizedCodeItems, new CodeItemNameComparer()); } return organizedCodeItems; }
/// <summary> /// Recursively gets the children in a depth-first fashion for the specified parent without /// delving into nested element parents. /// </summary> /// <param name="parent">The parent.</param> /// <returns>The recursive set of children.</returns> public static SetCodeItems GetChildrenRecursive(this ICodeItemParent parent) { var children = new SetCodeItems(); foreach (var child in parent.Children) { children.Add(child); var childAsParent = child as ICodeItemParent; if (childAsParent != null && !(child is BaseCodeItemElementParent)) { children.AddRange(childAsParent.GetChildrenRecursive()); } } return(children); }
/// <summary> /// Recursively gets the children in a depth-first fashion for the specified parent without /// delving into nested element parents. /// </summary> /// <param name="parent">The parent.</param> /// <returns>The recursive set of children.</returns> public static SetCodeItems GetChildrenRecursive(this ICodeItemParent parent) { var children = new SetCodeItems(); foreach (var child in parent.Children) { children.Add(child); var childAsParent = child as ICodeItemParent; if (childAsParent != null && !(child is BaseCodeItemElementParent)) { children.AddRange(childAsParent.GetChildrenRecursive()); } } return children; }
/// <summary> /// Organizes the specified code items by type sort order. /// </summary> /// <param name="rawCodeItems">The raw code items.</param> /// <returns>The organized code items.</returns> private static SetCodeItems OrganizeCodeItemsByTypeSortOrder(SetCodeItems rawCodeItems) { var organizedCodeItems = new SetCodeItems(); if (rawCodeItems != null) { var codeItemsWithoutRegions = rawCodeItems.Where(x => !(x is CodeItemRegion)); var structuredCodeItems = OrganizeCodeItemsByFileSortOrder(codeItemsWithoutRegions); organizedCodeItems.AddRange(structuredCodeItems); // Sort the list of code items by type recursively. RecursivelySort(organizedCodeItems, new CodeItemTypeComparer()); // Group the list of code items by type recursively. foreach (var codeItem in organizedCodeItems.OfType <ICodeItemParent>()) { RecursivelyGroupByType(codeItem); } } return(organizedCodeItems); }
/// <summary> /// Organizes the specified code items by type sort order. /// </summary> /// <param name="rawCodeItems">The raw code items.</param> /// <returns>The organized code items.</returns> private static SetCodeItems OrganizeCodeItemsByTypeSortOrder(SetCodeItems rawCodeItems) { var organizedCodeItems = new SetCodeItems(); if (rawCodeItems != null) { var codeItemsWithoutRegions = rawCodeItems.Where(x => !(x is CodeItemRegion)); var structuredCodeItems = OrganizeCodeItemsByFileSortOrder(codeItemsWithoutRegions); organizedCodeItems.AddRange(structuredCodeItems); // Sort the list of code items by type recursively. RecursivelySort(organizedCodeItems, new CodeItemTypeComparer()); // Group the list of code items by type recursively. foreach (var codeItem in organizedCodeItems.OfType<ICodeItemParent>()) { RecursivelyGroupByType(codeItem); } } return organizedCodeItems; }