// Writes the dataset's CSV tables from panel2.json, laws.json and results2.json const fs=require('fs'),path=require('path');const dir=process.argv[2]||path.join(__dirname,'..'); const P=JSON.parse(fs.readFileSync(dir+'/panel2.json')),L=JSON.parse(fs.readFileSync(__dirname+'/laws.json')),R=JSON.parse(fs.readFileSync(dir+'/results2.json')); const q=v=>v==null?'':(/[",\n]/.test(String(v))?'"'+String(v).replace(/"/g,'""')+'"':String(v)); const csv=(rows,cols)=>cols.join(',')+'\n'+rows.map(r=>cols.map(c=>q(r[c])).join(',')).join('\n')+'\n'; const cols=['state','schoolYear','group','lawFirstYear','girls','boys','totalReported','girlsPop14to17','boysPop14to17','girlsPer1000','boysPer1000','girlsSharePct','girlsFlagFootball','girlsWrestling','girlsExFlagWrestlingPer1000']; P.sort((a,b)=>a.state.localeCompare(b.state)||a.schoolYear.localeCompare(b.schoolYear)); fs.writeFileSync(dir+'/state-year-participation.csv',csv(P,cols)); fs.writeFileSync(dir+'/state-laws.csv',csv(L.map(l=>({...l,enjoined:l.enjoined?'yes':'no',note:l.note||''})),['state','bill','enacted','firstYear','enjoined','note'])); console.log('ok',P.length,L.length);