Skip to content

Commit

Permalink
feat(ref): added rpc-parser component to linea ref pages
Browse files Browse the repository at this point in the history
  • Loading branch information
TrofimovAnton85 committed Oct 3, 2024
1 parent f349787 commit ac748c8
Show file tree
Hide file tree
Showing 14 changed files with 217 additions and 280 deletions.
43 changes: 8 additions & 35 deletions services/reference/linea/json-rpc-methods/eth_accounts.mdx
Original file line number Diff line number Diff line change
@@ -1,40 +1,13 @@
---
title: "eth_accounts"
hide_title: true
hide_table_of_contents: true
---

import Tabs from "@theme/Tabs"
import TabItem from "@theme/TabItem"
import ParserOpenRPC from "@site/src/components/ParserOpenRPC"
import { NETWORK_NAMES } from "@site/src/plugins/plugin-json-rpc"

import Description from "/services/reference/_partials/_eth_accounts-description.mdx"

<Description />

## Parameters

import Params from "/services/reference/_partials/_eth_accounts-parameters.mdx"

<Params />

## Returns

import Returns from "/services/reference/_partials/_eth_accounts-returns.mdx"

<Returns />

## Example

import Example from "/services/reference/_partials/_eth_accounts-example.mdx"

<Example />

### Request

import Request from "./_eth_accounts-request.mdx"

<Request />

### Response

import Response from "/services/reference/_partials/_eth_accounts-response.mdx"

<Response />
<ParserOpenRPC
network={NETWORK_NAMES.linea}
method="eth_accounts"
/>
43 changes: 8 additions & 35 deletions services/reference/linea/json-rpc-methods/eth_blocknumber.mdx
Original file line number Diff line number Diff line change
@@ -1,40 +1,13 @@
---
title: "eth_blockNumber"
hide_title: true
hide_table_of_contents: true
---

import Tabs from "@theme/Tabs"
import TabItem from "@theme/TabItem"
import ParserOpenRPC from "@site/src/components/ParserOpenRPC"
import { NETWORK_NAMES } from "@site/src/plugins/plugin-json-rpc"

import Description from "/services/reference/_partials/_eth_blocknumber-description.mdx"

<Description />

## Parameters

import Params from "/services/reference/_partials/_eth_blocknumber-parameters.mdx"

<Params />

## Returns

import Returns from "/services/reference/_partials/_eth_blocknumber-returns.mdx"

<Returns />

## Example

import Example from "/services/reference/_partials/_eth_blocknumber-example.mdx"

<Example />

### Request

import Request from "./_eth_blocknumber-request.mdx"

<Request />

### Response

import Response from "/services/reference/_partials/_eth_blocknumber-response.mdx"

<Response />
<ParserOpenRPC
network={NETWORK_NAMES.linea}
method="eth_blockNumber"
/>
43 changes: 8 additions & 35 deletions services/reference/linea/json-rpc-methods/eth_chainid.mdx
Original file line number Diff line number Diff line change
@@ -1,40 +1,13 @@
---
title: "eth_chainId"
hide_title: true
hide_table_of_contents: true
---

import Tabs from "@theme/Tabs"
import TabItem from "@theme/TabItem"
import ParserOpenRPC from "@site/src/components/ParserOpenRPC"
import { NETWORK_NAMES } from "@site/src/plugins/plugin-json-rpc"

import Description from "/services/reference/_partials/_eth_chainid-description.mdx"

<Description />

## Parameters

import Params from "/services/reference/_partials/_eth_chainid-parameters.mdx"

<Params />

## Returns

import Returns from "/services/reference/_partials/_eth_chainid-returns.mdx"

<Returns />

## Example

import Example from "/services/reference/_partials/_eth_chainid-example.mdx"

<Example />

### Request

import Request from "./_eth_chainid-request.mdx"

<Request />

### Response

import Response from "/services/reference/_partials/_eth_chainid-response.mdx"

