UNPKG

gen-jhipster

Version:

VHipster - Spring Boot + Angular/React/Vue in one handy generator

21 lines (20 loc) 1.55 kB
import { createNeedleCallback } from "../../base-core/support/needles.js"; export const createEnumNeedleCallback = ({ enumName, enumValues, needle = 'add-item-to-enum', needleValuePrefix = `${enumName} {\n`, }) => createNeedleCallback({ needle, contentToAdd: (content, needleData) => { const needleValueSuffix = `;\n`; const needleValueSeparator = `,\n`; let beforeContent = content.slice(0, needleData.needleLineIndex); const afterContent = content.slice(needleData.needleLineIndex); // Drop extra line ending if it exists, can be caused by prettier formatting beforeContent = beforeContent.endsWith('/n/n') ? beforeContent.slice(0, -1) : beforeContent; if (!beforeContent.includes(needleValuePrefix) || !beforeContent.endsWith(needleValueSuffix)) { throw new Error(`Invalid file content ${beforeContent}, expected to contain ${needleValuePrefix}`); } const beforeNeedleContentIndex = beforeContent.lastIndexOf(needleValuePrefix) + needleValuePrefix.length; const beforeNeedleContent = beforeContent.slice(0, beforeNeedleContentIndex); let needleContent = beforeContent.slice(beforeNeedleContentIndex).slice(0, -needleValueSuffix.length); needleContent = needleContent.trim() ? needleContent : ''; return `${beforeNeedleContent}${needleContent}${needleContent ? needleValueSeparator : ''}${enumValues.map(value => `${needleData.indentPrefix}${value}`).join(needleValueSeparator)}${needleValueSuffix}${afterContent}`; }, });