@viewdo/dxp-story-cli
Version:
README.md
48 lines (38 loc) • 1.78 kB
JavaScript
const IndexJsWriter = require('../common/index.js.js');
const SettingsJsWriter = require('../common/_settings.js.js');
const isEmpty = require('lodash/isEmpty');
const camelCase = require('lodash/camelCase');
const sortBy = require('lodash/sortBy');
class PageElementsFileCreator {
constructor(_console = console) {
Object.assign(this, {
index_js_writer: new IndexJsWriter(_console),
settings_js_writer: new SettingsJsWriter(__dirname, _console),
camelCase,
isEmpty,
sortBy
});
}
create(ivx_js_config, folder_path) {
const { index_js_writer, settings_js_writer, camelCase, sortBy } = this;
const { pageElements: page_elements = [] } = ivx_js_config;
const sorted_page_elements = sortBy(page_elements, 'id');
const page_elements_variables = sorted_page_elements.reduce((current_page_elements_variables, page_element, index) => {
const { id: page_element_id = `page-element-${index}` } = page_element;
current_page_elements_variables[page_element_id] = `${camelCase(page_element_id)}`;
return current_page_elements_variables;
}, {});
const page_elements_imports = sorted_page_elements.map((page_element, index) => {
const { id: page_element_id = `page-element-${index}` } = page_element;
const variable = page_elements_variables[page_element_id];
const file_path = `./${page_element_id}`;
return {
file_path,
variable
}
});
index_js_writer.write(folder_path);
settings_js_writer.write({ imports: page_elements_imports }, folder_path);
}
}
module.exports = PageElementsFileCreator;