2021-01-01 00:50:04 +01:00
|
|
|
const prepare = require('./prepare')
|
|
|
|
|
const points_lib = require('./points')
|
|
|
|
|
const outlines_lib = require('./outlines')
|
|
|
|
|
const cases_lib = require('./cases')
|
|
|
|
|
const pcbs_lib = require('./pcbs')
|
|
|
|
|
|
|
|
|
|
const noop = () => {}
|
|
|
|
|
|
2020-06-16 22:24:46 +02:00
|
|
|
module.exports = {
|
2021-01-01 00:50:04 +01:00
|
|
|
version: '__ergogen_version',
|
|
|
|
|
process: (config, debug=false, logger=noop) => {
|
|
|
|
|
|
|
|
|
|
logger('Preparing input...')
|
|
|
|
|
config = prepare.unnest(config)
|
|
|
|
|
config = prepare.inherit(config)
|
|
|
|
|
const results = {}
|
|
|
|
|
|
|
|
|
|
logger('Parsing points...')
|
|
|
|
|
const [points, units] = points_lib.parse(config.points)
|
|
|
|
|
if (debug) {
|
|
|
|
|
results.points = {
|
|
|
|
|
demo: points_lib.visualize(points),
|
|
|
|
|
data: points,
|
|
|
|
|
units: units
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
logger('Generating outlines...')
|
|
|
|
|
const outlines = outlines_lib.parse(config.outlines || {}, points, units)
|
|
|
|
|
results.outlines = {}
|
|
|
|
|
for (const [name, outline] of Object.entries(outlines)) {
|
|
|
|
|
if (!debug && name.startsWith('_')) continue
|
|
|
|
|
results.outlines[name] = outline
|
|
|
|
|
}
|
|
|
|
|
|
2021-01-01 21:46:01 +01:00
|
|
|
logger('Extruding cases...')
|
|
|
|
|
const cases = cases_lib.parse(config.cases || {}, outlines, units)
|
|
|
|
|
results.cases = {}
|
|
|
|
|
for (const [case_name, case_text] of Object.entries(cases)) {
|
|
|
|
|
if (!debug && case_name.startsWith('_')) continue
|
|
|
|
|
results.cases[case_name] = case_text
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
logger('Scaffolding PCBs...')
|
|
|
|
|
const pcbs = pcbs_lib.parse(config.pcbs || {}, points, outlines, units)
|
|
|
|
|
results.pcbs = {}
|
|
|
|
|
for (const [pcb_name, pcb_text] of Object.entries(pcbs)) {
|
|
|
|
|
if (!debug && pcb_name.startsWith('_')) continue
|
|
|
|
|
results.pcbs[pcb_name] = pcb_text
|
|
|
|
|
}
|
2021-01-01 00:50:04 +01:00
|
|
|
|
|
|
|
|
return results
|
|
|
|
|
}
|
2020-06-16 22:24:46 +02:00
|
|
|
}
|