mirror of
https://github.com/Redocly/redoc.git
synced 2025-08-08 06:04:56 +03:00
Add support for minLength and maxLength constraint humanization
This commit is contained in:
parent
9e2853c2fd
commit
b7b6e84322
|
@ -296,6 +296,8 @@ paths:
|
|||
style: form
|
||||
schema:
|
||||
type: array
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
items:
|
||||
type: string
|
||||
enum:
|
||||
|
@ -784,6 +786,7 @@ components:
|
|||
photoUrls:
|
||||
description: The list of URL to a cute photos featuring pet
|
||||
type: array
|
||||
maxItems: 20
|
||||
xml:
|
||||
name: photoUrl
|
||||
wrapped: true
|
||||
|
@ -796,6 +799,7 @@ components:
|
|||
tags:
|
||||
description: Tags attached to the pet
|
||||
type: array
|
||||
minItems: 1
|
||||
xml:
|
||||
name: tag
|
||||
wrapped: true
|
||||
|
|
|
@ -141,29 +141,40 @@ export function isNamedDefinition(pointer?: string): boolean {
|
|||
return /^#\/components\/schemas\/[^\/]+$/.test(pointer || '');
|
||||
}
|
||||
|
||||
function humanizeRangeConstraint(description: string, min: number | undefined, max: number | undefined): string | undefined {
|
||||
let stringRange;
|
||||
if (min !== undefined && max !== undefined) {
|
||||
if (min === max) {
|
||||
stringRange = `${min} ${description}`;
|
||||
} else {
|
||||
stringRange = `[ ${min} .. ${max} ] ${description}`;
|
||||
}
|
||||
} else if (max !== undefined) {
|
||||
stringRange = `<= ${max} ${description}`;
|
||||
} else if (min !== undefined) {
|
||||
if (min === 1) {
|
||||
stringRange = 'non-empty';
|
||||
} else {
|
||||
stringRange = `>= ${min} ${description}`;
|
||||
}
|
||||
}
|
||||
|
||||
return stringRange;
|
||||
}
|
||||
|
||||
export function humanizeConstraints(schema: OpenAPISchema): string[] {
|
||||
const res: string[] = [];
|
||||
|
||||
let stringRange;
|
||||
if (schema.minLength !== undefined && schema.maxLength !== undefined) {
|
||||
if (schema.minLength === schema.maxLength) {
|
||||
stringRange = `${schema.minLength} characters`;
|
||||
} else {
|
||||
stringRange = `[ ${schema.minLength} .. ${schema.maxLength} ] characters`;
|
||||
}
|
||||
} else if (schema.maxLength !== undefined) {
|
||||
stringRange = `<= ${schema.maxLength} characters`;
|
||||
} else if (schema.minLength !== undefined) {
|
||||
if (schema.minLength === 1) {
|
||||
stringRange = 'non-empty';
|
||||
} else {
|
||||
stringRange = `>= ${schema.minLength} characters`;
|
||||
}
|
||||
}
|
||||
const stringRange = humanizeRangeConstraint('characters', schema.minLength, schema.maxLength);
|
||||
if (stringRange !== undefined) {
|
||||
res.push(stringRange);
|
||||
}
|
||||
|
||||
const arrayRange = humanizeRangeConstraint('items', schema.minItems, schema.maxItems);
|
||||
if (arrayRange !== undefined) {
|
||||
res.push(arrayRange);
|
||||
}
|
||||
|
||||
let numberRange;
|
||||
if (schema.minimum !== undefined && schema.maximum !== undefined) {
|
||||
numberRange = schema.exclusiveMinimum ? '( ' : '[ ';
|
||||
|
|
Loading…
Reference in New Issue
Block a user