Skip to content

Commit 53c5737

Browse files
authored
feat(instructions): improve example styles, update specs, support instruction doc links (#144)
1 parent 6ca61af commit 53c5737

File tree

11 files changed

+7872
-1111
lines changed

11 files changed

+7872
-1111
lines changed

src/features/spec/gen/tvm-specification.json

Lines changed: 7265 additions & 791 deletions
Large diffs are not rendered by default.

src/features/spec/tvm-specification.types.ts

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ export interface Instruction {
2525
readonly control_flow?: ControlFlowOfInstruction
2626
}
2727

28+
export interface GasConsumptionEntry {
29+
readonly value: number
30+
readonly description: string
31+
}
32+
2833
export enum Category {
2934
Arithmetic = "arithmetic",
3035
Cell = "cell",
@@ -61,31 +66,46 @@ export enum SubCategory {
6166
Tuple = "tuple",
6267
}
6368

69+
export interface ExitCode {
70+
readonly errno: string
71+
readonly condition: string
72+
}
73+
74+
export interface ExampleInstruction {
75+
readonly instruction: string
76+
readonly comment?: string
77+
readonly is_main?: boolean
78+
}
79+
80+
export interface ExampleStack {
81+
readonly input: readonly string[]
82+
readonly output: readonly string[]
83+
}
84+
85+
export interface Example {
86+
readonly instructions: readonly ExampleInstruction[]
87+
readonly stack: ExampleStack
88+
readonly exit_code?: number
89+
}
90+
6491
export interface Description {
65-
short: string
66-
long: string
67-
doc_links?: DocLinks
68-
tags?: Tag[]
69-
exit_codes?: Array<{errno: string; condition: string}>
70-
examples?: Array<{
71-
instructions: Array<{instruction: string; comment?: string; is_main?: boolean}>
72-
stack: {input: string[]; output: string[]}
73-
exit_code?: number
74-
other_implementations?: {
75-
exact: boolean
76-
instructions: string[]
77-
}[]
78-
}>
79-
other_implementations?: {
80-
exact: boolean
81-
instructions: string[]
92+
readonly short: string
93+
readonly long: string
94+
readonly tags?: Tag[]
95+
readonly exit_codes?: ExitCode[]
96+
readonly examples?: Example[]
97+
readonly other_implementations?: {
98+
readonly exact: boolean
99+
readonly instructions: string[]
82100
}[]
83-
operands: string[]
101+
readonly operands: readonly string[]
102+
readonly gas?: readonly GasConsumptionEntry[]
103+
readonly docs_links?: readonly DocsLink[]
84104
}
85105

86-
export interface DocLinks {
87-
"accept_message effects"?: string
88-
"Low-level fees overview"?: string
106+
export interface DocsLink {
107+
readonly name: string
108+
readonly url: string
89109
}
90110

91111
export enum Tag {

src/index.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,11 @@
207207
--table-code-bg-color: var(--color-background-input);
208208
--table-code-text-color: var(--color-text-primary);
209209

210+
/* Code syntax highlighting */
211+
--syntax-keyword: #0033b3;
212+
--syntax-number: #1750eb;
213+
--syntax-comment: #8c8c8c;
214+
210215
--tracepage-logo-main-color: #000000;
211216
--tracepage-logo-gradient-start: #4a69e0;
212217
--tracepage-logo-gradient-end: #3690fd;
@@ -412,6 +417,11 @@
412417
--table-code-bg-color: var(--color-background-input);
413418
--table-code-text-color: var(--color-text-primary);
414419

420+
/* Code syntax highlighting */
421+
--syntax-keyword: #749ded;
422+
--syntax-number: #b5cea8;
423+
--syntax-comment: #6a9955;
424+
415425
--tracepage-logo-main-color: var(--color-text-primary);
416426
--tracepage-logo-gradient-start: #4a69e0;
417427
--tracepage-logo-gradient-end: #3690fd;

src/pages/InstructionsPage/InstructionsPage.module.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
flex-direction: column;
2828
width: calc(100% - var(--spacing-sm) * 2);
2929
min-height: 0;
30-
overflow: hidden;
3130
gap: var(--spacing-sm);
3231
padding: 0 var(--spacing-sm) var(--spacing-sm) var(--spacing-sm);
3332
flex-grow: 1;
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
.exampleItem {
2+
margin-bottom: 0;
3+
padding: var(--spacing-md);
4+
border: 1px solid var(--color-border);
5+
border-radius: var(--border-radius-md);
6+
background-color: var(--background-color);
7+
display: flex;
8+
flex-direction: column;
9+
min-width: 0;
10+
}
11+
12+
.exampleItemError {
13+
background-color: var(--color-error-bg-light);
14+
}
15+
16+
.exampleErrorHeader {
17+
margin-bottom: var(--spacing-sm);
18+
border-radius: calc(var(--border-radius-md) / 2);
19+
color: var(--color-text-primary);
20+
display: flex;
21+
align-items: center;
22+
gap: var(--spacing-sm);
23+
flex-wrap: wrap;
24+
}
25+
26+
.errorIcon {
27+
font-size: var(--font-size-lg);
28+
color: #c62828;
29+
display: flex;
30+
align-items: center;
31+
}
32+
33+
.errorConditionText {
34+
margin: 0;
35+
font-size: var(--font-size-sm);
36+
color: var(--color-text-secondary);
37+
width: 100%;
38+
padding-top: var(--spacing-xs);
39+
}
40+
41+
.errorConditionText p {
42+
display: inline;
43+
margin: 0;
44+
}
45+
46+
.exampleInstructions {
47+
margin-bottom: var(--spacing-sm);
48+
}
49+
50+
.codeBlockContainer {
51+
position: relative;
52+
}
53+
54+
.codeBlock {
55+
background-color: var(--color-background-secondary);
56+
padding: var(--spacing-sm);
57+
margin: 0 0 var(--spacing-sm) 0;
58+
border-radius: calc(var(--border-radius-md) / 2);
59+
font-family: var(--font-family-mono), monospace;
60+
font-size: var(--font-size-sm);
61+
overflow-x: scroll;
62+
overflow-y: visible;
63+
white-space: pre;
64+
}
65+
66+
.codeBlock code {
67+
font-family: inherit;
68+
font-size: inherit;
69+
}
70+
71+
.codeBlock .comment {
72+
color: var(--color-text-tertiary);
73+
font-style: italic;
74+
}
75+
76+
.codeBlock .preparatoryComment {
77+
color: var(--color-text-secondary);
78+
font-style: italic;
79+
}
80+
81+
.exampleStack {
82+
display: grid;
83+
grid-template-columns: 1fr 1fr;
84+
gap: var(--spacing-md);
85+
}
86+
87+
.exampleStructTitle {
88+
margin: 0;
89+
color: var(--color-text-secondary);
90+
}
91+
92+
.preparatoryInstruction code {
93+
color: var(--color-text-secondary);
94+
}
95+
96+
.stackDisplayContainer {
97+
margin-top: var(--spacing-xs);
98+
}
99+
100+
.playgroundLink {
101+
display: inline-flex;
102+
/*position: absolute;*/
103+
align-items: center;
104+
gap: var(--spacing-sms);
105+
color: var(--color-text-secondary) !important;
106+
text-decoration: none;
107+
font-size: var(--font-size-xs);
108+
border-radius: var(--border-radius-sm);
109+
transition: color var(--transition-duration-fast);
110+
margin-top: var(--spacing-mds);
111+
margin-bottom: -4px;
112+
margin-left: 2px;
113+
right: 0;
114+
opacity: 0.7;
115+
}
116+
117+
.playgroundLink:hover {
118+
color: var(--color-text-primary) !important;
119+
opacity: 0.8;
120+
}
121+
122+
.playIcon {
123+
font-size: var(--font-size-xss);
124+
}

0 commit comments

Comments
 (0)