From c0d8e337803f6bb4df4b7f6988596ec863f33f03 Mon Sep 17 00:00:00 2001 From: dc3671 Date: Wed, 1 Apr 2020 16:59:20 +0800 Subject: [PATCH] feat(ensure): modify enum to support regular expression --- @commitlint/ensure/src/enum.test.ts | 10 ++++++++++ @commitlint/ensure/src/enum.ts | 8 +++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/@commitlint/ensure/src/enum.test.ts b/@commitlint/ensure/src/enum.test.ts index ab7d5d0ff7..78dc56337e 100644 --- a/@commitlint/ensure/src/enum.test.ts +++ b/@commitlint/ensure/src/enum.test.ts @@ -44,3 +44,13 @@ test('false for c against a, b', () => { const actual = ensure('c', ['a', 'b']); expect(actual).toBe(false); }); + +test('false for ensure/enum against ensure, cli', () => { + const actual = ensure('ensure/enum', ['ensure', 'cli']); + expect(actual).toBe(true); +}); + +test('true for ensure/enum against /ensure\/*/, /cli\/*/', () => { + const actual = ensure('ensure/enum', [/ensure\/*/, /cli\/*/]); + expect(actual).toBe(true); +}); diff --git a/@commitlint/ensure/src/enum.ts b/@commitlint/ensure/src/enum.ts index ba2b20dd3f..3ca4f48f55 100644 --- a/@commitlint/ensure/src/enum.ts +++ b/@commitlint/ensure/src/enum.ts @@ -5,5 +5,11 @@ export default (value: any, enums: any[] = []): boolean => { if (!Array.isArray(enums)) { return false; } - return enums.indexOf(value) > -1; + return enums.reduce((last, curr) => { + if (curr instanceof RegExp) { + return last || value.search(curr) !== -1; + } else { + return last || value === curr; + } + }, false); };