# @scaffdog/core

> @scaffdog/core is a low layer of scaffdog.

Latest version **4.1.0** (published 2024-09-16) · MIT license · 0 weekly downloads

## Install

```sh
npm install @scaffdog/core
pnpm add @scaffdog/core
yarn add @scaffdog/core
bun add @scaffdog/core
```

## Health

**Score 45/100 (D)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high maintenance score; high quality score.

Warnings: low downloads.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 4.1.0 |
| Published | 2024-09-16 |
| First published | 2021-01-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 6 |
| Unpacked size | 5.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 774 |
| Author | wadackel |
| Maintainers | wadackel |
| Keywords | scaffdog, markdown, template |

## Links

- npm: https://www.npmjs.com/package/@scaffdog/core
- Repository: https://github.com/scaffdog/scaffdog
- Homepage: https://github.com/scaffdog/scaffdog/tree/main/packages/@scaffdog/core
- Issues: https://github.com/scaffdog/scaffdog/issues
- npm.io page: https://npm.io/package/@scaffdog/core

## Dependencies (6)

- [unified](https://npm.io/package/unified.md) ^10.1.2
- [remark-parse](https://npm.io/package/remark-parse.md) ^10.0.2
- [@scaffdog/types](https://npm.io/package/@scaffdog/types.md) 4.1.0
- [@scaffdog/engine](https://npm.io/package/@scaffdog/engine.md) 4.1.0
- [mdast-util-to-string](https://npm.io/package/mdast-util-to-string.md) ^4.0.0
- [unist-util-visit-parents](https://npm.io/package/unist-util-visit-parents.md) ^6.0.1

## Alternatives

- [@mdxeditor/editor](https://npm.io/package/@mdxeditor/editor.md) — 962.4K weekly downloads
- [mmdb-lib](https://npm.io/package/mmdb-lib.md) — 680.9K weekly downloads
- [playcanvas](https://npm.io/package/playcanvas.md) — 36.2K weekly downloads
- [@glw907/cairn-cms](https://npm.io/package/@glw907/cairn-cms.md) — 967 weekly downloads
- [markdown-to-confluence](https://npm.io/package/markdown-to-confluence.md) — 103 weekly downloads

## Recent versions

- 4.1.0 (latest) — 2024-09-16
- 3.0.0-canary.1 (canary) — 2023-07-17
- 4.0.0 — 2024-04-28
- 3.0.0 — 2023-07-30
- 3.0.0-canary.0 — 2023-07-15
- 2.5.1 — 2023-06-25
- 2.5.0 — 2023-02-25
- 2.5.0-canary.3 — 2023-02-25
- 2.5.0-canary.2 — 2023-02-25
- 2.5.0-canary.1 — 2023-02-23
- 2.5.0-canary.0 — 2023-02-19
- 2.4.0 — 2022-09-25
- 2.4.0-canary.0 — 2022-09-24
- 2.3.1 — 2022-09-22
- 2.3.0 — 2022-09-20
- … 31 more at https://npm.io/package/@scaffdog/core/versions

## README

# @scaffdog/core

`@scaffdog/core` is a low layer of scaffdog.

## Install

Install via npm:

```bash
$ npm install @scaffdog/core
```

## Usage

**template.md:**

````markdown
# Variables

- key: `{{ input | upper }}`

# `{{ input }}.txt`

```
{{ output.path }}
```
````

**index.ts:**

```typescript
import fs from 'fs';
import path from 'path';
import { createContext, compile } from '@scaffdog/engine';
import { extract } from '@scaffdog/core';

const source = fs.readFileSync('template.md', 'utf8');
const context = createContext({});

const { variables, templates } = extract(source, context);

for (const [key, ast] of variables) {
  context.variables.set(key, compile(ast, context));
}

for (const template of templates) {
  const filename = compile(template.filename, context);

  const data = compile(
    template.content,
    extendContext({
      variables: new Map([
        [
          'output',
          {
            path: filename,
          },
        ],
      ]),
    }),
  );

  fs.writeFileSync(filename, data);
}

// --> Generated "path/to/scaffdog.txt"
```

---
_Source: https://npm.io/package/@scaffdog/core · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