<Response />
<ParserOpenRPC
network={NETWORK_NAMES.linea}
method="eth_chainId"
/>
43 changes: 8 additions & 35 deletions services/reference/linea/json-rpc-methods/eth_gasprice.mdx
Original file line number Diff line number Diff line change
@@ -1,40 +1,13 @@
---
title: "eth_gasPrice"
hide_title: true
hide_table_of_contents: true
---

import Tabs from "@theme/Tabs"
import TabItem from "@theme/TabItem"
import ParserOpenRPC from "@site/src/components/ParserOpenRPC"
import { NETWORK_NAMES } from "@site/src/plugins/plugin-json-rpc"

import Description from "/services/reference/_partials/_eth_gasprice-description.mdx"

<Description />

## Parameters

import Params from "/services/reference/_partials/_eth_gasprice-parameters.mdx"

<Params />

## Returns

import Returns from "/services/reference/_partials/_eth_gasprice-returns.mdx"

<Returns />

## Example

import Example from "/services/reference/_partials/_eth_gasprice-example.mdx"

<Example />

### Request

import Request from "./_eth_gasprice-request.mdx"

<Request />

### Response

import Response from "/services/reference/_partials/_eth_gasprice-response.mdx"

<Response />
<ParserOpenRPC
network={NETWORK_NAMES.linea}
method="eth_gasPrice"
/>
Original file line number Diff line number Diff line change
@@ -1,40 +1,13 @@
---
title: "eth_maxPriorityFeePerGas"
hide_title: true
hide_table_of_contents: true
---

import Tabs from "@theme/Tabs"
import TabItem from "@theme/TabItem"
import ParserOpenRPC from "@site/src/components/ParserOpenRPC"
import { NETWORK_NAMES } from "@site/src/plugins/plugin-json-rpc"

import Description from "/services/reference/_partials/_eth_maxpriorityfeepergas-description.mdx"

<Description />

## Parameters

import Params from "/services/reference/_partials/_eth_maxpriorityfeepergas-parameters.mdx"

<Params />

## Returns

import Returns from "/services/reference/_partials/_eth_maxpriorityfeepergas-returns.mdx"

<Returns />

## Example

import Example from "/services/reference/_partials/_eth_maxpriorityfeepergas-example.mdx"

<Example />

### Request

import Request from "./_eth_maxpriorityfeepergas-request.mdx"

<Request />

### Response

import Response from "/services/reference/_partials/_eth_maxpriorityfeepergas-response.mdx"

<Response />
<ParserOpenRPC
network={NETWORK_NAMES.linea}
method="eth_maxPriorityFeePerGas"
/>
43 changes: 8 additions & 35 deletions services/reference/linea/json-rpc-methods/eth_syncing.mdx
Original file line number Diff line number Diff line change
@@ -1,40 +1,13 @@
---
title: "eth_syncing"
hide_title: true
hide_table_of_contents: true
---

import Tabs from "@theme/Tabs"
import TabItem from "@theme/TabItem"
import ParserOpenRPC from "@site/src/components/ParserOpenRPC"
import { NETWORK_NAMES } from "@site/src/plugins/plugin-json-rpc"

import Description from "/services/reference/_partials/_eth_syncing-description.mdx"

<Description />

## Parameters

import Params from "/services/reference/_partials/_eth_syncing-parameters.mdx"

<Params />

## Returns

import Returns from "/services/reference/_partials/_eth_syncing-returns.mdx"

<Returns />

## Example

import Example from "/services/reference/_partials/_eth_syncing-example.mdx"

<Example />

### Request

import Request from "./_eth_syncing-request.mdx"

<Request />

### Response

import Response from "/services/reference/_partials/_eth_syncing-response.mdx"

