mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-04 03:20:44 +00:00
59 lines
1.6 KiB
Plaintext
59 lines
1.6 KiB
Plaintext
/* @flow */
|
|
|
|
import spacer from './spacer';
|
|
import formatPropValue from './formatPropValue';
|
|
import type { Options } from './../options';
|
|
|
|
export default (
|
|
name: string,
|
|
hasValue: boolean,
|
|
value: any,
|
|
hasDefaultValue: boolean,
|
|
defaultValue: any,
|
|
inline: boolean,
|
|
lvl: number,
|
|
options: Options
|
|
): {
|
|
attributeFormattedInline: string,
|
|
attributeFormattedMultiline: string,
|
|
isMultilineAttribute: boolean,
|
|
} => {
|
|
if (!hasValue && !hasDefaultValue) {
|
|
throw new Error(
|
|
`The prop "${name}" has no value and no default: could not be formatted`
|
|
);
|
|
}
|
|
|
|
const usedValue = hasValue ? value : defaultValue;
|
|
|
|
const { useBooleanShorthandSyntax, tabStop } = options;
|
|
|
|
const formattedPropValue = formatPropValue(usedValue, inline, lvl, options);
|
|
|
|
let attributeFormattedInline = ' ';
|
|
let attributeFormattedMultiline = `\n${spacer(lvl + 1, tabStop)}`;
|
|
const isMultilineAttribute = formattedPropValue.includes('\n');
|
|
|
|
if (
|
|
useBooleanShorthandSyntax &&
|
|
formattedPropValue === '{false}' &&
|
|
!hasDefaultValue
|
|
) {
|
|
// If a boolean is false and not different from it's default, we do not render the attribute
|
|
attributeFormattedInline = '';
|
|
attributeFormattedMultiline = '';
|
|
} else if (useBooleanShorthandSyntax && formattedPropValue === '{true}') {
|
|
attributeFormattedInline += `${name}`;
|
|
attributeFormattedMultiline += `${name}`;
|
|
} else {
|
|
attributeFormattedInline += `${name}=${formattedPropValue}`;
|
|
attributeFormattedMultiline += `${name}=${formattedPropValue}`;
|
|
}
|
|
|
|
return {
|
|
attributeFormattedInline,
|
|
attributeFormattedMultiline,
|
|
isMultilineAttribute,
|
|
};
|
|
};
|