UNPKG

armo-breadboard

Version:

Edit a live React component's source in real time.

34 lines (29 loc) 915 B
export default class BreadboardBuilder { constructor(transforms) { this.transforms = transforms // Holds the arguments from the last call to `run` this.lastSources = {} this.lastTransformedSources = {} } buildAll(sources) { const transformedSources = {} const filenames = Object.keys(sources) for (let filename of filenames) { const transformedSource = this.buildOne(filename, sources[filename]) transformedSources[filename] = transformedSource } return transformedSources } buildOne(filename, source) { if (source === this.lastSources[filename]) { return this.lastTransformedSources[filename] } let transformedSource = source for (let [pattern, transform] of this.transforms) { if (pattern.test(filename)) { transformedSource = transform(transformedSource, filename) } } return transformedSource } }