# deez-literal

> Template Tag allowing for a MultiDimensional string literal. Allows passing in arrays to a template and returning an array of strings of all possible combinations.

Latest version **0.0.3** (published 2023-07-29) · MIT license · 0 weekly downloads

## Install

```sh
npm install deez-literal
pnpm add deez-literal
yarn add deez-literal
bun add deez-literal
```

## Health

**Score 30/100 (F)** — status: abandoned.

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

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.3 |
| Published | 2023-07-29 |
| First published | 2023-07-29 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM |
| Dependencies | 0 |
| Unpacked size | 13.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Eric Kwoka |
| Maintainers | ekwoka |
| Keywords | tagged template, Iterator, MultiDimensional, deez |

## Links

- npm: https://www.npmjs.com/package/deez-literal
- npm.io page: https://npm.io/package/deez-literal

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 0.0.3 (latest) — 2023-07-29
- 0.0.2 — 2023-07-29
- 0.0.1 — 2023-07-29

## README

[<img src="https://img.shields.io/npm/v/deez-literal?label=%20&style=for-the-badge&logo=pnpm&logoColor=white">](https://www.npmjs.com/package/deez-literal)
<img src="https://img.shields.io/npm/dt/deez-literal?style=for-the-badge&logo=npm&logoColor=white" >
[<img src="https://img.shields.io/bundlephobia/minzip/deez-literal?style=for-the-badge&logo=esbuild&logoColor=white">](https://bundlephobia.com/package/deez-literal)

# deez-literal

`deez-literal` is a simple utility for working with multi-dimensional template literals.

Simply, now if you have values, you want to map into strings, you can use a template tag.

## Examples

```js
const subjects = ['world', 'mom']
// Before 💩
const greetings = subjects.map(subject => `Hello ${subject}!`)

// Now 🔥
const greetings = deez`Hello ${subjects}!`

// Both return
['Hello world!', 'Hello mom!']
```

## Exports

### `deez`

The main template tag. Takes in a template tag, and returns an array of strings composed from the templates, providing a string for EVERY possible combination of expressions made from what is provided.

```js
// simple
const subjects = ['world', 'mom'];
deez`Hello ${subjects}!`; // ['Hello world!', 'Hello mom!']

// complex
const greetingWords = ['Hello', 'Hi'];
deez`${greetingWords} ${subjects}!`;
// ['Hello world!', 'Hello mom!', 'Hi world!', 'Hi mom!']

// can still accept plain values
const user = 'Mom';
deez`${greetingWords} ${user}! Here's a joke: ${jokes}`;
// ['Hello mom! Here's a joke: ...', 'Hi mom! Here's a joke: ...', ...]
```

When values aren't arrays, they are treated like single value arrays, making using this similarly to a normal template literal very simple!

> It may be important to note the order of the results. These are based on looping through the last expressions options first, then the next to last, and so on.

### `deezIter`

Internal iterator used for making the messages. Can be directly used to get the iterator that you can stream through to other things only as needed.

```js
const iter = deezIter`Hello ${subjects}!`;
iter.next(); // 'Hello world!'
iter.next(); // 'Hello mom!'

// or
for (const greeting of deezIter`Hello ${subjects}!`) greeting; // 'Hello world!' | 'Hello mom!'
```

### `arrangeDimensions`

Signature: `(first: Iterable<T>, others: Iterable<T>[]) => Generator<T[]>`

Even MORE internal iterator for figuring out all the combinations of the passed in expressions need. Really just exposed because, sure, maybe someone will find it useful;

```js
const iter = arrangeDimensions(['Hello', 'Hi'], [['World', 'Mom']]);
iter.next(); // ['Hello', 'World']
iter.next(); // ['Hello', 'Mom']
iter.next(); // ['Hi', 'World']
iter.next(); // ['Hi', 'Mom']
```

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