diff --git a/docs/redoc-vendor-extensions.md b/docs/redoc-vendor-extensions.md index 16909bba4e..0bae2e22d4 100644 --- a/docs/redoc-vendor-extensions.md +++ b/docs/redoc-vendor-extensions.md @@ -173,6 +173,7 @@ Operation code sample | Field Name | Type | Description | | :---------- | :------: | :----------- | | lang | string | Code sample language. Value should be one of the following [list](https://github.com/github/linguist/blob/master/lib/linguist/popular.yml) | +| label | string? | Code sample label e.g. `Node` or `Python2.7`, _optional_, `lang` will be used by default | | source | string | Code sample source code | diff --git a/src/components/RequestSamples/RequestSamples.tsx b/src/components/RequestSamples/RequestSamples.tsx index 779bae0caf..22d4f43a3f 100644 --- a/src/components/RequestSamples/RequestSamples.tsx +++ b/src/components/RequestSamples/RequestSamples.tsx @@ -29,13 +29,16 @@ export class RequestSamples extends React.Component { {hasBodySample && Payload } - {samples.map(sample => {sample.lang})} + {samples.map(sample => ( + + {sample.label !== undefined ? sample.label : sample.lang} + + ))} {hasBodySample && (
- {' '} - {' '} +
)} diff --git a/src/services/models/Operation.ts b/src/services/models/Operation.ts index 797895e27a..c1abcdce49 100644 --- a/src/services/models/Operation.ts +++ b/src/services/models/Operation.ts @@ -4,7 +4,7 @@ import { IMenuItem } from '../MenuStore'; import { GroupModel } from './Group.model'; import { SecurityRequirementModel } from './SecurityRequirement'; -import { OpenAPIExternalDocumentation, OpenAPIServer } from '../../types'; +import { OpenAPIExternalDocumentation, OpenAPIServer, OpenAPIXCodeSample } from '../../types'; import { getOperationSummary, @@ -22,7 +22,7 @@ import { RedocNormalizedOptions } from '../RedocNormalizedOptions'; import { FieldModel } from './Field'; import { RequestBodyModel } from './RequestBody'; import { ResponseModel } from './Response'; -import { CodeSample } from './types'; + /** * Operation model ready to be used by components */ @@ -52,7 +52,7 @@ export class OperationModel implements IMenuItem { path: string; servers: OpenAPIServer[]; security: SecurityRequirementModel[]; - codeSamples: CodeSample[]; + codeSamples: OpenAPIXCodeSample[]; constructor( private parser: OpenAPIParser, diff --git a/src/services/models/index.ts b/src/services/models/index.ts index 14f899f892..65006e79be 100644 --- a/src/services/models/index.ts +++ b/src/services/models/index.ts @@ -9,5 +9,4 @@ export * from './Response'; export * from './Schema'; export * from './Field'; export * from './ApiInfo'; -export * from './types'; export * from './SecuritySchemes'; diff --git a/src/services/models/types.ts b/src/services/models/types.ts deleted file mode 100644 index f91347f7a9..0000000000 --- a/src/services/models/types.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface CodeSample { - lang: string; - source: string; -} diff --git a/src/types/open-api.d.ts b/src/types/open-api.d.ts index 09a778562f..2d6287363f 100644 --- a/src/types/open-api.d.ts +++ b/src/types/open-api.d.ts @@ -59,6 +59,7 @@ export interface OpenAPIPath { export interface OpenAPIXCodeSample { lang: string; + label?: string; source: string; } diff --git a/src/utils/highlight.ts b/src/utils/highlight.ts index 894f003da0..a642e25a15 100644 --- a/src/utils/highlight.ts +++ b/src/utils/highlight.ts @@ -43,6 +43,7 @@ export function mapLang(lang: string): string { * @return highlighted souce code as **html string** */ export function highlight(source: string, lang: string): string { + lang = lang.toLowerCase(); let grammar = Prism.languages[lang]; if (!grammar) { grammar = Prism.languages[mapLang(lang)];