fix: definition name util

This commit is contained in:
Oprysk 2022-01-19 19:43:23 +02:00
parent 3e47932754
commit 384133f114
2 changed files with 16 additions and 4 deletions

View File

@ -12,6 +12,7 @@ import {
sortByRequired,
humanizeNumberRange,
getContentWithLegacyExamples,
getDefinitionName,
} from '../';
import { FieldModel, OpenAPIParser, RedocNormalizedOptions } from '../../services';
@ -1269,4 +1270,14 @@ describe('Utils', () => {
expect(content['text/plain']).toStrictEqual(info.content['text/plain']);
});
});
describe('getDefinitionName', () => {
test('should return the name if pointer match regex', () => {
expect(getDefinitionName('#/components/schemas/Call')).toEqual('Call');
});
test("should return the `undefined` if pointer not match regex or it's absent", () => {
expect(getDefinitionName('#/test/path/Call')).toBeUndefined();
expect(getDefinitionName()).toBeUndefined();
});
});
});

View File

@ -384,14 +384,15 @@ export function langFromMime(contentType: string): string {
return 'clike';
}
const DEFINITION_NAME_REGEX = /^#\/components\/(schemas|pathItems)\/([^/]+)$/;
export function isNamedDefinition(pointer?: string): boolean {
return /^#\/components\/(schemas|pathItems)\/[^\/]+$/.test(pointer || '');
return DEFINITION_NAME_REGEX.test(pointer || '');
}
export function getDefinitionName(pointer?: string): string | undefined {
if (!pointer) return undefined;
const match = pointer.match(/^#\/components\/(schemas|pathItems)\/([^\/]+)$/);
return match === null ? undefined : match[1];
const [name] = pointer?.match(DEFINITION_NAME_REGEX)?.reverse() || [];
return name;
}
function humanizeMultipleOfConstraint(multipleOf: number | undefined): string | undefined {