File tree 5 files changed +178
-25
lines changed
5 files changed +178
-25
lines changed Original file line number Diff line number Diff line change @@ -13,7 +13,10 @@ import ConditionalBanner from "./components/ConditionalBanner";
13
13
14
14
function App ( ) {
15
15
const [ section , setSection ] = useState ( "1" ) ;
16
- const [ file , setFile ] = useState ( "hello.py" ) ;
16
+ const [ file , setFile ] = useState ( ( ) => {
17
+ const params = new URLSearchParams ( window . location . search ) ;
18
+ return params . get ( "event" ) === "bisc" ? "ex.py" : "hello.py" ;
19
+ } ) ;
17
20
const [ fileLength , setFileLength ] = useState ( 928 ) ;
18
21
const [ position , setPosition ] = useState ( { x : 0 , y : 0 } ) ;
19
22
const [ daynight , setdaynight ] = useState ( 1 ) ;
Original file line number Diff line number Diff line change @@ -14,13 +14,64 @@ export default function AutoCompletion({
14
14
} ) {
15
15
const [ comp , setComp ] = useState ( [ ] ) ;
16
16
const [ autoIndex , setAutoIndex ] = useState ( 0 ) ;
17
+ const cKeyword = [
18
+ "auto" ,
19
+ "break" ,
20
+ "case" ,
21
+ "char" ,
22
+ "const" ,
23
+ "continue" ,
24
+ "default" ,
25
+ "do" ,
26
+ "double" ,
27
+ "else" ,
28
+ "enum" ,
29
+ "extern" ,
30
+ "float" ,
31
+ "for" ,
32
+ "goto" ,
33
+ "if" ,
34
+ "inline" ,
35
+ "int" ,
36
+ "long" ,
37
+ "register" ,
38
+ "return" ,
39
+ "short" ,
40
+ "signed" ,
41
+ "sizeof" ,
42
+ "static" ,
43
+ "struct" ,
44
+ "switch" ,
45
+ "typedef" ,
46
+ "union" ,
47
+ "unsigned" ,
48
+ "void" ,
49
+ "volatile" ,
50
+ "while" ,
51
+ "#include" ,
52
+ "#define" ,
53
+ "#ifndef" ,
54
+ "#endif" ,
55
+ "NULL" ,
56
+ "malloc" ,
57
+ "free" ,
58
+ "printf" ,
59
+ "scanf" ,
60
+ "main" ,
61
+ "stdio.h" ,
62
+ "stdlib.h" ,
63
+ "string.h" ,
64
+ ] ;
65
+
17
66
const pyKeyword = [
18
67
"False" ,
19
68
"None" ,
20
69
"True" ,
21
70
"and" ,
22
71
"as" ,
23
72
"assert" ,
73
+ "async" ,
74
+ "await" ,
24
75
"break" ,
25
76
"class" ,
26
77
"continue" ,
@@ -48,6 +99,24 @@ export default function AutoCompletion({
48
99
"while" ,
49
100
"with" ,
50
101
"yield" ,
102
+ "self" ,
103
+ "__init__" ,
104
+ "print" ,
105
+ "len" ,
106
+ "range" ,
107
+ "list" ,
108
+ "dict" ,
109
+ "set" ,
110
+ "tuple" ,
111
+ "str" ,
112
+ "int" ,
113
+ "float" ,
114
+ "bool" ,
115
+ "input" ,
116
+ "open" ,
117
+ "append" ,
118
+ "extend" ,
119
+ "remove" ,
51
120
] ;
52
121
53
122
const javaKeyword = [
@@ -91,37 +160,49 @@ export default function AutoCompletion({
91
160
"static" ,
92
161
"super" ,
93
162
"switch" ,
163
+ "synchronized" ,
94
164
"this" ,
95
165
"throw" ,
96
166
"throws" ,
167
+ "transient" ,
97
168
"try" ,
98
169
"void" ,
170
+ "volatile" ,
99
171
"while" ,
100
172
"true" ,
101
173
"false" ,
174
+ "null" ,
175
+ "String" ,
176
+ "System" ,
177
+ "println" ,
178
+ "ArrayList" ,
179
+ "HashMap" ,
180
+ "Override" ,
102
181
] ;
103
182
104
183
const jsKeyword = [
105
184
"abstract" ,
106
185
"arguments" ,
107
- "await* " ,
186
+ "await" ,
108
187
"boolean" ,
109
188
"break" ,
110
189
"byte" ,
111
190
"case" ,
112
191
"catch" ,
113
192
"char" ,
114
- "class* " ,
193
+ "class" ,
115
194
"const" ,
116
195
"continue" ,
117
196
"debugger" ,
118
197
"default" ,
119
198
"delete" ,
120
- "dodouble" ,
199
+ "do" ,
200
+ "double" ,
121
201
"else" ,
122
- "enum*" ,
123
- "evalexport*" ,
124
- "extends*" ,
202
+ "enum" ,
203
+ "eval" ,
204
+ "export" ,
205
+ "extends" ,
125
206
"false" ,
126
207
"final" ,
127
208
"finally" ,
@@ -131,12 +212,12 @@ export default function AutoCompletion({
131
212
"goto" ,
132
213
"if" ,
133
214
"implements" ,
134
- "import* " ,
215
+ "import" ,
135
216
"in" ,
136
217
"instanceof" ,
137
218
"int" ,
138
219
"interface" ,
139
- "let* " ,
220
+ "let" ,
140
221
"long" ,
141
222
"native" ,
142
223
"new" ,
@@ -148,7 +229,7 @@ export default function AutoCompletion({
148
229
"return" ,
149
230
"short" ,
150
231
"static" ,
151
- "super* " ,
232
+ "super" ,
152
233
"switch" ,
153
234
"synchronized" ,
154
235
"this" ,
@@ -159,10 +240,22 @@ export default function AutoCompletion({
159
240
"try" ,
160
241
"typeof" ,
161
242
"var" ,
162
- "voidvolatile" ,
243
+ "void" ,
244
+ "volatile" ,
163
245
"while" ,
164
246
"with" ,
165
247
"yield" ,
248
+ "async" ,
249
+ "document" ,
250
+ "window" ,
251
+ "console" ,
252
+ "map" ,
253
+ "filter" ,
254
+ "reduce" ,
255
+ "Promise" ,
256
+ "async" ,
257
+ "fetch" ,
258
+ "addEventListener" ,
166
259
] ;
167
260
168
261
const supportLangList = {
@@ -195,12 +288,14 @@ export default function AutoCompletion({
195
288
} , [ keyEvent ] ) ;
196
289
197
290
useEffect ( ( ) => {
198
- if ( autoWord . length !== 0 ) {
291
+ if ( autoWord . length !== 0 && file ) {
292
+ // file 존재 여부 체크 추가
199
293
const extension = file . split ( "." ) ;
200
294
setComp (
201
- supportLangList [ extension [ extension . length - 1 ] ] . filter ( ( keyword ) => {
295
+ supportLangList [ extension [ extension . length - 1 ] ] ?. filter ( ( keyword ) => {
296
+ // optional chaining 추가
202
297
return autoWord . join ( "" ) == keyword . substring ( 0 , autoWord . length ) ;
203
- } )
298
+ } ) || [ ] // fallback 배열 추가
204
299
) ;
205
300
} else {
206
301
setComp ( [ ] ) ;
Original file line number Diff line number Diff line change @@ -3,18 +3,40 @@ import Debug from "./Debug";
3
3
import LeaderBoard from "./LeaderBoard" ;
4
4
import IconGenerator from "./IconGenerator" ;
5
5
export default function Sidebar ( props ) {
6
- const [ filestate , setFilestate ] = useState ( "hello.py" ) ;
7
- const filename = [
8
- "hello.py" ,
9
- "test.java" ,
10
- "server.js" ,
11
- "RectangleArea.java" ,
12
- "say_hello.py" ,
13
- "Example.java" ,
14
- "Fibonacci.java" ,
15
- ] ;
6
+ const [ filestate , setFilestate ] = useState ( ( ) => {
7
+ const params = new URLSearchParams ( window . location . search ) ;
8
+ return params . get ( "event" ) === "bisc" ? "ex.py" : "hello.py" ;
9
+ } ) ;
10
+
11
+ const [ isEventMode , setIsEventMode ] = useState ( false ) ;
12
+
16
13
useEffect ( ( ) => {
17
- if ( props . section === "1" ) {
14
+ const params = new URLSearchParams ( window . location . search ) ;
15
+ const event = params . get ( "event" ) ;
16
+ setIsEventMode ( event ?. toLowerCase ( ) === "bisc" ) ;
17
+ } , [ ] ) ;
18
+
19
+ const filename = isEventMode
20
+ ? [ "ex.py" , "print.c" , "sha256.java" ]
21
+ : [
22
+ "hello.py" ,
23
+ "test.java" ,
24
+ "server.js" ,
25
+ "RectangleArea.java" ,
26
+ "say_hello.py" ,
27
+ "Example.java" ,
28
+ "Fibonacci.java" ,
29
+ ] ;
30
+
31
+ useEffect ( ( ) => {
32
+ if ( props . section === "1" && isEventMode ) {
33
+ setFilestate ( filestate ) ;
34
+ props . setFile ( filestate ) ;
35
+ }
36
+ } , [ props . section ] ) ;
37
+
38
+ useEffect ( ( ) => {
39
+ if ( props . section === "1" && ! isEventMode ) {
18
40
setFilestate ( filestate ) ;
19
41
props . setFile ( filestate ) ;
20
42
} else if ( props . section === "2" ) {
Original file line number Diff line number Diff line change 1
1
const getFilecontents = ( filename ) => {
2
2
switch ( filename ) {
3
+ case "ex.py" :
4
+ return {
5
+ content : `from pwn import *
6
+ p = remote("bisc", 4444)
7
+ payload = b"A" * 0x40
8
+ payload += p32(0xdeadbeef)
9
+ p.sendline(payload)
10
+ p.interactive()` . split ( "" ) ,
11
+ colormap : "" ,
12
+ } ;
13
+ case "print.c" :
14
+ return {
15
+ content : `#include <stdio.h>
16
+ int main() {
17
+ printf("welcome to bisc\\n")
18
+ puts("WELCOME TO BISC\\n");
19
+ write(1, "wELcOmE tO BisC\\n", 17);
20
+ return 0;
21
+ }` . split ( "" ) ,
22
+ colormap : "" ,
23
+ } ;
24
+ case "sha256.java" :
25
+ return {
26
+ content : `public class HashPassword {
27
+ public static void main(String[] args) throws Exception {
28
+ String password = "bisc";
29
+ MessageDigest md = MessageDigest.getInstance("SHA-256");
30
+ byte[] hash = md.digest(password.getBytes());
31
+ System.out.printf("%064x%n", new java.math.BigInteger(1, hash));
32
+ }
33
+ }` . split ( "" ) ,
34
+ colormap : "" ,
35
+ } ;
3
36
case "RectangleArea.java" :
4
37
return {
5
38
content : [
You can’t perform that action at this time.
0 commit comments