prettier-plugin-multiline-arrays
Version:
Prettier plugin to force all arrays to be multiline.
44 lines (43 loc) • 1.67 kB
JavaScript
import { getObjectTypedKeys, mapObjectValues } from '@augment-vir/common';
import { parsers as babelParsers } from 'prettier/plugins/babel';
import { parsers as tsParsers } from 'prettier/plugins/typescript';
import { defaultMultilineArrayOptions, optionHelp } from './options.js';
import { wrapParser } from './preprocessing.js';
import { multilineArrayPrinter } from './printer/multiline-array-printer.js';
// exports in case others want to utilize these
export * from './options.js';
export { pluginMarker } from './plugin-marker.js';
export const parsers = mapObjectValues({
typescript: tsParsers.typescript,
babel: babelParsers.babel,
'babel-ts': babelParsers['babel-ts'],
json: babelParsers.json,
json5: babelParsers.json5,
}, (languageName, parserEntry) => {
return wrapParser(parserEntry, languageName);
});
const printers = {
estree: multilineArrayPrinter,
'estree-json': multilineArrayPrinter,
};
export const options = getObjectTypedKeys(defaultMultilineArrayOptions).reduce((accum, key) => {
const defaultValue = defaultMultilineArrayOptions[key];
const supportOption = {
name: key,
type: (typeof defaultValue === 'number' ? 'int' : typeof defaultValue),
category: 'multilineArray',
default: defaultValue,
description: optionHelp[key],
};
accum[key] = supportOption;
return accum;
}, {});
export const defaultOptions = defaultMultilineArrayOptions;
/** Not actually exported: this is just for type checking purposes. */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const plugin = {
options,
printers,
defaultOptions,
parsers,
};