# list-item

> Generate a single formatted list item, allowing you to easily generate lists with proper indentation, bullets, numbers or other leading characters.

Latest version **2.0.0** (published 2018-07-05) · MIT license · 0 weekly downloads

## Install

```sh
npm install list-item
pnpm add list-item
yarn add list-item
bun add list-item
```

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2018-07-05 |
| First published | 2015-02-21 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=4 |
| Dependencies | 2 |
| Unpacked size | 12 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 8 |
| Author | Jon Schlinkert |
| Maintainers | adjohnson916, jonschlinkert |
| Keywords | bullet, format, item, list, list-item, markdown, numbered, numerals, ordered, roman, test, unordered |

## Links

- npm: https://www.npmjs.com/package/list-item
- Repository: https://github.com/jonschlinkert/list-item
- Issues: https://github.com/jonschlinkert/list-item/issues
- npm.io page: https://npm.io/package/list-item

## Dependencies (2)

- [is-number](https://npm.io/package/is-number.md) ^7.0.0
- [fill-range](https://npm.io/package/fill-range.md) ^6.0.0

## Alternatives

- [duck](https://npm.io/package/duck.md) — 4.2M weekly downloads
- [ava](https://npm.io/package/ava.md) — 560.2K weekly downloads
- [storybook-addon-module-mock](https://npm.io/package/storybook-addon-module-mock.md) — 71.7K weekly downloads
- [vest](https://npm.io/package/vest.md) — 50.1K weekly downloads
- [@ethereum-waffle/mock-contract](https://npm.io/package/@ethereum-waffle/mock-contract.md) — 40.0K weekly downloads

## Recent versions

- 2.0.0 (latest) — 2018-07-05
- 1.1.1 — 2015-12-20
- 1.1.0 — 2015-12-20
- 1.0.1 — 2015-08-08
- 0.1.2 — 2015-02-22
- 0.1.1 — 2015-02-21
- 0.1.0 — 2015-02-21

## README

# list-item [![NPM version](https://img.shields.io/npm/v/list-item.svg?style=flat)](https://www.npmjs.com/package/list-item) [![NPM monthly downloads](https://img.shields.io/npm/dm/list-item.svg?style=flat)](https://npmjs.org/package/list-item) [![NPM total downloads](https://img.shields.io/npm/dt/list-item.svg?style=flat)](https://npmjs.org/package/list-item) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/list-item.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/list-item)

> Generate a single formatted list item, allowing you to easily generate lists with proper indentation, bullets, numbers or other leading characters.

Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.

## Install

Install with [npm](https://www.npmjs.com/):

```sh
$ npm install --save list-item
```

## Usage

```js
const listitem = require('list-item');
```

## Examples

**Basic list**

Generate a list using default bullets and indentation:

```js
const listitem = require('list-item');
const li = listitem();

let list = ['a', 'b', 'c', 'd', 'e'].map((ele, i) => li(i, ele));
console.log(list.join('\n'));
```

Results in:

```
- a
  * b
    + c
      - d
        * e
```

**Roman numerals**

Generate roman numerals in increments of 10.

```js
const listitem = require('list-item');
const romanize = require('romanize');

// specify `chars` to pass to fill-range, and use the callback 
// to modify generated numerals
const li = listitem({ chars: '1..100..10' }, (indent, ch) => {
  return indent + romanize(ch) + '.';
});

// generate a formatted list!
let list = ['a', 'b', 'c', 'd', 'e'].map((ele, i) => li(i, ele));
console.log(list.join('\n'));
```

Results in:

```
I. a
  XI. b
    XXI. c
      XXXI. d
        XLI. e
```

## API

### [listitem](index.js#L39)

Returns a function to generate a plain-text/markdown list-item, allowing options to be cached for subsequent calls.

**Params**

* `options` **{Object}**: pass options to customize list item characters, indentation, etc.
* `options.nobullet` **{Boolean}**: Pass true if you only want the list iten and identation, but no bullets.
* `options.indent` **{String}**: The amount of leading indentation to use. default is ``.
* `options.chars` **{String|Array}**: If a string is passed, [fill-range](https://github.com/jonschlinkert/fill-range) will be used to generate an array of bullets (visit [fill-range](https://github.com/jonschlinkert/fill-range) to see all options.) Or directly pass an array of bullets, numbers, letters or other characters to use for each list item. Default `['-', '*', '+']`
* `fn` **{Function}**: pass a function [fill-range](https://github.com/jonschlinkert/fill-range) to modify the bullet for an item as it's generated. See the [examples](#examples).
* `returns` **{String}**: returns a formatted list item

**Example**

```js
const li = listitem(options);

li(0, 'Level 0 list item');
//=> '- Level 0 list item'

li(1, 'Level 1 list item');
//=> '  * Level 1 list item'

li(2, 'Level 2 list item');
//=> '    + Level 2 list item'
```

## Release History

### 2.0.0 - July 5, 2018

**Breaking changes**

* The callback signature has changed to `(indent, char, level)`.

## About

<details>
<summary><strong>Contributing</strong></summary>

Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).

</details>

<details>
<summary><strong>Running Tests</strong></summary>

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

```sh
$ npm install && npm test
```

</details>

<details>
<summary><strong>Building docs</strong></summary>

_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_

To generate the readme, run the following command:

```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```

</details>

### Related projects

You might also be interested in these projects:

* [deromanize](https://www.npmjs.com/package/deromanize): Convert roman numerals to arabic numbers (useful for books, outlines, documentation, slide decks, etc) | [homepage](https://github.com/jonschlinkert/deromanize "Convert roman numerals to arabic numbers (useful for books, outlines, documentation, slide decks, etc)")
* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`")
* [randomatic](https://www.npmjs.com/package/randomatic): Generate randomized strings of a specified length using simple character sequences. The original generate-password. | [homepage](https://github.com/jonschlinkert/randomatic "Generate randomized strings of a specified length using simple character sequences. The original generate-password.")
* [romanize](https://www.npmjs.com/package/romanize): Convert numbers to roman numerals (useful for books, outlines, documentation, slide decks, etc) | [homepage](https://github.com/jonschlinkert/romanize "Convert numbers to roman numerals (useful for books, outlines, documentation, slide decks, etc)")
* [to-regex-range](https://www.npmjs.com/package/to-regex-range): Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than… [more](https://github.com/micromatch/to-regex-range) | [homepage](https://github.com/micromatch/to-regex-range "Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions.")

### Contributors

| **Commits** | **Contributor** | 
| --- | --- |
| 18 | [jonschlinkert](https://github.com/jonschlinkert) |
| 7 | [adjohnson916](https://github.com/adjohnson916) |

### Author

**Jon Schlinkert**

* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
* [GitHub Profile](https://github.com/jonschlinkert)
* [Twitter Profile](https://twitter.com/jonschlinkert)

### License

Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT License](LICENSE).

***

_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 05, 2018._

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