Excract generic as array (or not)

pull/16928/head
Mahmut Gundogdu 2 years ago
parent 47c5a1f95c
commit 61dcbb19eb

@ -67,21 +67,23 @@ export function generateRefWithPlaceholders(sourceType: string) {
}
export function extractSimpleGenerics(sourceType: string) {
const { identifier, generics } = extractGenerics(sourceType);
const { identifier, generics, array } = extractGenerics(sourceType);
return {
identifier: getLastSegment(identifier),
generics: generics.map(getLastSegment),
array
};
}
export function extractGenerics(sourceType: string) {
const isArray = /\[\]$/.test(sourceType);
const regex = /(?<identifier>[^<]+)(<(?<generics>.+)>)?/g;
const { identifier = '', generics = '' } = regex.exec(sourceType)?.groups ?? {};
return {
return {
identifier,
generics: generics.split(/,\s*/).filter(Boolean),
array: isArray ? '[]':''
};
}

@ -25,6 +25,9 @@ export function applyWithOverwrite(source: Source, rules: Rule[]): Rule {
export function mergeAndAllowDelete(host: Tree, rule: Rule) {
return async (tree: Tree, context: SchematicContext) => {
const nextTree = await callRule(rule, tree, context).toPromise();
if(!nextTree){
return;
}
host.merge(nextTree, MergeStrategy.AllowDeleteConflict);
};
}

@ -14,10 +14,8 @@ export function createTypeSimplifier() {
);
type = /any</.test(type) ? 'any' : type;
const { identifier, generics } = extractSimpleGenerics(type);
return generics.length ? `${identifier}<${generics.join(', ')}>` : identifier;
const { identifier, generics, array} = extractSimpleGenerics(type);
return generics.length ? `${identifier}<${generics.join(', ')}>${array}` : identifier;
});
return (type: string) => {

Loading…
Cancel
Save