Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions packages/components/src/components/readme/Installation.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
import { Text } from '@asyncapi/generator-react-sdk';

export function Installation() {
const installCommands = {
python: 'pip install -r requirements.txt',
javascript: 'npm install',
};

export function Installation({ language }) {
const command = installCommands[language];
return (
<Text newLines={2}>
{`## Installation

Install dependencies:

\`\`\`bash
pip install -r requirements.txt
${command}
\`\`\`
`}
</Text>
Expand Down
40 changes: 34 additions & 6 deletions packages/components/src/components/readme/MessageExamples.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,38 @@
import { getMessageExamples, getOperationMessages } from '@asyncapi/generator-helpers';
import { getMessageExamples, getOperationMessages, toSnakeCase } from '@asyncapi/generator-helpers';
import { Text } from '@asyncapi/generator-react-sdk';

const exampleTemplate = (operationId, payload) => `
**Example:**
\`\`\`javascript
client.${operationId}(${JSON.stringify(payload, null, 2)});
const languageConfig = {
javascript: {
label: 'JavaScript',
codeBlock: 'javascript'
},
python: {
label: 'Python',
codeBlock: 'python'
}
};
/**
* Renders a code example for a specific language.
* @param {Object} languageConfig - Language configuration object containing label and codeBlock properties.
* @param {string} languageConfig.label - Display label for the language (e.g., 'JavaScript', 'Python').
* @param {string} languageConfig.codeBlock - Code block identifier for syntax highlighting.
* @param {string} operationId - The operation identifier.
* @param {Object} payload - The example payload to be stringified.
* @returns {string} Formatted markdown string containing the language-specific code example.
*/
function renderExample({ label, codeBlock }, operationId, payload) {
const opId =
codeBlock === 'python'
? toSnakeCase(operationId)
: operationId;

return `
**Example (${label}):**
\`\`\`${codeBlock}
client.${opId}(${JSON.stringify(payload, null, 2)})
\`\`\`
`;
}

export default function MessageExamples({ operation }) {
const operationId = operation.id();
Expand All @@ -17,7 +43,9 @@ export default function MessageExamples({ operation }) {
const examples = getMessageExamples(message) || [];
examples.forEach((example) => {
const payload = example.payload();
messageExamples.push(exampleTemplate(operationId, payload));
Object.values(languageConfig).forEach((language) => {
messageExamples.push(renderExample(language, operationId, payload));
});
});
});

Expand Down
8 changes: 3 additions & 5 deletions packages/components/src/components/readme/Readme.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,20 @@ export function Readme({ asyncapi, params, language }) {
const title = getTitle(asyncapi);
const serverUrl = getServerUrl(server);

const includeInstallation = language === 'python';
const includeAvailableOps = language === 'javascript';
const operations = includeAvailableOps ? asyncapi.operations().all() : [];
const operations = asyncapi.operations().all();

return (
<File name="README.md">
<Text newLines={2}>{`# ${title}`}</Text>
<Overview info={info} title={title} serverUrl={serverUrl} />
{includeInstallation && <Installation />}
<Installation language={language}/>
<Usage
clientName={clientName}
clientFileName={params.clientFileName}
language={language}
/>
<CoreMethods language={language} />
{includeAvailableOps && <AvailableOperations operations={operations} />}
{operations.length > 0 && <AvailableOperations operations={operations} />}
</File>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,15 @@ This is a description without a summary
One message with one example


**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.oneMessageExample(\\"test\\");
client.oneMessageExample(\\"test\\")
\`\`\`


**Example (Python):**
\`\`\`python
client.one_message_example(\\"test\\")
\`\`\`


Expand All @@ -35,9 +41,15 @@ client.oneMessageExample(\\"test\\");



**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.noSummaryNoDescriptionOperations(\\"test\\");
client.noSummaryNoDescriptionOperations(\\"test\\")
\`\`\`


**Example (Python):**
\`\`\`python
client.no_summary_no_description_operations(\\"test\\")
\`\`\`


Expand All @@ -47,21 +59,39 @@ client.noSummaryNoDescriptionOperations(\\"test\\");
Multiple messages with examples


**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.multipleExamples(\\"test\\");
client.multipleExamples(\\"test\\")
\`\`\`


**Example (Python):**
\`\`\`python
client.multiple_examples(\\"test\\")
\`\`\`


**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.multipleExamples(false);
client.multipleExamples(false)
\`\`\`


**Example:**
**Example (Python):**
\`\`\`python
client.multiple_examples(false)
\`\`\`


**Example (JavaScript):**
\`\`\`javascript
client.multipleExamples(123);
client.multipleExamples(123)
\`\`\`


**Example (Python):**
\`\`\`python
client.multiple_examples(123)
\`\`\`


Expand All @@ -72,27 +102,51 @@ Mixed message example coverage
An example of a send operation with multiple message with examples


**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.mixedMessageExamples(\\"test\\");
client.mixedMessageExamples(\\"test\\")
\`\`\`


**Example (Python):**
\`\`\`python
client.mixed_message_examples(\\"test\\")
\`\`\`


**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.mixedMessageExamples(\\"test\\");
client.mixedMessageExamples(\\"test\\")
\`\`\`


**Example (Python):**
\`\`\`python
client.mixed_message_examples(\\"test\\")
\`\`\`


**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.mixedMessageExamples(false);
client.mixedMessageExamples(false)
\`\`\`


**Example:**
**Example (Python):**
\`\`\`python
client.mixed_message_examples(false)
\`\`\`


**Example (JavaScript):**
\`\`\`javascript
client.mixedMessageExamples(123);
client.mixedMessageExamples(123)
\`\`\`


**Example (Python):**
\`\`\`python
client.mixed_message_examples(123)
\`\`\`


Expand Down
Original file line number Diff line number Diff line change
@@ -1,46 +1,88 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`Testing MessageExamples component Test operation with multiple examples 1`] = `
"**Example:**
"**Example (JavaScript):**
\`\`\`javascript
client.multipleExamples(\\"test\\");
client.multipleExamples(\\"test\\")
\`\`\`


**Example:**
**Example (Python):**
\`\`\`python
client.multiple_examples(\\"test\\")
\`\`\`


**Example (JavaScript):**
\`\`\`javascript
client.multipleExamples(false);
client.multipleExamples(false)
\`\`\`


**Example (Python):**
\`\`\`python
client.multiple_examples(false)
\`\`\`


**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.multipleExamples(123);
client.multipleExamples(123)
\`\`\`


**Example (Python):**
\`\`\`python
client.multiple_examples(123)
\`\`\`"
`;

exports[`Testing MessageExamples component Test operation with multiple messages and multiple examples 1`] = `
"**Example:**
"**Example (JavaScript):**
\`\`\`javascript
client.mixedMessageExamples(\\"test\\");
client.mixedMessageExamples(\\"test\\")
\`\`\`


**Example (Python):**
\`\`\`python
client.mixed_message_examples(\\"test\\")
\`\`\`


**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.mixedMessageExamples(\\"test\\");
client.mixedMessageExamples(\\"test\\")
\`\`\`


**Example:**
**Example (Python):**
\`\`\`python
client.mixed_message_examples(\\"test\\")
\`\`\`


**Example (JavaScript):**
\`\`\`javascript
client.mixedMessageExamples(false);
client.mixedMessageExamples(false)
\`\`\`


**Example (Python):**
\`\`\`python
client.mixed_message_examples(false)
\`\`\`


**Example:**
**Example (JavaScript):**
\`\`\`javascript
client.mixedMessageExamples(123);
client.mixedMessageExamples(123)
\`\`\`


**Example (Python):**
\`\`\`python
client.mixed_message_examples(123)
\`\`\`"
`;

Expand All @@ -49,8 +91,14 @@ exports[`Testing MessageExamples component Test operation with no message exampl
exports[`Testing MessageExamples component Test operation with no messages 1`] = `""`;

exports[`Testing MessageExamples component Test operation with one example 1`] = `
"**Example:**
"**Example (JavaScript):**
\`\`\`javascript
client.oneMessageExample(\\"test\\");
client.oneMessageExample(\\"test\\")
\`\`\`


**Example (Python):**
\`\`\`python
client.one_message_example(\\"test\\")
\`\`\`"
`;
Loading