├── .gitignore ├── LICENSE ├── alphabet.js ├── fonts ├── gameboy.js ├── led7.js ├── mario.js └── portable_vengeance.js ├── index.js ├── package.json ├── patterns └── space-invaders.json └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | spray-* 2 | node_modules 3 | .idea -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Annihil 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /alphabet.js: -------------------------------------------------------------------------------- 1 | const alphabet = {}; 2 | alphabet.a = [ 3 | ' ', 4 | '11111', 5 | '1 1', 6 | '11111', 7 | '1 1', 8 | '1 1', 9 | ' ' 10 | ]; 11 | alphabet.b = [ 12 | ' ', 13 | '1111 ', 14 | '1 1', 15 | '11111', 16 | '1 1', 17 | '1111 ', 18 | ' ' 19 | ]; 20 | alphabet.c = [ 21 | ' ', 22 | '11111', 23 | '1 ', 24 | '1 ', 25 | '1 ', 26 | '11111', 27 | ' ' 28 | ]; 29 | alphabet.d = [ 30 | ' ', 31 | '1111 ', 32 | '1 1', 33 | '1 1', 34 | '1 1', 35 | '1111 ', 36 | ' ' 37 | ]; 38 | alphabet.e = [ 39 | ' ', 40 | '11111', 41 | '1 ', 42 | '11111', 43 | '1 ', 44 | '11111', 45 | ' ' 46 | ]; 47 | alphabet.f = [ 48 | ' ', 49 | '11111', 50 | '1 ', 51 | '1111 ', 52 | '1 ', 53 | '1 ', 54 | ' ' 55 | ]; 56 | alphabet.g = [ 57 | ' ', 58 | '11111', 59 | '1 ', 60 | '1 111', 61 | '1 1', 62 | '11111', 63 | ' ' 64 | ]; 65 | alphabet.h = [ 66 | ' ', 67 | '1 1', 68 | '1 1', 69 | '11111', 70 | '1 1', 71 | '1 1', 72 | ' ' 73 | ]; 74 | alphabet.i = [ 75 | ' ', 76 | '11111', 77 | ' 1 ', 78 | ' 1 ', 79 | ' 1 ', 80 | '11111', 81 | ' ' 82 | ]; 83 | alphabet.j = [ 84 | ' ', 85 | '1111', 86 | ' 1 ', 87 | ' 1 ', 88 | '1 1 ', 89 | '111 ', 90 | ' ' 91 | ]; 92 | alphabet.k = [ 93 | ' ', 94 | '1 1', 95 | '1 1 ', 96 | '11 ', 97 | '1 1 ', 98 | '1 1', 99 | ' ' 100 | ]; 101 | alphabet.l = [ 102 | ' ', 103 | '1 ', 104 | '1 ', 105 | '1 ', 106 | '1 ', 107 | '11111', 108 | ' ' 109 | ]; 110 | alphabet.m = [ 111 | ' ', 112 | '1 1', 113 | '11 11', 114 | '1 1 1', 115 | '1 1', 116 | '1 1', 117 | ' ' 118 | ]; 119 | alphabet.n = [ 120 | ' ', 121 | '1 1', 122 | '11 1', 123 | '1 1 1', 124 | '1 11', 125 | '1 1', 126 | ' ' 127 | ]; 128 | alphabet.o = [ 129 | ' ', 130 | '11111', 131 | '1 1', 132 | '1 1', 133 | '1 1', 134 | '11111', 135 | ' ' 136 | ]; 137 | alphabet.p = [ 138 | ' ', 139 | '11111', 140 | '1 1', 141 | '11111', 142 | '1 ', 143 | '1 ', 144 | ' ' 145 | ]; 146 | alphabet.q = [ 147 | ' ', 148 | '11111', 149 | '1 1', 150 | '1 1', 151 | '1 11', 152 | '11111', 153 | ' ' 154 | ]; 155 | alphabet.r = [ 156 | ' ', 157 | '11111', 158 | '1 1', 159 | '11111', 160 | '1 1 ', 161 | '1 1', 162 | ' ' 163 | ]; 164 | alphabet.s = [ 165 | ' ', 166 | '11111', 167 | '1 ', 168 | '11111', 169 | ' 1', 170 | '11111', 171 | ' ' 172 | ]; 173 | alphabet.t = [ 174 | ' ', 175 | '11111', 176 | ' 1 ', 177 | ' 1 ', 178 | ' 1 ', 179 | ' 1 ', 180 | ' ' 181 | ]; 182 | alphabet.u = [ 183 | ' ', 184 | '1 1', 185 | '1 1', 186 | '1 1', 187 | '1 1', 188 | '11111', 189 | ' ' 190 | ]; 191 | alphabet.v = [ 192 | ' ', 193 | '1 1', 194 | '1 1', 195 | ' 1 1 ', 196 | ' 1 1 ', 197 | ' 1 ', 198 | ' ' 199 | ]; 200 | alphabet.w = [ 201 | ' ', 202 | '1 1', 203 | '1 1', 204 | '1 1', 205 | '1 1 1', 206 | '11 11', 207 | ' ' 208 | ]; 209 | alphabet.x = [ 210 | ' ', 211 | '1 1', 212 | ' 1 1 ', 213 | ' 1 ', 214 | ' 1 1 ', 215 | '1 1', 216 | ' ' 217 | ]; 218 | alphabet.y = [ 219 | ' ', 220 | '1 1', 221 | ' 1 1 ', 222 | ' 1 ', 223 | ' 1 ', 224 | ' 1 ', 225 | ' ' 226 | ]; 227 | alphabet.z = [ 228 | ' ', 229 | '11111', 230 | ' 1 ', 231 | ' 1 ', 232 | ' 1 ', 233 | '11111', 234 | ' ' 235 | ]; 236 | alphabet['0'] = [ 237 | ' ', 238 | ' 111 ', 239 | '1 1', 240 | '1 1', 241 | '1 1', 242 | ' 111 ', 243 | ' ' 244 | ]; 245 | alphabet['1'] = [ 246 | ' ', 247 | '11', 248 | ' 1', 249 | ' 1', 250 | ' 1', 251 | ' 1', 252 | ' ' 253 | ]; 254 | alphabet['2'] = [ 255 | ' ', 256 | ' 111 ', 257 | '1 1', 258 | ' 1 ', 259 | ' 1 ', 260 | '11111', 261 | ' ' 262 | ]; 263 | alphabet['3'] = [ 264 | ' ', 265 | '11111', 266 | ' 1', 267 | ' 111', 268 | ' 1', 269 | '11111', 270 | ' ' 271 | ]; 272 | alphabet['4'] = [ 273 | ' ', 274 | '1 1', 275 | '1 1', 276 | '11111', 277 | ' 1', 278 | ' 1', 279 | ' ' 280 | ]; 281 | alphabet['5'] = [ 282 | ' ', 283 | ' 1111', 284 | '1 ', 285 | '11111', 286 | ' 1', 287 | '11111', 288 | ' ' 289 | ]; 290 | alphabet['6'] = [ 291 | ' ', 292 | '11111', 293 | '1 ', 294 | '11111', 295 | '1 1', 296 | '11111', 297 | ' ' 298 | ]; 299 | alphabet['7'] = [ 300 | ' ', 301 | '11111', 302 | ' 1', 303 | ' 1 ', 304 | ' 1 ', 305 | '1 ', 306 | ' ' 307 | ]; 308 | alphabet['8'] = [ 309 | ' ', 310 | '11111', 311 | '1 1', 312 | ' 111 ', 313 | '1 1', 314 | '11111', 315 | ' ' 316 | ]; 317 | alphabet['9'] = [ 318 | ' ', 319 | '11111', 320 | '1 1', 321 | '11111', 322 | ' 1', 323 | '11111', 324 | ' ' 325 | ]; 326 | alphabet['-'] = [ 327 | ' ', 328 | ' ', 329 | ' ', 330 | ' 111 ', 331 | ' ', 332 | ' ', 333 | ' ' 334 | ]; 335 | alphabet['_'] = [ 336 | ' ', 337 | ' ', 338 | ' ', 339 | ' ', 340 | ' ', 341 | '11111', 342 | ' ' 343 | ]; 344 | alphabet['.'] = [ 345 | ' ', 346 | ' ', 347 | ' ', 348 | ' ', 349 | ' ', 350 | ' 1 ', 351 | ' ' 352 | ]; 353 | alphabet['/'] = [ 354 | ' ', 355 | ' 1', 356 | ' 1 ', 357 | ' 1 ', 358 | ' 1 ', 359 | '1 ', 360 | ' ' 361 | ]; 362 | alphabet['\\'] = [ 363 | ' ', 364 | '1 ', 365 | ' 1 ', 366 | ' 1 ', 367 | ' 1 ', 368 | ' 1', 369 | ' ' 370 | ]; 371 | alphabet[')'] = [ 372 | ' ', 373 | '1 ', 374 | ' 1 ', 375 | ' 1', 376 | ' 1 ', 377 | '1 ', 378 | ' ' 379 | ]; 380 | alphabet['('] = [ 381 | ' ', 382 | ' 1', 383 | ' 1 ', 384 | '1 ', 385 | ' 1 ', 386 | ' 1', 387 | ' ' 388 | ]; 389 | alphabet['['] = [ 390 | ' ', 391 | ' 111', 392 | ' 1 ', 393 | ' 1 ', 394 | ' 1 ', 395 | ' 111', 396 | ' ' 397 | ]; 398 | alphabet[']'] = [ 399 | ' ', 400 | '111 ', 401 | ' 1 ', 402 | ' 1 ', 403 | ' 1 ', 404 | '111 ', 405 | ' ' 406 | ]; 407 | alphabet[':'] = [ 408 | ' ', 409 | ' ', 410 | ' 1 ', 411 | ' ', 412 | ' 1 ', 413 | ' ', 414 | ' ' 415 | ]; 416 | alphabet['*'] = [ 417 | ' ', 418 | ' ', 419 | '1 1 1', 420 | ' 1 ', 421 | '1 1 1', 422 | ' ', 423 | ' ' 424 | ]; 425 | alphabet['!'] = [ 426 | ' ', 427 | ' 1 ', 428 | ' 1 ', 429 | ' 1 ', 430 | ' ', 431 | ' 1 ', 432 | ' ' 433 | ]; 434 | 435 | module.exports = alphabet; 436 | -------------------------------------------------------------------------------- /fonts/gameboy.js: -------------------------------------------------------------------------------- 1 | const font = {}; 2 | font.a = [ 3 | ' ', 4 | ' 111 ', 5 | '1 11', 6 | '1 11', 7 | '11111', 8 | '1 11', 9 | '1 11', 10 | ]; 11 | font.b = [ 12 | ' ', 13 | '11111 ', 14 | '11 11', 15 | '11111 ', 16 | '11 11', 17 | '11 11', 18 | '11111 ', 19 | ]; 20 | font.c = [ 21 | ' ', 22 | ' 1111 ', 23 | '11 11', 24 | '11 ', 25 | '11 ', 26 | '11 11', 27 | ' 1111 ', 28 | ]; 29 | font.d = [ 30 | ' ', 31 | '11111 ', 32 | '1 111', 33 | '1 111', 34 | '1 111', 35 | '1 111', 36 | '11111 ', 37 | ]; 38 | font.e = [ 39 | ' ', 40 | '11111', 41 | '11 ', 42 | '1111 ', 43 | '11 ', 44 | '11 ', 45 | '11111', 46 | ]; 47 | font.f = [ 48 | ' ', 49 | '111111', 50 | '11 ', 51 | '11 ', 52 | '11111 ', 53 | '11 ', 54 | '11 ', 55 | ]; 56 | font.g = [ 57 | ' ', 58 | ' 1111 ', 59 | '11 11', 60 | '11 ', 61 | '11 111', 62 | '11 11', 63 | ' 11111', 64 | ]; 65 | font.h = [ 66 | ' ', 67 | '1 11', 68 | '1 11', 69 | '111111', 70 | '1 11', 71 | '1 11', 72 | '1 11', 73 | ]; 74 | font.i = [ 75 | ' ', 76 | '11111', 77 | ' 111 ', 78 | ' 111 ', 79 | ' 111 ', 80 | ' 111 ', 81 | '11111', 82 | ]; 83 | font.j = [ 84 | ' ', 85 | ' 1111', 86 | ' 11 ', 87 | ' 11 ', 88 | '11 11 ', 89 | '11 11 ', 90 | ' 111 ', 91 | ]; 92 | font.k = [ 93 | ' ', 94 | '11 11', 95 | '11 11 ', 96 | '1111 ', 97 | '1111 ', 98 | '11 11 ', 99 | '11 11', 100 | ]; 101 | font.l = [ 102 | ' ', 103 | '11 ', 104 | '11 ', 105 | '11 ', 106 | '11 ', 107 | '11 ', 108 | '111111', 109 | ]; 110 | font.m = [ 111 | ' ', 112 | '1 11', 113 | '11 111', 114 | '111111', 115 | '1 1 11', 116 | '1 11', 117 | '1 11', 118 | ]; 119 | font.n = [ 120 | ' ', 121 | '1 11', 122 | '11 11', 123 | '111 11', 124 | '1 1 11', 125 | '1 111', 126 | '1 111', 127 | ]; 128 | font.o = [ 129 | ' ', 130 | ' 1111 ', 131 | '11 11', 132 | '11 11', 133 | '11 11', 134 | '11 11', 135 | ' 1111 ', 136 | ]; 137 | font.p = [ 138 | ' ', 139 | '11111 ', 140 | '11 11', 141 | '11 11', 142 | '11111 ', 143 | '11 ', 144 | '11 ', 145 | ]; 146 | font.q = [ 147 | ' ', 148 | ' 1111 ', 149 | '11 1', 150 | '11 1', 151 | '11 1 1', 152 | '11 1 ', 153 | ' 111 1', 154 | ]; 155 | font.r = [ 156 | ' ', 157 | '11111 ', 158 | '11 11', 159 | '11 11', 160 | '11111 ', 161 | '11 1 ', 162 | '11 11', 163 | ]; 164 | font.s = [ 165 | ' ', 166 | ' 1111 ', 167 | '11 ', 168 | ' 1111 ', 169 | ' 111', 170 | '1 111', 171 | ' 1111 ', 172 | ]; 173 | font.t = [ 174 | ' ', 175 | '111111', 176 | ' 11 ', 177 | ' 11 ', 178 | ' 11 ', 179 | ' 11 ', 180 | ' 11 ', 181 | ]; 182 | font.u = [ 183 | ' ', 184 | '1 11', 185 | '1 11', 186 | '1 11', 187 | '1 11', 188 | '1 111', 189 | ' 1111 ', 190 | ]; 191 | font.v = [ 192 | ' ', 193 | '1 11', 194 | '1 11', 195 | '1 11', 196 | '1 11', 197 | ' 1 11 ', 198 | ' 11 ', 199 | ]; 200 | font.w = [ 201 | ' ', 202 | '1 11', 203 | '1 11', 204 | '1 1 11', 205 | '111111', 206 | '11 111', 207 | '1 11', 208 | ]; 209 | font.x = [ 210 | ' ', 211 | '1 11', 212 | ' 1 11 ', 213 | ' 11 ', 214 | ' 111 ', 215 | '11 1 ', 216 | '1 1', 217 | ]; 218 | font.y = [ 219 | ' ', 220 | '11 11', 221 | '11 11', 222 | ' 1111 ', 223 | ' 11 ', 224 | ' 11 ', 225 | ' 11 ', 226 | ]; 227 | font.z = [ 228 | ' ', 229 | '111111', 230 | ' 111', 231 | ' 111 ', 232 | ' 111 ', 233 | '111 ', 234 | '111111', 235 | ]; 236 | font['0'] = [ 237 | ' ', 238 | ' 1111 ', 239 | '11 11', 240 | '11 11', 241 | '11 11', 242 | '11 11', 243 | ' 1111 ', 244 | ]; 245 | font['1'] = [ 246 | ' ', 247 | ' 11 ', 248 | '111 ', 249 | ' 11 ', 250 | ' 11 ', 251 | ' 11 ', 252 | '1111', 253 | ]; 254 | font['2'] = [ 255 | ' ', 256 | ' 1111 ', 257 | '1 111', 258 | ' 111', 259 | ' 1111 ', 260 | '111 ', 261 | '111111', 262 | ]; 263 | font['3'] = [ 264 | ' ', 265 | '11111 ', 266 | ' 111', 267 | ' 1111 ', 268 | ' 111', 269 | ' 111', 270 | '11111 ', 271 | ]; 272 | font['4'] = [ 273 | ' ', 274 | ' 1111 ', 275 | '11 11 ', 276 | '1 11 ', 277 | '1 11 ', 278 | '111111', 279 | ' 11 ', 280 | ]; 281 | font['5'] = [ 282 | ' ', 283 | '11111 ', 284 | '11 ', 285 | '11111 ', 286 | ' 111', 287 | '1 111', 288 | ' 1111 ', 289 | ]; 290 | font['6'] = [ 291 | ' ', 292 | ' 1111 ', 293 | '11 ', 294 | '11111 ', 295 | '11 11', 296 | '11 11', 297 | ' 1111 ', 298 | ]; 299 | font['7'] = [ 300 | ' ', 301 | '111111', 302 | ' 11', 303 | ' 11 ', 304 | ' 11 ', 305 | ' 111 ', 306 | ' 111 ', 307 | ]; 308 | font['8'] = [ 309 | ' ', 310 | ' 1111 ', 311 | '1 111', 312 | ' 1111 ', 313 | '1 111', 314 | '1 111', 315 | ' 1111 ', 316 | ]; 317 | font['9'] = [ 318 | ' ', 319 | ' 1111 ', 320 | '1 111', 321 | '1 111', 322 | ' 11111', 323 | ' 111', 324 | ' 1111 ', 325 | ]; 326 | font['-'] = [ 327 | ' ', 328 | ' ', 329 | ' ', 330 | ' 1111', 331 | ' 1111', 332 | ' ', 333 | ' ', 334 | ]; 335 | font['*'] = [ 336 | ' ', 337 | ' ', 338 | '1 1', 339 | ' 1 1 ', 340 | ' 1 ', 341 | ' 1 1 ', 342 | '1 1', 343 | ]; 344 | font['"'] = [ 345 | ' ', 346 | '11 11', 347 | '11 11', 348 | ' 1 1', 349 | ' ', 350 | ' ', 351 | ' ', 352 | ]; 353 | font["'"] = [ 354 | ' ', 355 | ' 11', 356 | ' 11', 357 | ' 1', 358 | ' ', 359 | ' ', 360 | ' ', 361 | ]; 362 | font[','] = [ 363 | ' ', 364 | ' ', 365 | ' ', 366 | '11', 367 | '11', 368 | ' 1', 369 | '1 ', 370 | ]; 371 | font['.'] = [ 372 | ' ', 373 | ' ', 374 | ' ', 375 | ' ', 376 | ' ', 377 | '11', 378 | '11', 379 | ]; 380 | font[':'] = [ 381 | ' ', 382 | ' ', 383 | '11', 384 | '11', 385 | ' ', 386 | '11', 387 | '11', 388 | ]; 389 | font['?'] = [ 390 | ' 1111 ', 391 | '1 111', 392 | ' 111', 393 | ' 111 ', 394 | ' 11 ', 395 | ' ', 396 | ' 11 ', 397 | ]; 398 | font['!'] = [ 399 | ' ', 400 | ' 111', 401 | ' 111', 402 | ' 111', 403 | ' 111', 404 | ' ', 405 | ' 111', 406 | ]; 407 | font['<'] = [ 408 | ' 11 11 ', 409 | '1 1 1', 410 | '1 1', 411 | '1 1', 412 | ' 1 1 ', 413 | ' 1 1 ', 414 | ' 1 ', 415 | ]; 416 | module.exports = font; -------------------------------------------------------------------------------- /fonts/led7.js: -------------------------------------------------------------------------------- 1 | const font = {}; 2 | font.A = [ 3 | " 111 ", 4 | "1 1", 5 | "1 1", 6 | "11111", 7 | "1 1", 8 | "1 1", 9 | "1 1" 10 | ]; 11 | font.B = [ 12 | "1111 ", 13 | "1 1", 14 | "1 1", 15 | "11111", 16 | "1 1", 17 | "1 1", 18 | "1111 " 19 | ]; 20 | font.C = [ 21 | " 111 ", 22 | "1 1", 23 | "1 ", 24 | "1 ", 25 | "1 ", 26 | "1 1", 27 | " 111 " 28 | ]; 29 | font.D = [ 30 | "1111 ", 31 | "1 1", 32 | "1 1", 33 | "1 1", 34 | "1 1", 35 | "1 1", 36 | "1111 " 37 | ]; 38 | font.E = [ 39 | "11111", 40 | "1 ", 41 | "1 ", 42 | "1111 ", 43 | "1 ", 44 | "1 ", 45 | "11111" 46 | ]; 47 | font.F = [ 48 | "11111", 49 | "1 ", 50 | "1 ", 51 | "1111 ", 52 | "1 ", 53 | "1 ", 54 | "1 " 55 | ]; 56 | font.G = [ 57 | " 111 ", 58 | "1 1", 59 | "1 ", 60 | "1 ", 61 | "1 11", 62 | "1 1", 63 | " 111 " 64 | ]; 65 | font.H = [ 66 | "1 1", 67 | "1 1", 68 | "1 1", 69 | "11111", 70 | "1 1", 71 | "1 1", 72 | "1 1" 73 | ]; 74 | font.I = [ 75 | "111", 76 | " 1 ", 77 | " 1 ", 78 | " 1 ", 79 | " 1 ", 80 | " 1 ", 81 | "111" 82 | ]; 83 | font.J = [ 84 | " 1111", 85 | " 1", 86 | " 1", 87 | " 1", 88 | " 1", 89 | "1 1", 90 | " 111 " 91 | ]; 92 | font.K = [ 93 | "1 1", 94 | "1 1 ", 95 | "1 1 ", 96 | "11 ", 97 | "1 1 ", 98 | "1 1 ", 99 | "1 1" 100 | ]; 101 | font.L = [ 102 | "1 ", 103 | "1 ", 104 | "1 ", 105 | "1 ", 106 | "1 ", 107 | "1 ", 108 | "11111" 109 | ]; 110 | font.M = [ 111 | "1 1", 112 | "11 11", 113 | "1 1 1", 114 | "1 1 1", 115 | "1 1", 116 | "1 1", 117 | "1 1" 118 | ]; 119 | font.N = [ 120 | "1 1", 121 | "1 1", 122 | "11 1", 123 | "1 1 1", 124 | "1 11", 125 | "1 1", 126 | "1 1" 127 | ]; 128 | font.O = [ 129 | " 111 ", 130 | "1 1", 131 | "1 1", 132 | "1 1", 133 | "1 1", 134 | "1 1", 135 | " 111 " 136 | ]; 137 | font.P = [ 138 | "1111 ", 139 | "1 1", 140 | "1 1", 141 | "1111 ", 142 | "1 ", 143 | "1 ", 144 | "1 " 145 | ]; 146 | font.Q = [ 147 | " 111 ", 148 | "1 1", 149 | "1 1", 150 | "1 1", 151 | "1 1", 152 | "1 11", 153 | " 1111" 154 | ]; 155 | font.R = [ 156 | "1111 ", 157 | "1 1", 158 | "1 1", 159 | "1111 ", 160 | "1 1 ", 161 | "1 1 ", 162 | "1 1" 163 | ]; 164 | font.S = [ 165 | " 111 ", 166 | "1 1", 167 | "1 ", 168 | " 111 ", 169 | " 1", 170 | "1 1", 171 | " 111 " 172 | ]; 173 | font.T = [ 174 | "11111", 175 | " 1 ", 176 | " 1 ", 177 | " 1 ", 178 | " 1 ", 179 | " 1 ", 180 | " 1 " 181 | ]; 182 | font.U = [ 183 | "1 1", 184 | "1 1", 185 | "1 1", 186 | "1 1", 187 | "1 1", 188 | "1 1", 189 | " 111 " 190 | ]; 191 | font.V = [ 192 | "1 1", 193 | "1 1", 194 | "1 1", 195 | "1 1", 196 | "1 1", 197 | " 1 1 ", 198 | " 1 " 199 | ]; 200 | font.W = [ 201 | "1 1", 202 | "1 1", 203 | "1 1", 204 | "1 1", 205 | "1 1 1", 206 | "1 1 1", 207 | " 1 1 " 208 | ]; 209 | font.X = [ 210 | "1 1", 211 | "1 1", 212 | " 1 1 ", 213 | " 1 ", 214 | " 1 1 ", 215 | "1 1", 216 | "1 1" 217 | ]; 218 | font.Y = [ 219 | "1 1", 220 | "1 1", 221 | " 1 1 ", 222 | " 1 ", 223 | " 1 ", 224 | " 1 ", 225 | " 1 " 226 | ]; 227 | font.Z = [ 228 | "11111", 229 | " 1", 230 | " 1 ", 231 | " 1 ", 232 | " 1 ", 233 | "1 ", 234 | "11111" 235 | ]; 236 | font.a = [ 237 | " ", 238 | " ", 239 | "111 ", 240 | " 1", 241 | "1111", 242 | "1 1", 243 | "1111" 244 | ]; 245 | font.b = [ 246 | "1 ", 247 | "1 ", 248 | "111 ", 249 | "1 1", 250 | "1 1", 251 | "1 1", 252 | "111 " 253 | ]; 254 | font.c = [ 255 | " ", 256 | " ", 257 | " 11 ", 258 | "1 1", 259 | "1 ", 260 | "1 1", 261 | " 11 " 262 | ]; 263 | font.d = [ 264 | " 1", 265 | " 1", 266 | " 111", 267 | "1 1", 268 | "1 1", 269 | "1 1", 270 | " 111" 271 | ]; 272 | font.e = [ 273 | " ", 274 | " ", 275 | " 11 ", 276 | "1 1", 277 | "1111", 278 | "1 ", 279 | " 111" 280 | ]; 281 | font.f = [ 282 | " 11", 283 | " 1 ", 284 | " 111", 285 | "11 ", 286 | " 1 ", 287 | " 1 ", 288 | " 1 " 289 | ]; 290 | font.g = [ 291 | " ", 292 | " ", 293 | " 111", 294 | "1 1", 295 | " 111", 296 | " 1", 297 | " 11 " 298 | ]; 299 | font.h = [ 300 | "1 ", 301 | "1 ", 302 | "111 ", 303 | "1 1", 304 | "1 1", 305 | "1 1", 306 | "1 1" 307 | ]; 308 | font.i = [ 309 | "1", 310 | " ", 311 | "1", 312 | "1", 313 | "1", 314 | "1", 315 | "1" 316 | ]; 317 | font.j = [ 318 | " 1", 319 | " ", 320 | " 1", 321 | " 1", 322 | " 1", 323 | " 1", 324 | "11 " 325 | ]; 326 | font.k = [ 327 | "1 ", 328 | "1 ", 329 | "1 1", 330 | "1 1", 331 | "111 ", 332 | "1 1", 333 | "1 1" 334 | ]; 335 | font.l = [ 336 | "1", 337 | "1", 338 | "1", 339 | "1", 340 | "1", 341 | "1", 342 | "1" 343 | ]; 344 | font.m = [ 345 | " ", 346 | " ", 347 | "111111 ", 348 | "1 1 1", 349 | "1 1 1", 350 | "1 1 1", 351 | "1 1 1" 352 | ]; 353 | font.n = [ 354 | " ", 355 | " ", 356 | "111 ", 357 | "1 1", 358 | "1 1", 359 | "1 1", 360 | "1 1" 361 | ]; 362 | font.o = [ 363 | " ", 364 | " ", 365 | " 11 ", 366 | "1 1", 367 | "1 1", 368 | "1 1", 369 | " 11 " 370 | ]; 371 | font.p = [ 372 | " ", 373 | " ", 374 | "111 ", 375 | "1 1", 376 | "111 ", 377 | "1 ", 378 | "1 " 379 | ]; 380 | font.q = [ 381 | " ", 382 | " ", 383 | " 111", 384 | "1 1", 385 | " 111", 386 | " 1", 387 | " 1" 388 | ]; 389 | font.r = [ 390 | " ", 391 | " ", 392 | " 11", 393 | "1 ", 394 | "1 ", 395 | "1 ", 396 | "1 " 397 | ]; 398 | font.s = [ 399 | " ", 400 | " ", 401 | " 1111", 402 | "1 ", 403 | " 111 ", 404 | " 1 ", 405 | "111 " 406 | ]; 407 | font.t = [ 408 | " 1 ", 409 | " 1 ", 410 | "1111", 411 | " 1 ", 412 | " 1 ", 413 | " 1 ", 414 | " 11" 415 | ]; 416 | font.u = [ 417 | " ", 418 | " ", 419 | "1 1", 420 | "1 1", 421 | "1 1", 422 | "1 1", 423 | " 111" 424 | ]; 425 | font.v = [ 426 | " ", 427 | " ", 428 | "1 1", 429 | "1 1", 430 | "1 1", 431 | " 1 1 ", 432 | " 1 " 433 | ]; 434 | font.w = [ 435 | " ", 436 | " ", 437 | "1 1", 438 | "1 1", 439 | "1 1 1", 440 | "11 11", 441 | "1 1" 442 | ]; 443 | font.x = [ 444 | " ", 445 | " ", 446 | "1 1", 447 | "1 1", 448 | " 11 ", 449 | "1 1", 450 | "1 1" 451 | ]; 452 | font.y = [ 453 | " ", 454 | " ", 455 | "1 1", 456 | "1 1", 457 | " 111", 458 | " 1", 459 | "111 " 460 | ]; 461 | font.z = [ 462 | " ", 463 | " ", 464 | "1111", 465 | " 1 ", 466 | " 1 ", 467 | "1 ", 468 | "1111" 469 | ]; 470 | font['0'] = [ 471 | " 111 ", 472 | "1 1", 473 | "1 11", 474 | "1 1 1", 475 | "11 1", 476 | "1 1", 477 | " 111 " 478 | ]; 479 | font['1'] = [ 480 | " 1 ", 481 | " 11 ", 482 | "1 1 ", 483 | " 1 ", 484 | " 1 ", 485 | " 1 ", 486 | "11111" 487 | ]; 488 | font['2'] = [ 489 | " 111 ", 490 | "1 1", 491 | " 1", 492 | " 1 ", 493 | " 1 ", 494 | " 1 ", 495 | "11111" 496 | ]; 497 | font['3'] = [ 498 | " 111 ", 499 | "1 1", 500 | " 1", 501 | " 11 ", 502 | " 1", 503 | "1 1", 504 | " 111 " 505 | ]; 506 | font['4'] = [ 507 | " 1 ", 508 | " 11 ", 509 | " 1 1 ", 510 | "1 1 ", 511 | "11111", 512 | " 1 ", 513 | " 1 " 514 | ]; 515 | font['5'] = [ 516 | "11111", 517 | "1 ", 518 | "1111 ", 519 | " 1", 520 | " 1", 521 | "1 1", 522 | " 111 " 523 | ]; 524 | font['6'] = [ 525 | " 111 ", 526 | "1 ", 527 | "1111 ", 528 | "1 1", 529 | "1 1", 530 | "1 1", 531 | " 111 " 532 | ]; 533 | font['7'] = [ 534 | "11111", 535 | " 1", 536 | " 1 ", 537 | " 1 ", 538 | " 1 ", 539 | " 1 ", 540 | " 1 " 541 | ]; 542 | font['8'] = [ 543 | " 111 ", 544 | "1 1", 545 | "1 1", 546 | " 111 ", 547 | "1 1", 548 | "1 1", 549 | " 111 " 550 | ]; 551 | font['9'] = [ 552 | " 111 ", 553 | "1 1", 554 | "1 1", 555 | "1 1", 556 | " 1111", 557 | " 1", 558 | " 111 " 559 | ]; 560 | font['$'] = [ 561 | " 111 ", 562 | "1 1 1", 563 | "1 1 ", 564 | " 111 ", 565 | " 1 1", 566 | "1 1 1", 567 | " 111 " 568 | ]; 569 | font['¢'] = [ 570 | " 1 ", 571 | " 1111", 572 | "1 1 ", 573 | "1 1 ", 574 | "1 1 ", 575 | " 1111", 576 | " 1 " 577 | ]; 578 | font['€'] = [ 579 | " 111", 580 | " 1 ", 581 | "1111 ", 582 | " 1 ", 583 | "1111 ", 584 | " 1 ", 585 | " 111" 586 | ]; 587 | font['£'] = [ 588 | " 11", 589 | " 1 ", 590 | "1111", 591 | " 1 ", 592 | " 1 ", 593 | " 1 ", 594 | "1111" 595 | ]; 596 | font['¥'] = [ 597 | "1 1", 598 | "1 1", 599 | " 1 1 ", 600 | " 1 ", 601 | " 111 ", 602 | " 1 ", 603 | " 111 " 604 | ]; 605 | font['¤'] = [ 606 | " ", 607 | "1 1", 608 | " 111 ", 609 | " 1 1 ", 610 | " 111 ", 611 | "1 1", 612 | " " 613 | ]; 614 | font['+'] = [ 615 | " ", 616 | " 1 ", 617 | " 1 ", 618 | "11111", 619 | " 1 ", 620 | " 1 ", 621 | " " 622 | ]; 623 | font['-'] = [ 624 | " ", 625 | " ", 626 | " ", 627 | "11111", 628 | " ", 629 | " ", 630 | " " 631 | ]; 632 | font['*'] = [ 633 | " ", 634 | "1 1 1", 635 | " 111 ", 636 | "11 11", 637 | " 111 ", 638 | "1 1 1", 639 | " " 640 | ]; 641 | font['/'] = [ 642 | " ", 643 | " 1", 644 | " 1 ", 645 | " 1 ", 646 | " 1 ", 647 | "1 ", 648 | " " 649 | ]; 650 | font['÷'] = [ 651 | " ", 652 | " 1 ", 653 | " ", 654 | "11111", 655 | " ", 656 | " 1 ", 657 | " " 658 | ]; 659 | font['='] = [ 660 | " ", 661 | " ", 662 | "11111", 663 | " ", 664 | "11111", 665 | " ", 666 | " " 667 | ]; 668 | font['%'] = [ 669 | "11 ", 670 | "11 1", 671 | " 1 ", 672 | " 1 ", 673 | " 1 ", 674 | "1 11", 675 | " 11" 676 | ]; 677 | font['‰'] = [ 678 | "1 ", 679 | "1 1", 680 | " 1 ", 681 | " 1 ", 682 | " 1 ", 683 | "1 1 1", 684 | " 1 1" 685 | ]; 686 | font['"'] = [ 687 | "1 1", 688 | "1 1", 689 | "1 1", 690 | " ", 691 | " ", 692 | " ", 693 | " " 694 | ]; 695 | font["'"] = [ 696 | " 1", 697 | " 1", 698 | " 1", 699 | " ", 700 | " ", 701 | " ", 702 | " " 703 | ]; 704 | font['#'] = [ 705 | " 1 1 ", 706 | "11111", 707 | " 1 1 ", 708 | " 1 1 ", 709 | " 1 1 ", 710 | "11111", 711 | " 1 1 " 712 | ]; 713 | font['@'] = [ 714 | " 111 ", 715 | "1 1", 716 | "1 111", 717 | "1 111", 718 | "1 11 ", 719 | "1 ", 720 | " 111 " 721 | ]; 722 | font['&'] = [ 723 | " 11 ", 724 | "1 1 ", 725 | "1 1 ", 726 | " 11 11", 727 | "1 1 ", 728 | "1 1 ", 729 | " 11 11" 730 | ]; 731 | font['_'] = [ 732 | " ", 733 | " ", 734 | " ", 735 | " ", 736 | " ", 737 | " ", 738 | "11111" 739 | ]; 740 | font['('] = [ 741 | " 1", 742 | "1 ", 743 | "1 ", 744 | "1 ", 745 | "1 ", 746 | "1 ", 747 | " 1" 748 | ]; 749 | font[')'] = [ 750 | "1 ", 751 | " 1", 752 | " 1", 753 | " 1", 754 | " 1", 755 | " 1", 756 | "1 " 757 | ]; 758 | font[','] = [ 759 | " ", 760 | " ", 761 | " ", 762 | " ", 763 | "11", 764 | " 1", 765 | "1 " 766 | ]; 767 | font['.'] = [ 768 | " ", 769 | " ", 770 | " ", 771 | " ", 772 | " ", 773 | "11", 774 | "11" 775 | ]; 776 | font[';'] = [ 777 | "11", 778 | "11", 779 | " ", 780 | " ", 781 | "11", 782 | " 1", 783 | "1 " 784 | ]; 785 | font[':'] = [ 786 | " ", 787 | "11", 788 | "11", 789 | " ", 790 | " ", 791 | "11", 792 | "11" 793 | ]; 794 | font['¿'] = [ 795 | " 1 ", 796 | " ", 797 | " 1 ", 798 | " 1 ", 799 | "1 ", 800 | "1 1", 801 | " 111 " 802 | ]; 803 | font['?'] = [ 804 | " 111 ", 805 | "1 1", 806 | " 1", 807 | " 1 ", 808 | " 1 ", 809 | " ", 810 | " 1 " 811 | ]; 812 | font['\\'] = [ 813 | " ", 814 | "1 ", 815 | " 1 ", 816 | " 1 ", 817 | " 1 ", 818 | " 1", 819 | " " 820 | ]; 821 | font['{'] = [ 822 | " 1", 823 | " 1 ", 824 | " 1 ", 825 | "1 ", 826 | " 1 ", 827 | " 1 ", 828 | " 1" 829 | ]; 830 | font['}'] = [ 831 | "1 ", 832 | " 1 ", 833 | " 1 ", 834 | " 1", 835 | " 1 ", 836 | " 1 ", 837 | "1 " 838 | ]; 839 | font['<'] = [ 840 | " ", 841 | " 1", 842 | " 1 ", 843 | "1 ", 844 | " 1 ", 845 | " 1", 846 | " " 847 | ]; 848 | font['>'] = [ 849 | " ", 850 | "1 ", 851 | " 1 ", 852 | " 1", 853 | " 1 ", 854 | "1 ", 855 | " " 856 | ]; 857 | font['['] = [ 858 | "111", 859 | "1 ", 860 | "1 ", 861 | "1 ", 862 | "1 ", 863 | "1 ", 864 | "111" 865 | ]; 866 | font[']'] = [ 867 | "111", 868 | " 1", 869 | " 1", 870 | " 1", 871 | " 1", 872 | " 1", 873 | "111" 874 | ]; 875 | font['§'] = [ 876 | "1111", 877 | "1 ", 878 | "1111", 879 | "1 1", 880 | "1111", 881 | " 1", 882 | "1111" 883 | ]; 884 | font['¶'] = [ 885 | "11111", 886 | "11 1 ", 887 | " 1 1 ", 888 | " 1 1 ", 889 | " 1 1 ", 890 | " 1 1 ", 891 | " 1 1 " 892 | ]; 893 | font['µ'] = [ 894 | "1 1", 895 | "1 1", 896 | "1 1", 897 | "11 11", 898 | "1 1 1", 899 | "1 1 1", 900 | "1 " 901 | ]; 902 | font['`'] = [ 903 | " 1 ", 904 | " 1", 905 | " ", 906 | " ", 907 | " ", 908 | " ", 909 | " " 910 | ]; 911 | font['^'] = [ 912 | " 1 ", 913 | " 1 1 ", 914 | "1 1", 915 | " ", 916 | " ", 917 | " ", 918 | " " 919 | ]; 920 | font['~'] = [ 921 | " ", 922 | " ", 923 | " ", 924 | " 1 1", 925 | "1 1 ", 926 | " ", 927 | " " 928 | ]; 929 | font['©'] = [ 930 | " 11111 ", 931 | "1 1", 932 | "1 111 1", 933 | "1 1 1", 934 | "1 111 1", 935 | "1 1", 936 | " 11111 " 937 | ]; 938 | font['™'] = [ 939 | "1111 1", 940 | " 1 11 11", 941 | " 1 1 1 1", 942 | " 1 1 1", 943 | " ", 944 | " ", 945 | " " 946 | ]; 947 | module.exports = font; -------------------------------------------------------------------------------- /fonts/mario.js: -------------------------------------------------------------------------------- 1 | const font = {}; 2 | font.A = [ 3 | " 11 ", 4 | " 1 1 ", 5 | "11 11", 6 | "11 11", 7 | "111111", 8 | "11 11", 9 | "11 11" 10 | ]; 11 | font.B = [ 12 | "11111 ", 13 | "11 11", 14 | "11 11", 15 | "11111 ", 16 | "11 11", 17 | "11 11", 18 | "11111 " 19 | ]; 20 | font.C = [ 21 | " 1111 ", 22 | "11 11", 23 | "11 ", 24 | "11 ", 25 | "11 ", 26 | "11 11", 27 | " 1111 " 28 | ]; 29 | font.D = [ 30 | "11111 ", 31 | "11 11", 32 | "11 11", 33 | "11 11", 34 | "11 11", 35 | "11 11", 36 | "11111 " 37 | ]; 38 | font.E = [ 39 | "111111", 40 | "11 ", 41 | "11 ", 42 | "11111 ", 43 | "11 ", 44 | "11 ", 45 | "111111" 46 | ]; 47 | font.F = [ 48 | "111111", 49 | "11 ", 50 | "11 ", 51 | "11111 ", 52 | "11 ", 53 | "11 ", 54 | "11 " 55 | ]; 56 | font.G = [ 57 | " 1111 ", 58 | "11 11", 59 | "11 ", 60 | "11 111", 61 | "11 11", 62 | "11 11", 63 | " 111 1" 64 | ]; 65 | font.H = [ 66 | "11 11", 67 | "11 11", 68 | "11 11", 69 | "111111", 70 | "11 11", 71 | "11 11", 72 | "11 11" 73 | ]; 74 | font.I = [ 75 | "1111", 76 | " 11 ", 77 | " 11 ", 78 | " 11 ", 79 | " 11 ", 80 | " 11 ", 81 | "1111" 82 | ]; 83 | font.J = [ 84 | " 1111", 85 | " 11 ", 86 | " 11 ", 87 | " 11 ", 88 | " 11 ", 89 | "11 11 ", 90 | " 111 " 91 | ]; 92 | font.K = [ 93 | "11 11", 94 | "11 11 ", 95 | "1111 ", 96 | "111 ", 97 | "1111 ", 98 | "11 11 ", 99 | "11 11" 100 | ]; 101 | font.L = [ 102 | "11 ", 103 | "11 ", 104 | "11 ", 105 | "11 ", 106 | "11 ", 107 | "11 ", 108 | "111111" 109 | ]; 110 | font.M = [ 111 | "1 11", 112 | "11 111", 113 | "111111", 114 | "1 1 11", 115 | "1 11", 116 | "1 11", 117 | "1 11" 118 | ]; 119 | font.N = [ 120 | "11 1", 121 | "111 1", 122 | "1 11 1", 123 | "1 111", 124 | "1 11", 125 | "1 1", 126 | "1 1" 127 | ]; 128 | font.O = [ 129 | " 1111 ", 130 | "11 11", 131 | "11 11", 132 | "11 11", 133 | "11 11", 134 | "11 11", 135 | " 1111 " 136 | ]; 137 | font.P = [ 138 | "11111 ", 139 | "11 11", 140 | "11 11", 141 | "11 11", 142 | "11111 ", 143 | "11 ", 144 | "11 " 145 | ]; 146 | font.Q = [ 147 | " 1111 ", 148 | "11 11", 149 | "11 11", 150 | "11 11", 151 | "111 11", 152 | "11 11 ", 153 | " 111 1" 154 | ]; 155 | font.R = [ 156 | "11111 ", 157 | "11 11", 158 | "11 11", 159 | "11111 ", 160 | "1111 ", 161 | "11 11 ", 162 | "11 11" 163 | ]; 164 | font.S = [ 165 | " 1111 ", 166 | "11 11", 167 | "11 ", 168 | " 1111 ", 169 | " 11", 170 | "11 11", 171 | " 1111 " 172 | ]; 173 | font.T = [ 174 | "111111", 175 | " 11 ", 176 | " 11 ", 177 | " 11 ", 178 | " 11 ", 179 | " 11 ", 180 | " 11 " 181 | ]; 182 | font.U = [ 183 | "11 11", 184 | "11 11", 185 | "11 11", 186 | "11 11", 187 | "11 11", 188 | "11 11", 189 | " 1111 " 190 | ]; 191 | font.V = [ 192 | "11 11", 193 | "11 11", 194 | "11 11", 195 | "11 11", 196 | " 1 1 ", 197 | " 1111 ", 198 | " 11 " 199 | ]; 200 | font.W = [ 201 | "1 11", 202 | "1 1 11", 203 | "1 1 11", 204 | "1 1 11", 205 | "111111", 206 | " 1 11 ", 207 | " 1 11 " 208 | ]; 209 | font.X = [ 210 | "11 11", 211 | "11 11", 212 | " 1111 ", 213 | " 11 ", 214 | " 1111 ", 215 | "11 11", 216 | "11 11" 217 | ]; 218 | font.Y = [ 219 | "11 11", 220 | "11 11", 221 | "111111", 222 | " 1111 ", 223 | " 11 ", 224 | " 11 ", 225 | " 11 " 226 | ]; 227 | font.Z = [ 228 | "111111", 229 | " 11", 230 | " 11 ", 231 | " 11 ", 232 | " 11 ", 233 | "11 ", 234 | "111111" 235 | ]; 236 | font.a = [ 237 | " ", 238 | " ", 239 | " 1111 ", 240 | " 11 ", 241 | " 11111 ", 242 | "11 11 ", 243 | " 111 11" 244 | ]; 245 | font.b = [ 246 | " ", 247 | "11 ", 248 | "11 ", 249 | "11111 ", 250 | "11 11", 251 | "11 11", 252 | "11111 " 253 | ]; 254 | font.c = [ 255 | " ", 256 | " ", 257 | " 11111", 258 | "11 ", 259 | "11 ", 260 | "11 ", 261 | " 11111" 262 | ]; 263 | font.d = [ 264 | " ", 265 | " 11", 266 | " 11", 267 | " 11111", 268 | "11 11", 269 | "11 11", 270 | " 11111" 271 | ]; 272 | font.e = [ 273 | " ", 274 | " ", 275 | " 1111 ", 276 | "11 11", 277 | "111111", 278 | "11 ", 279 | " 1111 " 280 | ]; 281 | font.f = [ 282 | " ", 283 | " 111", 284 | " 11 ", 285 | "111111", 286 | " 11 ", 287 | " 11 ", 288 | " 11 " 289 | ]; 290 | font.g = [ 291 | " ", 292 | " 1111 ", 293 | "11 11", 294 | "11 11", 295 | " 11111", 296 | " 11", 297 | " 1111 " 298 | ]; 299 | font.h = [ 300 | " ", 301 | "11 ", 302 | "11 ", 303 | "11111 ", 304 | "11 11", 305 | "11 11", 306 | "11 11" 307 | ]; 308 | font.i = [ 309 | " ", 310 | "11", 311 | " ", 312 | "11", 313 | "11", 314 | "11", 315 | "11" 316 | ]; 317 | font.j = [ 318 | " ", 319 | " 11", 320 | " ", 321 | " 11", 322 | " 11", 323 | " 11", 324 | "11 " 325 | ]; 326 | font.k = [ 327 | " ", 328 | "11 ", 329 | "11 11", 330 | "11 11 ", 331 | "1111 ", 332 | "11 11 ", 333 | "11 11" 334 | ]; 335 | font.l = [ 336 | " ", 337 | "11", 338 | "11", 339 | "11", 340 | "11", 341 | "11", 342 | "11" 343 | ]; 344 | font.m = [ 345 | " ", 346 | " ", 347 | "11111 ", 348 | "1 1 11", 349 | "1 1 11", 350 | "1 1 11", 351 | "1 1 11" 352 | ]; 353 | font.n = [ 354 | " ", 355 | " ", 356 | "1111 ", 357 | "1 11", 358 | "1 11", 359 | "1 11", 360 | "1 11" 361 | ]; 362 | font.o = [ 363 | " ", 364 | " ", 365 | " 1111 ", 366 | "11 11", 367 | "11 11", 368 | "11 11", 369 | " 1111 " 370 | ]; 371 | font.p = [ 372 | " ", 373 | " ", 374 | "11111 ", 375 | "11 11", 376 | "11 11", 377 | "11111 ", 378 | "11 " 379 | ]; 380 | font.q = [ 381 | " ", 382 | " ", 383 | " 11111", 384 | "11 11", 385 | "11 11", 386 | " 11111", 387 | " 11" 388 | ]; 389 | font.r = [ 390 | " ", 391 | " ", 392 | "1 111", 393 | "111 ", 394 | "11 ", 395 | "11 ", 396 | "11 " 397 | ]; 398 | font.s = [ 399 | " ", 400 | " ", 401 | " 111 ", 402 | "11 ", 403 | " 111 ", 404 | " 11", 405 | " 111 " 406 | ]; 407 | font.t = [ 408 | " ", 409 | " ", 410 | " 11 ", 411 | "111111", 412 | " 11 ", 413 | " 11 ", 414 | " 11 " 415 | ]; 416 | font.u = [ 417 | " ", 418 | " ", 419 | "11 11", 420 | "11 11", 421 | "11 11", 422 | "11 11", 423 | " 11111" 424 | ]; 425 | font.v = [ 426 | " ", 427 | " ", 428 | "11 11", 429 | "11 11", 430 | "11 11", 431 | " 1 1 ", 432 | " 11 " 433 | ]; 434 | font.w = [ 435 | " ", 436 | " ", 437 | "1 1 11", 438 | "1 1 11", 439 | "1 1 11", 440 | "1 1 11", 441 | "11111 " 442 | ]; 443 | font.x = [ 444 | " ", 445 | " ", 446 | "11 11", 447 | " 1111 ", 448 | " 11 ", 449 | " 1111 ", 450 | "11 11" 451 | ]; 452 | font.y = [ 453 | " ", 454 | " ", 455 | "11 11", 456 | "11 11", 457 | " 11111", 458 | " 11", 459 | " 1111 " 460 | ]; 461 | font.z = [ 462 | " ", 463 | " ", 464 | "111111", 465 | " 11 ", 466 | " 11 ", 467 | " 11 ", 468 | "111111" 469 | ]; 470 | font['0'] = [ 471 | " ", 472 | " ", 473 | " 1111 ", 474 | "11 11", 475 | "11 11", 476 | "11 11", 477 | " 1111 " 478 | ]; 479 | font['1'] = [ 480 | " ", 481 | " ", 482 | "111", 483 | " 11", 484 | " 11", 485 | " 11", 486 | " 11" 487 | ]; 488 | font['2'] = [ 489 | " ", 490 | " ", 491 | " 1111 ", 492 | "11 11", 493 | " 111 ", 494 | " 11 ", 495 | "111111" 496 | ]; 497 | font['3'] = [ 498 | " ", 499 | " ", 500 | "11111 ", 501 | " 11", 502 | " 111 ", 503 | " 11", 504 | "11111 " 505 | ]; 506 | font['4'] = [ 507 | " ", 508 | " ", 509 | " 111 ", 510 | " 1 11 ", 511 | "1 11 ", 512 | "111111", 513 | " 11 " 514 | ]; 515 | font['5'] = [ 516 | " ", 517 | " ", 518 | "11111 ", 519 | "11 ", 520 | "11111 ", 521 | " 11", 522 | "11111 " 523 | ]; 524 | font['6'] = [ 525 | " ", 526 | " ", 527 | " 1111 ", 528 | "11 ", 529 | "11111 ", 530 | "11 11", 531 | " 1111 " 532 | ]; 533 | font['7'] = [ 534 | " ", 535 | " ", 536 | "111111", 537 | "11 11", 538 | " 11 ", 539 | " 11 ", 540 | " 11 " 541 | ]; 542 | font['8'] = [ 543 | " ", 544 | " ", 545 | " 1111 ", 546 | "11 11", 547 | " 1111 ", 548 | "11 11", 549 | " 1111 " 550 | ]; 551 | font['9'] = [ 552 | " ", 553 | " ", 554 | " 1111 ", 555 | "11 11", 556 | " 11111", 557 | " 11", 558 | " 1111 " 559 | ]; 560 | font['#'] = [ 561 | " ", 562 | " ", 563 | " 1 1 ", 564 | "11111", 565 | " 1 1 ", 566 | "11111", 567 | " 1 1 " 568 | ]; 569 | font['('] = [ 570 | " 1", 571 | " 11 ", 572 | "11 ", 573 | "11 ", 574 | "11 ", 575 | " 11 ", 576 | " 1" 577 | ]; 578 | font[')'] = [ 579 | "1 ", 580 | " 11 ", 581 | " 11", 582 | " 11", 583 | " 11", 584 | " 11 ", 585 | "1 " 586 | ]; 587 | font['.'] = [ 588 | " ", 589 | " ", 590 | " ", 591 | " ", 592 | " ", 593 | "11", 594 | "11" 595 | ]; 596 | font['?'] = [ 597 | " 1111 ", 598 | "1 1", 599 | "1 1", 600 | " 11 ", 601 | " 11 ", 602 | " ", 603 | " 11 " 604 | ]; 605 | font['!'] = [ 606 | " ", 607 | " 1", 608 | " 11", 609 | " 1 ", 610 | " 1 ", 611 | " ", 612 | "1 " 613 | ]; 614 | module.exports = font; -------------------------------------------------------------------------------- /fonts/portable_vengeance.js: -------------------------------------------------------------------------------- 1 | const font = {}; 2 | font.A = [ 3 | ' ', 4 | ' 111 ', 5 | '11 1', 6 | '11 1', 7 | '11111', 8 | '11 1', 9 | ' ', 10 | ]; 11 | font.B = [ 12 | ' ', 13 | ' 1111', 14 | '11 1', 15 | '1111 ', 16 | '11 1', 17 | '1111 ', 18 | ' ', 19 | ]; 20 | font.C = [ 21 | ' ', 22 | ' 1111', 23 | '11 1', 24 | '11 ', 25 | '11 1', 26 | '1111 ', 27 | ' ', 28 | ]; 29 | font.D = [ 30 | ' ', 31 | ' 1111', 32 | '11 1', 33 | '11 1', 34 | '11 1', 35 | '1111 ', 36 | ' ', 37 | ]; 38 | font.E = [ 39 | ' ', 40 | ' 1111', 41 | '11 ', 42 | '11111', 43 | '11 ', 44 | '11111', 45 | ' ', 46 | ]; 47 | font.F = [ 48 | ' ', 49 | ' 1111', 50 | '11 ', 51 | '11111', 52 | '11 ', 53 | '11 ', 54 | ' ', 55 | ]; 56 | font.G = [ 57 | ' ', 58 | ' 1111', 59 | '11 ', 60 | '11 11', 61 | '11 11', 62 | '1111 ', 63 | ' ', 64 | ]; 65 | font.H = [ 66 | ' ', 67 | ' 1 1', 68 | '11 1', 69 | '11111', 70 | '11 1', 71 | '11 1', 72 | ' ', 73 | ]; 74 | font.I = [ 75 | ' ', 76 | '11111', 77 | ' 11 ', 78 | ' 11 ', 79 | ' 11 ', 80 | '11111', 81 | ' ', 82 | ]; 83 | font.J = [ 84 | ' ', 85 | '11111', 86 | ' 11 ', 87 | ' 11 ', 88 | ' 11 ', 89 | '111 ', 90 | ' ', 91 | ]; 92 | font.K = [ 93 | ' ', 94 | ' 1 1', 95 | '11 1 ', 96 | '111 ', 97 | '11 1 ', 98 | '11 1', 99 | ' ', 100 | ]; 101 | font.L = [ 102 | ' ', 103 | ' 1 ', 104 | '11 ', 105 | '11 ', 106 | '11 ', 107 | '11111', 108 | ' ', 109 | ]; 110 | font.M = [ 111 | ' ', 112 | '1 1', 113 | '11 11', 114 | '11111', 115 | '1 1 1', 116 | '1 1', 117 | ' ', 118 | ]; 119 | font.N = [ 120 | ' ', 121 | '1 1', 122 | '11 1', 123 | '111 1', 124 | '1 111', 125 | '1 1 ', 126 | ' ', 127 | ]; 128 | font.O = [ 129 | ' ', 130 | ' 1111', 131 | '11 1', 132 | '11 1', 133 | '11 1', 134 | '1111 ', 135 | ' ', 136 | ]; 137 | font.P = [ 138 | ' ', 139 | ' 1111', 140 | '11 1', 141 | '11 1', 142 | '11111', 143 | '11 ', 144 | ' ', 145 | ]; 146 | font.Q = [ 147 | ' ', 148 | ' 1111', 149 | '11 1', 150 | '11 1', 151 | '111 1', 152 | '1111 ', 153 | ' ', 154 | ]; 155 | font.R = [ 156 | ' ', 157 | ' 1111', 158 | '11 1', 159 | '11 1', 160 | '11111', 161 | '11 1 ', 162 | ' ', 163 | ]; 164 | font.S = [ 165 | ' ', 166 | ' 1111', 167 | '11 ', 168 | '11111', 169 | ' 11', 170 | '1111 ', 171 | ' ', 172 | ]; 173 | font.T = [ 174 | ' ', 175 | '11111', 176 | ' 11 ', 177 | ' 11 ', 178 | ' 11 ', 179 | ' 11 ', 180 | ' ', 181 | ]; 182 | font.U = [ 183 | ' ', 184 | ' 1 1', 185 | '11 1', 186 | '11 1', 187 | '11 1', 188 | '1111 ', 189 | ' ', 190 | ]; 191 | font.V = [ 192 | ' ', 193 | '11 11', 194 | '11 11', 195 | ' 1 1 ', 196 | ' 111 ', 197 | ' 1 ', 198 | ' ', 199 | ]; 200 | font.W = [ 201 | ' ', 202 | '1 1', 203 | '1 1 1', 204 | '11111', 205 | '11 11', 206 | '1 1', 207 | ' ', 208 | ]; 209 | font.X = [ 210 | ' ', 211 | '11 11', 212 | ' 111 ', 213 | ' 1 ', 214 | ' 111 ', 215 | '11 11', 216 | ' ', 217 | ]; 218 | font.Y = [ 219 | ' ', 220 | '11 11', 221 | '11 11', 222 | ' 111 ', 223 | ' 1 ', 224 | ' 1 ', 225 | ' ', 226 | ]; 227 | font.Z = [ 228 | ' ', 229 | '11111', 230 | ' 11', 231 | ' 11 ', 232 | ' 11 ', 233 | '11111', 234 | ' ', 235 | ]; 236 | font.a = [ 237 | ' ', 238 | '1111 ', 239 | ' 11', 240 | '11111', 241 | '1 11', 242 | ' 111 ', 243 | ' ', 244 | ]; 245 | font.b = [ 246 | ' ', 247 | '11 ', 248 | '1111 ', 249 | '11 1', 250 | '11 1', 251 | ' 111 ', 252 | ' ', 253 | ]; 254 | font.c = [ 255 | ' ', 256 | ' 111 ', 257 | '11 1', 258 | '11 ', 259 | '11 ', 260 | ' 1111', 261 | ' ', 262 | ]; 263 | font.d = [ 264 | ' ', 265 | ' 11', 266 | ' 1111', 267 | '1 11', 268 | '1 11', 269 | ' 111 ', 270 | ]; 271 | font.e = [ 272 | ' ', 273 | ' 111 ', 274 | '11 1', 275 | '11111', 276 | '11 ', 277 | ' 1111', 278 | ' ', 279 | ]; 280 | font.f = [ 281 | ' ', 282 | ' 111', 283 | ' 11 ', 284 | '11111', 285 | ' 11 ', 286 | ' 11 ', 287 | ' ', 288 | ]; 289 | font.g = [ 290 | ' ', 291 | ' 111 ', 292 | '1 11', 293 | ' 1111', 294 | ' 11', 295 | '1111 ', 296 | ' ', 297 | ]; 298 | font.h = [ 299 | ' ', 300 | ' 1 ', 301 | '11 ', 302 | '1111 ', 303 | '11 1', 304 | ' 1 1', 305 | ' ', 306 | ]; 307 | font.i = [ 308 | ' ', 309 | ' 1 ', 310 | ' ', 311 | ' 1 ', 312 | ' 11', 313 | ' 11', 314 | ' ', 315 | ]; 316 | font.j = [ 317 | ' ', 318 | ' 1', 319 | ' 11', 320 | ' 11', 321 | '1 11', 322 | ' 111 ', 323 | ' ', 324 | ]; 325 | font.k = [ 326 | ' ', 327 | ' 1 ', 328 | '11 11', 329 | '111 ', 330 | '11 1 ', 331 | ' 1 1', 332 | ' ', 333 | ]; 334 | font.l = [ 335 | ' ', 336 | ' 1', 337 | ' 11', 338 | ' 11', 339 | ' 11', 340 | ' 11', 341 | ' ', 342 | ]; 343 | font.m = [ 344 | ' ', 345 | ' 1 1 ', 346 | '11111', 347 | '11111', 348 | '1 1 1', 349 | '1 1 1', 350 | ' ', 351 | ]; 352 | font.n = [ 353 | ' ', 354 | ' 111 ', 355 | '11 1', 356 | '11 1', 357 | '11 1', 358 | '11 1', 359 | ' ', 360 | ]; 361 | font.o = [ 362 | ' ', 363 | ' 111 ', 364 | '11 1', 365 | '11 1', 366 | '11 1', 367 | ' 111 ', 368 | ' ', 369 | ]; 370 | font.p = [ 371 | ' ', 372 | ' 111 ', 373 | '11 1', 374 | '11 1', 375 | '1111 ', 376 | '11 ', 377 | ' ', 378 | ]; 379 | font.q = [ 380 | ' ', 381 | ' 111 ', 382 | '1 11', 383 | '1 11', 384 | ' 1111', 385 | ' 1 ', 386 | ' ', 387 | ]; 388 | font.r = [ 389 | ' ', 390 | ' 111 ', 391 | '11 1', 392 | '11 ', 393 | '11 ', 394 | '11 ', 395 | ' ', 396 | ]; 397 | font.s = [ 398 | ' ', 399 | ' 111 ', 400 | '11 ', 401 | '11111', 402 | ' 11', 403 | ' 111 ', 404 | ' ', 405 | ]; 406 | font.t = [ 407 | ' ', 408 | ' 11 ', 409 | '11111', 410 | ' 11 ', 411 | ' 11 ', 412 | ' 111', 413 | ' ', 414 | ]; 415 | font.u = [ 416 | ' ', 417 | ' 1 1', 418 | '11 1', 419 | '11 1', 420 | '11 1', 421 | ' 111 ', 422 | ' ', 423 | ]; 424 | font.v = [ 425 | ' ', 426 | '11 11', 427 | '11 11', 428 | ' 1 1 ', 429 | ' 111 ', 430 | ' 1 ', 431 | ' ', 432 | ]; 433 | font.w = [ 434 | ' ', 435 | '1 1', 436 | '1 1 1', 437 | '11111', 438 | '11 11', 439 | '1 1', 440 | ' ', 441 | ]; 442 | font.x = [ 443 | ' ', 444 | '1 1', 445 | '11 11', 446 | ' 111 ', 447 | '11 11', 448 | '1 1', 449 | ' ', 450 | ]; 451 | font.y = [ 452 | ' ', 453 | '1 1 ', 454 | '1 11', 455 | ' 1111', 456 | ' 11', 457 | '1111 ', 458 | ' ', 459 | ]; 460 | font.z = [ 461 | ' ', 462 | '1111 ', 463 | ' 111', 464 | ' 11 ', 465 | '11 ', 466 | ' 1111', 467 | ' ', 468 | ]; 469 | font['0'] = [ 470 | ' ', 471 | ' 1111', 472 | '11 1', 473 | '11 11', 474 | '11 1', 475 | '1111 ', 476 | ' ', 477 | ]; 478 | font['1'] = [ 479 | ' ', 480 | ' 11 ', 481 | '111 ', 482 | ' 11 ', 483 | ' 11 ', 484 | '1111', 485 | ' ', 486 | ]; 487 | font['2'] = [ 488 | ' ', 489 | '1111 ', 490 | ' 11', 491 | ' 1111', 492 | '11 ', 493 | '11111', 494 | ' ', 495 | ]; 496 | font['3'] = [ 497 | ' ', 498 | ' 111 ', 499 | '1 11', 500 | ' 11 ', 501 | '1 11', 502 | ' 111 ', 503 | ' ', 504 | ]; 505 | font['4'] = [ 506 | ' ', 507 | '1 11 ', 508 | '1 11 ', 509 | '11111', 510 | ' 11 ', 511 | ' 11 ', 512 | ' ', 513 | ]; 514 | font['5'] = [ 515 | ' ', 516 | '11111', 517 | '1 ', 518 | '1111 ', 519 | ' 11', 520 | '1111 ', 521 | ' ', 522 | ]; 523 | font['6'] = [ 524 | ' ', 525 | ' 1111', 526 | '11 ', 527 | '11111', 528 | '11 1', 529 | '1111 ', 530 | ' ', 531 | ]; 532 | font['7'] = [ 533 | ' ', 534 | '11111', 535 | ' 11', 536 | ' 11 ', 537 | ' 11 ', 538 | '11 ', 539 | ' ', 540 | ]; 541 | font['8'] = [ 542 | ' ', 543 | ' 111 ', 544 | '11 1', 545 | ' 111 ', 546 | '11 1', 547 | ' 111 ', 548 | ' ', 549 | ]; 550 | font['9'] = [ 551 | ' ', 552 | ' 1111', 553 | '1 11', 554 | '11111', 555 | ' 11', 556 | '1111 ', 557 | ' ', 558 | ]; 559 | font['0'] = [ 560 | ' ', 561 | ' 111 ', 562 | '111 1', 563 | '11111', 564 | '11111', 565 | ' 111 ', 566 | ' ', 567 | ]; 568 | module.exports = font; -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const execSync = require('child_process').execSync; 4 | const crypto = require('crypto'); 5 | const fs = require('fs'); 6 | const path = require('path'); 7 | const program = require('commander'); 8 | const moment = require('moment'); 9 | const term = require('terminal-kit').terminal; 10 | 11 | const p = require('./package.json'), 12 | dayInWeek = 7, chars = ['░', '▒', '▓', '█'], 13 | mapRange = (x, inMin, inMax, outMin, outMax) => (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin, 14 | readme = `[](${p.homepage}) \n[](${p.homepage})`; 15 | let alphabet = require('./alphabet'); 16 | 17 | program 18 | .version(p.version) 19 | .option('-s, --startdate [date]', 'Set the start date (rounded to week)') 20 | .option('-o, --origin [url]', 'Add origin url') 21 | .option('-p, --push', 'Push to origin') 22 | .option('-f, --force', 'Force push') 23 | .option('-f, --file [absolute path]', 'Specify a pattern file') 24 | .option('-t, --text [text]', 'Text to draw') 25 | .option('--font [font]', 'Set the font') 26 | .option('-i, --invert', 'Invert the colors') 27 | .option('-m, --multiplier [n]', 'Multiply the number of commits by n', s => parseInt(s), 1) 28 | .option('--flipvertical', 'Flip vertically the spray') 29 | .option('--fliphorizontal', 'Flip horizontally the spray') 30 | .parse(process.argv); 31 | 32 | if (process.argv.length < 3) { 33 | program.help(); 34 | } 35 | 36 | if (program.push && !program.origin) { 37 | console.warn('Option --origin required'); 38 | } 39 | 40 | if (program.font) { 41 | const fonts = fs.readdirSync(path.resolve(__dirname, 'fonts')).map(f => f.slice(0, -3)); 42 | if (!fonts.includes(program.font)) { 43 | return console.warn(`'${program.font}' font not found!\nFonts available: ${fonts.join(' ')}`); 44 | } 45 | alphabet = require(`./fonts/${program.font}`); 46 | } 47 | alphabet[' '] = alphabet[' '] || new Array(dayInWeek).fill(' '); 48 | 49 | let startDate, pattern; 50 | 51 | if (program.startdate) { 52 | startDate = moment(program.startdate); 53 | startDate.day(0); 54 | } else { 55 | startDate = moment.utc(); 56 | startDate.subtract(53, 'week'); 57 | startDate.day(7); 58 | } 59 | startDate.set({ hour: 0, minute: 0, second: 0, millisecond: 0 }); 60 | 61 | if (program.file) { 62 | pattern = JSON.parse(fs.readFileSync(program.file, 'utf8')); 63 | } else if (program.text) { 64 | pattern = new Array(dayInWeek).fill(' '); 65 | for (const l of program.text) { 66 | if (!(l in alphabet)) { 67 | console.warn(`'${l}' character not supported`); 68 | return console.info('Charset: ' + Object.keys(alphabet).join(' ')); 69 | } 70 | const letter = alphabet[l]; 71 | for (let i = 0; i < letter.length; i++) { 72 | pattern[i] += letter[i] + ' '; 73 | } 74 | } 75 | } else { 76 | return console.warn('Option --text or --file required'); 77 | } 78 | 79 | pattern = pattern.map(l => l.replace(/ /g, 0)); 80 | let matrix = pattern.map(line => line.split('').map(c => parseInt(c))); 81 | 82 | let seconds = startDate.unix(); 83 | const folder = 'spray-' + crypto.randomBytes(6).toString('hex'), file = 'readme.md'; 84 | fs.mkdirSync(folder); 85 | execSync(`git init ${folder}`); 86 | fs.writeFileSync(`./${folder}/${file}`, readme); 87 | execSync(`git -C ${folder} add ${file}`); 88 | term.windowTitle(p.name); 89 | term.reset(); 90 | term.hideCursor(); 91 | 92 | const maxWeeks = Math.max(...matrix.map(line => line.length)), area = maxWeeks * dayInWeek; 93 | 94 | if (program.invert) { 95 | const max = Math.max(...matrix.flat()); 96 | matrix = matrix.map(line => line.map(c => max - c)); 97 | } 98 | 99 | if (program.fliphorizontal) matrix = matrix.map(line => line.reverse()); 100 | if (program.flipvertical) matrix = matrix.reverse(); 101 | 102 | let commits = 0; 103 | for (let week = 0; week < maxWeeks; week++) { 104 | for (let day = 0; day < dayInWeek; day++) { 105 | const dayPassed = week * dayInWeek + day + 1; 106 | const progress = dayPassed / area; 107 | term.moveTo(1, dayInWeek + 1); 108 | term.bar(progress, { barStyle: term.brightWhite, innerSize: maxWeeks }); 109 | const commitsPerDay = matrix[day][week] * program.multiplier; 110 | for (let commit = 0; commit < commitsPerDay; commit++) { 111 | let progress2 = mapRange(commit, 0, commitsPerDay - 1, 0, chars.length - 1); 112 | if (isNaN(progress2)) progress2 = chars.length - 1; 113 | term.moveTo(week + 1, day + 1, chars[progress2]); 114 | execSync(`git -C ${folder} commit --allow-empty --date="${seconds}" -am '${p.name}'`); 115 | commits++; 116 | } 117 | seconds += 24 * 60 * 60; 118 | } 119 | } 120 | term.moveTo(1, dayInWeek + 1); 121 | term.eraseLine(); 122 | term.hideCursor(0); 123 | 124 | console.info(`${folder} generated (${commits} commits), starting date ${startDate.format('ddd MMM DD YYYY')}`); 125 | 126 | if (program.origin) { 127 | console.info(`Adding origin ${program.origin}`); 128 | execSync(`git -C ${folder} remote add origin ${program.origin}`); 129 | } 130 | 131 | if (program.push) { 132 | process.stdout.write('Pushing '); 133 | execSync(`git -C ${folder} push ${program.force ? '--force' : ''} -u origin main`); 134 | } 135 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github-spray", 3 | "version": "1.2.0", 4 | "description": "👾 Draw on your GitHub contribution graph ░▒▓█", 5 | "bin": { 6 | "github-spray": "index.js" 7 | }, 8 | "files": [ 9 | "index.js", 10 | "alphabet.js", 11 | "fonts", 12 | "patterns" 13 | ], 14 | "homepage": "https://github.com/Annihil/github-spray", 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/Annihil/github-spray.git" 18 | }, 19 | "keywords": [ 20 | "graffiti", 21 | "spray", 22 | "cli", 23 | "github", 24 | "graph", 25 | "contribution", 26 | "calendar", 27 | "heatmap", 28 | "art", 29 | "pixel-art" 30 | ], 31 | "author": "Annihil", 32 | "license": "MIT", 33 | "bugs": { 34 | "url": "https://github.com/Annihil/github-spray/issues" 35 | }, 36 | "dependencies": { 37 | "commander": "^2.19.0", 38 | "moment": "^2.23.0", 39 | "terminal-kit": "^1.26.10" 40 | }, 41 | "logo": "https://i.imgur.com/2DrTn0Z.gif", 42 | "badge": "https://img.shields.io/badge/Made%20With-Github%20Spray-lightgrey.svg?style=for-the-badge&logo=github" 43 | } 44 | -------------------------------------------------------------------------------- /patterns/space-invaders.json: -------------------------------------------------------------------------------- 1 | [ 2 | "11111111111111211211111111111211111211111112112111111", 3 | "11121112111111222221111111111122222111111122222111111", 4 | "112222222111122222221111111112222222111112 2 211111", 5 | "112 32 3211112 32 3211111111123 23 21111123 23 211111", 6 | "12222222211122222222211111112222222221112222222221111", 7 | "12112121221121211121211111112121112121112121112121111", 8 | "11111111111121121211211111122112121122112112121121111" 9 | ] 10 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # GitHub Spray 2 | [](https://www.npmjs.com/package/github-spray) 3 | []() 4 | 5 |
6 |
7 |