UNPKG

@viewdo/dxp-story-cli

Version:
48 lines (38 loc) 1.78 kB
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;