generator-begcode
Version:
Spring Boot + Angular/React/Vue in one handy generator
51 lines (50 loc) • 1.49 kB
JavaScript
import { merge } from '../utils/object-utils.js';
import JDLEnumValue from './jdl-enum-value.js';
export default class JDLEnum {
comment;
name;
values;
constructor(args) {
const merged = merge(defaults(), args);
if (!merged.name) {
throw new Error("The enum's name must be passed to create an enum.");
}
this.comment = merged.comment;
this.name = merged.name;
this.values = new Map(merged.values.map((entry) => {
return [entry.key, new JDLEnumValue(entry.key, entry.value, entry.comment)];
}));
}
getValuesAsString() {
return stringifyValues(this.values).join(',');
}
getValueJavadocs() {
const documentations = {};
this.values.forEach(jdlEnumValue => {
if (jdlEnumValue.comment) {
documentations[jdlEnumValue.name] = jdlEnumValue.comment;
}
});
return documentations;
}
toString() {
let comment = '';
if (this.comment) {
comment += `/**\n * ${this.comment}\n */\n`;
}
const values = stringifyValues(this.values);
return `${comment}enum ${this.name} {\n ${values.join(',\n ')}\n}`;
}
}
function defaults() {
return {
values: [],
};
}
function stringifyValues(jdlEnumValues) {
const values = [];
jdlEnumValues.forEach(jdlEnumValue => {
values.push(jdlEnumValue.toString());
});
return values;
}