Skip to content

More functional presets #21

@kwaa

Description

@kwaa

Currently, the FFF preset looks like this:

import type { FFFTransformPreset } from 'fff-flavored-frontmatter'

// input:
// date: 2023-02-23
// output:
// date: 2023-02-23
// created: 2023-02-23
const basic: FFFTransformPreset = {
  created: 'date',
}

However, it would be nice to be able to rename/remove keys:

type FFFPreset<T extends Record<string, unknown> = Record<string, unknown>>
  = (fm: FFFFlavoredFrontmatter & T) => FFFFlavoredFrontmatter & T

The new preset will provide and accept the full Frontmatter.

Then you can do this:

const rename = (obj: Record<string, string>): FFFPreset => (fm) =>
  Object.fromEntries(
    Object.entries(fm)
      .map(([key, value]) =>
        Object.keys(obj).includes(key)
          ? (Object.keys(fm).includes(obj[key])
            ? [undefined, undefined]
            : [obj[key], value])
          : [key, value],
      ),
  )

const remove = (arr: string[]): FFFPreset => (fm) =>
  Object.fromEntries(
    Object.entries(fm)
      .filter(([key]) => arr.includes(key))
    )
  )

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions