@@ -110,10 +110,17 @@ function playground_text(playground, hidden = true) {
110
110
}
111
111
112
112
function run_rust_code ( code_block ) {
113
- var result_block = code_block . querySelector ( ".result" ) ;
113
+ var result_stderr_block = code_block . querySelector ( ".result.stderr" ) ;
114
+ if ( ! result_stderr_block ) {
115
+ result_stderr_block = document . createElement ( 'code' ) ;
116
+ result_stderr_block . className = 'result stderr hljs nohighlight hidden' ;
117
+
118
+ code_block . append ( result_stderr_block ) ;
119
+ }
120
+ var result_block = code_block . querySelector ( ".result.stdout" ) ;
114
121
if ( ! result_block ) {
115
122
result_block = document . createElement ( 'code' ) ;
116
- result_block . className = 'result hljs language-bash ' ;
123
+ result_block . className = 'result stdout hljs nohighlight ' ;
117
124
118
125
code_block . append ( result_block ) ;
119
126
}
@@ -127,21 +134,27 @@ function playground_text(playground, hidden = true) {
127
134
edition = "2021" ;
128
135
}
129
136
var params = {
130
- version : "stable" ,
131
- optimize : "0 " ,
137
+ backtrace : true ,
138
+ channel : "stable " ,
132
139
code : text ,
133
- edition : edition
140
+ edition : edition ,
141
+ mode : "debug" ,
142
+ tests : false ,
143
+ crateType : "bin" ,
134
144
} ;
135
145
136
146
if ( text . indexOf ( "#![feature" ) !== - 1 ) {
137
147
params . version = "nightly" ;
138
148
}
139
149
140
150
result_block . innerText = "Running..." ;
151
+ // hide stderr block while running
152
+ result_stderr_block . innerText = "" ;
153
+ result_stderr_block . classList . add ( "hidden" ) ;
141
154
142
155
const playgroundModified = isPlaygroundModified ( code_block ) ;
143
156
const startTime = window . performance . now ( ) ;
144
- fetch_with_timeout ( "https://play.rust-lang.org/evaluate.json " , {
157
+ fetch_with_timeout ( "https://play.rust-lang.org/execute " , {
145
158
headers : {
146
159
'Content-Type' : "application/json" ,
147
160
} ,
@@ -158,13 +171,26 @@ function playground_text(playground, hidden = true) {
158
171
"latency" : ( endTime - startTime ) / 1000 ,
159
172
} ) ;
160
173
161
- if ( response . result . trim ( ) === '' ) {
174
+ if ( response . stdout . trim ( ) === '' ) {
162
175
result_block . innerText = "No output" ;
163
176
result_block . classList . add ( "result-no-output" ) ;
164
177
} else {
165
- result_block . innerText = response . result ;
178
+ result_block . innerText = response . stdout ;
166
179
result_block . classList . remove ( "result-no-output" ) ;
167
180
}
181
+
182
+ // trim compile message
183
+ // ====================
184
+ // Compiling playground v0.0.1 (/playground)
185
+ // Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.60s
186
+ // Running `target/debug/playground`
187
+ // ====================
188
+ const compileMsgRegex = / ^ \s + C o m p i l i n g ( .+ ) \s + F i n i s h e d ( .+ ) \s + R u n n i n g ( .+ ) \n / ;
189
+ response . stderr = response . stderr . replace ( compileMsgRegex , "" ) ;
190
+ if ( response . stderr . trim ( ) !== '' ) {
191
+ result_stderr_block . classList . remove ( "hidden" ) ;
192
+ result_stderr_block . innerText = response . stderr ;
193
+ }
168
194
} )
169
195
. catch ( error => {
170
196
const endTime = window . performance . now ( ) ;
0 commit comments