<Response />
<ParserOpenRPC
network={NETWORK_NAMES.linea}
method="eth_syncing"
/>
62 changes: 34 additions & 28 deletions src/components/ParserOpenRPC/DetailsBox/MDContent.tsx
Original file line number Diff line number Diff line change
@@ -1,50 +1,56 @@
import React from "react";

const parseLists = (content: string) => {
const lines = content.split('\n');
const parseLists = (text: string) => {
const lines = text.split('\n');
let result = '';
let isFirstLevelOpen = false;
let isSecondLevelOpen = false;
let inList = false;
let inSubList = false;

lines.forEach((line) => {
if (line.match(/^ {2}-\s+/)) {
if (!isSecondLevelOpen) {
result += '<ul>';
isSecondLevelOpen = true;
}
result += `<li>${line.trim().substring(4)}</li>`;
} else if (line.match(/^ -\s+/)) {
if (isSecondLevelOpen) {
result += '</ul>';
isSecondLevelOpen = false;
const trimmed = line.trim();
const isListItem = trimmed.startsWith('- ');
const isSubListItem = line.startsWith(' - ');

if (isListItem && !isSubListItem) {
if (!inList) {
result += '<ul>\n';
inList = true;
} else if (inSubList) {
result += '</ul>\n';
inSubList = false;
}
if (!isFirstLevelOpen) {
result += '<ul>';
isFirstLevelOpen = true;
result += `<li>${trimmed.slice(2).trim()}</li>\n`;
} else if (isSubListItem) {
if (!inSubList) {
result = result.replace(/<\/li>\n$/, '');
result += '<ul>\n';
inSubList = true;
}
result += `<li>${line.trim().substring(2)}</li>`;
result += `<li>${trimmed.slice(4).trim()}</li>\n`;
} else {
if (isSecondLevelOpen) {
result += '</ul>';
isSecondLevelOpen = false;
if (inSubList) {
result += '</ul>\n';
inSubList = false;
}
if (isFirstLevelOpen) {
result += '</ul>';
isFirstLevelOpen = false;
if (inList) {
result += '</ul>\n';
inList = false;
}
result += line;
result += `${line}\n`;
}
});
if (isSecondLevelOpen) result += '</ul>';
if (isFirstLevelOpen) result += '</ul>';
if (inSubList) result += '</ul>\n';
if (inList) result += '</ul>\n';
return result;
};
}

const parseMarkdown = (content: string) => {
return parseLists(
content
.replace(/\[(.*?)\]\((.*?)\)/g, '<a href="$2">$1</a>')
.replace(/`(.*?)`/g, '<code>$1</code>')
.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>')
.replace(/\*(.*?)\*/g, '<em>$1</em>')
);
};

Expand Down
8 changes: 8 additions & 0 deletions src/components/ParserOpenRPC/DetailsBox/RenderParams.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@ const renderSchema = (schemaItem, schemas, name) => {
</div>
);

if (schemaItem?.schema?.oneOf) return renderCombinations(schemaItem.schema, name, "oneOf");
if (schemaItem?.schema?.allOf) return renderCombinations(schemaItem.schema, name, "allOf");
if (schemaItem?.schema?.anyOf) return renderCombinations(schemaItem.schema, name, "anyOf");

if (schemaItem.oneOf) return renderCombinations(schemaItem, name, "oneOf");
if (schemaItem.allOf) return renderCombinations(schemaItem, name, "allOf");
if (schemaItem.anyOf) return renderCombinations(schemaItem, name, "anyOf");
Expand Down Expand Up @@ -184,5 +188,9 @@ export const renderParamSchemas = (inputSchema, schemas) => {
};

export const renderResultSchemas = (inputSchema, schemas) => {
const customResult = inputSchema?.schema?.maxPriorityFeePerGas;
if (customResult) {
return <>{renderSchema(customResult, schemas, inputSchema.name)}</>
}
return <>{renderSchema(inputSchema, schemas, inputSchema.name)}</>;
};
Loading

0 comments on commit ac748c8

Please sign in to comment.