@viewdo/dxp-story-cli
Version:
README.md
67 lines (55 loc) • 2.61 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 {state : state_file_names } = require("../_utilities/file-names");
const SettingsStatesJSWriter = require("./_settings.states.js.js");
class EmbeddedViewsRenderer {
constructor(_console = console) {
Object.assign(this, {
index_js_writer: new IndexJsWriter(_console),
settings_js_writer: new SettingsJsWriter(__dirname, _console),
settings_states_js_writer: new SettingsStatesJSWriter(_console),
camelCase,
embedded_file_names : state_file_names.embedded,
isEmpty
});
}
create(state, state_embedded_views_path) {
const { index_js_writer, settings_js_writer, camelCase, embedded_file_names, settings_states_js_writer, isEmpty} = this;
const { embeddedViews: embedded_views = [] } = state;
if(isEmpty(embedded_views)) return;
const embedded_view_variables = embedded_views.reduce((current_embedded_view_variables, embedded_view, index) => {
const { id: embedded_view_id } = embedded_view;
current_embedded_view_variables[embedded_view_id] = `${camelCase(embedded_view_id)}`;
return current_embedded_view_variables;
}, {});
const imports = embedded_views.map((embedded_view, index) => {
const { id: embedded_view_id } = embedded_view;
const variable = embedded_view_variables[embedded_view_id];
const file_path = `./${embedded_view_id}`;
return {
variable,
file_path
}
});
const state_settings_imports = embedded_views.map((embedded_view, index) => {
const { id: embedded_view_id } = embedded_view;
const variable = embedded_view_variables[embedded_view_id];
const file_path = `./${embedded_view_id}/${embedded_file_names.states_settings()}`;
return {
variable,
file_path
}
});
const embedded_template_data = {
embedded_views,
state_settings_imports,
imports
}
index_js_writer.write(state_embedded_views_path);
settings_js_writer.write(embedded_template_data, state_embedded_views_path);
settings_states_js_writer.write(embedded_template_data, state_embedded_views_path);
}
}
module.exports = EmbeddedViewsRenderer;