sd-wildcards-utils
Version:
Parse Stable Diffusion wildcards source to a YAML object.
64 lines (55 loc) • 1.48 kB
text/typescript
import { Document } from 'yaml';
import { IOptionsParseDocument, IOptionsSharedWildcardsYaml, IOptionsStringify } from './types';
export function getOptionsShared<T extends IOptionsSharedWildcardsYaml>(opts?: T): Pick<T, keyof IOptionsSharedWildcardsYaml >
{
opts ??= {} as T;
return {
allowMultiRoot: opts.allowMultiRoot,
disableUniqueItemValues: opts.disableUniqueItemValues,
minifyPrompts: opts.minifyPrompts,
disableUnsafeQuote: opts.disableUnsafeQuote,
}
}
export function defaultOptionsStringifyMinify()
{
return {
lineWidth: 0,
minifyPrompts: true,
} as const satisfies IOptionsStringify
}
export function defaultOptionsStringify(opts?: IOptionsStringify): IOptionsStringify
{
return {
blockQuote: true,
defaultKeyType: 'PLAIN',
defaultStringType: 'PLAIN',
//lineWidth: 0,
//minContentWidth: 100,
//indentSeq: false,
//doubleQuotedMinMultiLineLength: 10,
collectionStyle: 'block',
uniqueKeys: true,
...opts,
} satisfies IOptionsStringify
}
export function defaultOptionsParseDocument(opts?: IOptionsParseDocument): IOptionsParseDocument
{
opts ??= {};
opts = {
//keepSourceTokens: true,
prettyErrors: true,
...opts,
toStringDefaults: defaultOptionsStringify({
...getOptionsShared(opts),
...opts.toStringDefaults,
}),
}
return opts
}
export function getOptionsFromDocument<T extends Document>(doc: T, opts?: IOptionsParseDocument)
{
return {
...doc.options,
...opts,
} as IOptionsParseDocument
}