Regular expression crossword project style textarea border 1px solid green display inline resize none style a href onclick savefile Save a a href onclick loadfile Load a div id container div script let nx 2 let ny 3 function build xx yy let container document getElementById container container innerHTML nx xx ny yy for let y 1 y ny 1 y for let x 1 x nx 1 x let t document createElement textarea container appendChild t t value t style background color orange t x x t y y t onclick e selectcell e t x y t oninput e selectcell e t x y t onkeypress e inputcellcell e t x y t classList add cell corners if x 0 y 0 x nx 1 y ny 1 x 0 y ny 1 x nx 1 y 0 t classList add cornercell t style background color transparent t value continue left or right else if x 0 x nx 1 t style background color yellow t classList add xcell continue top or bottom else if y 0 y ny 1 t style background color blue t classList add ycell continue middle else t style background color gray t classList add bodycell t setAttribute maxlength 1 const characters ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 const randChar characters charAt Math floor Math random characters length t value randChar next line if x nx 1 container appendChild document createElement br function selectcell e t x y console log selectcell x y update function inputcellcell e t x y if t className bodycell let charCode e keyCode let ascii String fromCharCode charCode if ascii matchAll a zA Z0 9 g length 0 t value ascii console log charCode update function update let cells document getElementsByClassName bodycell let xcells document getElementsByClassName xcell let ycells document getElementsByClassName ycell console log cells length cells cells xcells xcells ycells ycells cells forEach c let left xcells filter cc return cc x 0 cc y c y 0 let ss cells forEach ca if ca y left y ss ca value try let re new RegExp left value console log left left value console log ss ss let res ss match re if res res 0 length ss length left style background color green else left style background color orange catch e let right xcells filter cc return cc x nx 1 cc y c y 0 let ss cells forEach ca if ca y right y ss ca value try let re new RegExp right value console log right right value console log ss ss let res ss match re if res res 0 length ss length right style background color green else right style background color orange catch e let top ycells filter cc return cc y 0 cc x c x 0 let ss cells forEach ca if ca x top x ss ca value try let re new RegExp top value let res ss match re if res res 0 length ss length top style background color green else top style background color orange catch e let bottom ycells filter cc return cc y ny 1 cc x c x 0 let ss cells forEach ca if ca x bottom x ss ca value try let re new RegExp bottom value let res ss match re if res res 0 length ss length bottom style background color green else bottom style background color orange catch e build nx ny update function savefile let curdata sig rcross xbdev net nx nx ny ny cells let cells document getElementsByClassName cell cells cells cells forEach c curdata cells push c value let jsonTXT JSON stringify curdata let a document createElement a let file new Blob jsonTXT type text plain a href URL createObjectURL file a download mycrossword rcross a click URL revokeObjectURL a href function loadfile let inputdiv document createElement input inputdiv type file inputdiv accept rcross inputdiv onchange function const fileList this files let reader new FileReader no arguments reader readAsText this files 0 reader onload function let indata JSON parse reader result if indata sig rcross xbdev net alert incorrect file format not rcross return build indata nx indata ny let cells document getElementsByClassName cell indata cells forEach c i cells i value c update inputdiv click console log ready script
else left style background color orange catch e let right xcells filter cc return cc x nx 1 cc y c y 0 let ss cells forEach ca if ca y right y ss ca value try let re new RegExp right value console log right right value console log ss ss let res ss match re if res res 0 length ss length right style background color green else right style background color orange catch e let top ycells filter cc return cc y 0 cc x c x 0 let ss cells forEach ca if ca x top x ss ca value try let re new RegExp top value let res ss match re if res res 0 length ss length top style background color green else top style background color orange catch e let bottom ycells filter cc return cc y ny 1 cc x c x 0 let ss cells forEach ca if ca x bottom x ss ca value try let re new RegExp bottom value let res ss match re if res res 0 length ss length bottom style background color green else bottom style background color orange catch e build nx ny update function savefile let curdata sig rcross xbdev net nx nx ny ny cells let cells document getElementsByClassName cell cells cells cells forEach c curdata cells push c value let jsonTXT JSON stringify curdata let a document createElement a let file new Blob jsonTXT type text plain a href URL createObjectURL file a download mycrossword rcross a click URL revokeObjectURL a href function loadfile let inputdiv document createElement input inputdiv type file inputdiv accept rcross inputdiv onchange function const fileList this files let reader new FileReader no arguments reader readAsText this files 0 reader onload function let indata JSON parse reader result if indata sig rcross xbdev net alert incorrect file format not rcross return build indata nx indata ny let cells document getElementsByClassName cell indata cells forEach c i cells i value c update inputdiv click console log ready script