From 3cc935918d5109d175f69969d0faf9b18be613f7 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Tue, 18 Aug 2020 18:55:54 +0300 Subject: [PATCH] feat: add parseNamespace utility fn to schematics --- .../packages/schematics/src/utils/index.ts | 1 + .../packages/schematics/src/utils/namespace.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/utils/namespace.ts diff --git a/npm/ng-packs/packages/schematics/src/utils/index.ts b/npm/ng-packs/packages/schematics/src/utils/index.ts index 7dbc286546..faec4abeed 100644 --- a/npm/ng-packs/packages/schematics/src/utils/index.ts +++ b/npm/ng-packs/packages/schematics/src/utils/index.ts @@ -1,6 +1,7 @@ export * from './angular'; export * from './ast'; export * from './common'; +export * from './namespace'; export * from './rule'; export * from './source'; export * from './text'; diff --git a/npm/ng-packs/packages/schematics/src/utils/namespace.ts b/npm/ng-packs/packages/schematics/src/utils/namespace.ts new file mode 100644 index 0000000000..bbee41aa6f --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/utils/namespace.ts @@ -0,0 +1,15 @@ +export function parseNamespace(solution: string, type: string) { + let namespace = type + .split('.') + .slice(0, -1) + .join('.'); + + solution.split('.').reduceRight((acc, part) => { + acc = part + '.' + acc; + const regex = new RegExp('^' + acc + '(Controllers.)?'); + namespace = namespace.replace(regex, ''); + return acc; + }, ''); + + return namespace; +}