10 lines
933 B
JavaScript
10 lines
933 B
JavaScript
'use strict';
|
|
// Keep editable/auditable maps separate in source, but ship at most two
|
|
// same-province stages per classic script to meet the 200-file ZIP limit.
|
|
module.exports=function packCountyMaps(index,readStage){
|
|
const levels=index.levels.map(meta=>({...meta})),provinces=new Map(),files=new Map(),seen=new Set();
|
|
for(const meta of levels){if(!/^\d{6}$/.test(meta.id)||!/^\d{6}$/.test(meta.province)||seen.has(meta.id))throw Error('Invalid county catalog');seen.add(meta.id);if(!provinces.has(meta.province))provinces.set(meta.province,[]);provinces.get(meta.province).push(meta);}
|
|
for(const entries of provinces.values()){entries.sort((a,b)=>a.id.localeCompare(b.id));for(let i=0;i<entries.length;i+=2){const group=entries.slice(i,i+2),file='county/'+group[0].id+'.js';for(const meta of group)meta.path='./'+file;files.set(file,group.map(meta=>readStage(meta.id)).join('\n'));}}
|
|
return {index:{...index,levels},files};
|
|
};
|