www.gusucode.com > appdesigner工具箱matlab源码程序 > appdesigner/+appdesigner/+internal/+application/getComponentPropertyDocumentation.m
function docContent = getComponentPropertyDocumentation(componentTypes) %GETCOMPONENTPROPERTYDOCUMENTATION Retrieves component property %documentation from the Doc Center % Copyright 2016 The MathWorks, Inc. % get a mapping of component types to the Doc Center search term searchTermMap = buildSearchTermMap(); if(nargin > 0) if(ischar(componentTypes)) % convert to a cell array to handle multiple queries componentTypes = {componentTypes}; end else % if no arguments are provided use all components to get property % documentation componentTypes = searchTermMap.keys(); end % create an emoty struct to store Doc Center data docContent(length(componentTypes)) = struct('Type', '', 'Properties', []); for i = 1:length(componentTypes) if(isKey(searchTermMap, componentTypes{i})) key = searchTermMap(componentTypes{i}); docContent(i).Type = componentTypes{i}; % search Doc Center for component property documenation docContent = getGroupedPropertiesContent(docContent, i, key); end end end function propStruct = getGroupedPropertiesContent(propStruct, index, searchTerm) % retrieves data from the Doc Center % search for properties page propertyType = com.mathworks.helpsearch.reference.RefEntityType.PROPERTY; % get a request to search Doc Center request = com.mathworks.helpsearch.reference.ClassEntityListRequest(searchTerm,propertyType); % create a retriever to extract content baseRetriever = com.mathworks.mlwidgets.help.DocCenterReferenceRetrievalStrategy.createDataRetriever; c1 = onCleanup(@()baseRetriever.close()); % create a grouped retriever to extract grouped content groupRetriever = com.mathworks.helpsearch.reference.GroupedReferenceDataRetriever(baseRetriever); c1 = onCleanup(@()groupRetriever.close()); % handle doc content that is grouped grouped = groupRetriever.getReferenceData(request); propStruct(index).Properties = []; groupsToQuery = grouped.getEntityGroups; if ~grouped.getUngroupedEntities.isEmpty groupsToQuery = grouped.getUngroupedEntities.toArray; end propStruct(index).Properties = getComponentProperties(groupsToQuery); end function props = getComponentProperties(groupedProps) % iterates over groups to get component properties props =[]; groupIterator = groupedProps.iterator; while(groupIterator.hasNext()) group = groupIterator.next(); % concate properties for each group props = [props; getPropertiesCell(char(group.getName()), group.getItems().toArray())]; end end function propStruct = getPropertiesCell(groupName, items) % converts Doc Center data into a struct with relevant fields props = cell(length(items), 5); for i = 1:length(items) propName = regexp( char(items(i).getRefEntity.getName), '\.(.*?)$', 'tokens', 'once'); props{i, 1} = propName{1}; % property name props{i, 2} = char(items(i).getPurposeLine()); % purpose props{i, 3} = char(items(i).getInputValues()); % inputs props{i, 4} = char(items(i).getRelativePath()); % help path props{i, 5} = groupName; % group end propStruct = struct('property', props(:,1), 'description', props(:,2), 'inputs', props(:,3), 'helpPath', props(:,4), 'group', props(:,5)); end function map = buildSearchTermMap() % gets a map of component classes to CSH search term mapping import appdesigner.internal.application.appmetadata.createComponentAdapterMap; adapterMap = createComponentAdapterMap(); adapterClasses = adapterMap.values; searchTerms = cell(1, length(adapterClasses)); for i = 1:length(adapterClasses) adapter = eval(adapterClasses{i}); if(isprop(adapter, 'CSHSearchTerm')) searchTerms{i} = adapter.CSHSearchTerm; else searchTerms{i} = ''; end end map = containers.Map(adapterMap.keys, searchTerms); end