UNPKG

generator-jhipster

Version:

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

39 lines (38 loc) 2.31 kB
/** * Copyright 2013-2026 the original author or authors from the JHipster project. * * This file is part of the JHipster project, see https://www.jhipster.tech/ * for more information. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 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}`; }, });