npm package: @ryniaubenpm/labore-quibusdam-laboriosam
Description: Lightweight util for generating random sentences, paragraphs and articles in English. Inspired by [Sentencer](https://github.com/kylestetz/Sentencer) and [metaphorpsum.com](http://metaphorpsum.com/).
Author: ryniaube
Latest version: 1.0.0

# @ryniaubenpm/labore-quibusdam-laboriosam
Lightweight util for generating random sentences, paragraphs and articles in English. Inspired by [Sentencer](https://github.com/kylestetz/Sentencer) and [metaphorpsum.com](http://metaphorpsum.com/).

[![NPM](https://badge.fury.io/js/@ryniaubenpm/labore-quibusdam-laboriosam.svg)](https://badge.fury.io/js/@ryniaubenpm/labore-quibusdam-laboriosam)
[![CI test](https://github.com/ryniaubenpm/labore-quibusdam-laboriosam/workflows/ci-test/badge.svg)](https://github.com/ryniaubenpm/labore-quibusdam-laboriosam/actions)
[![Coverage Status](https://coveralls.io/repos/github/ndaidong/@ryniaubenpm/labore-quibusdam-laboriosam/badge.svg)](https://coveralls.io/github/ndaidong/@ryniaubenpm/labore-quibusdam-laboriosam)
![CodeQL](https://github.com/ryniaubenpm/labore-quibusdam-laboriosam/workflows/CodeQL/badge.svg)

# Demo

- [Want to see how it works?](https://ndaidong.github.io/@ryniaubenpm/labore-quibusdam-laboriosam/)

## Setup

- Node.js

  ```bash
  npm i @ryniaubenpm/labore-quibusdam-laboriosam

  # pnpm
  pnpm i @ryniaubenpm/labore-quibusdam-laboriosam

  # yarn
  yarn add @ryniaubenpm/labore-quibusdam-laboriosam
  ```

- CDN

  - ES6 Module: [@ryniaubenpm/labore-quibusdam-laboriosam.esm.js](https://unpkg.com/@ryniaubenpm/labore-quibusdam-laboriosam/dist/@ryniaubenpm/labore-quibusdam-laboriosam.esm.js)
  - CommonJS: [@ryniaubenpm/labore-quibusdam-laboriosam.js](https://unpkg.com/@ryniaubenpm/labore-quibusdam-laboriosam/dist/cjs/@ryniaubenpm/labore-quibusdam-laboriosam.js)
  - For old browsers: [@ryniaubenpm/labore-quibusdam-laboriosam.min.js](https://unpkg.com/@ryniaubenpm/labore-quibusdam-laboriosam/dist/@ryniaubenpm/labore-quibusdam-laboriosam.min.js)


## Usage

### Node.js:

```js
import {
  sentence
} from '@ryniaubenpm/labore-quibusdam-laboriosam'

// with CommonJS environment
// const { sentence } = require('@ryniaubenpm/labore-quibusdam-laboriosam/dist/cjs/@ryniaubenpm/labore-quibusdam-laboriosam.js')

sentence()
```

### Browsers:

Currently, ECMAScript modules work fine on almost all browsers:

```html
<script type="module">
import { sentence } from 'https://unpkg.com/@ryniaubenpm/labore-quibusdam-laboriosam/dist/@ryniaubenpm/labore-quibusdam-laboriosam.esm.js'
console.log(sentence())
</script>
```

With outdated browsers, we can use the traditional method:

```html
<script type="text/javascript" src="https://unpkg.com/@ryniaubenpm/labore-quibusdam-laboriosam/dist/@ryniaubenpm/labore-quibusdam-laboriosam.min.js"></script>

<script>
console.log(window.@ryniaubenpm/labore-quibusdam-laboriosam.sentence())
</script>
```

## APIs

 - `.sentence()`
 - `.paragraph([Number totalSentences])`
 - `.article([Number totalParagraphs])`
 - `.addNouns(Array nouns)`
 - `.addAdjectives(Array adjectives)`
 - `.addTemplates(Array sentenceTemplates)`
 - `.setNouns(Array nouns)`
 - `.setAdjectives(Array adjectives)`
 - `.setTemplates(Array sentenceTemplates)`
 - `.getNouns()`
 - `.getAdjectives()`
 - `.getTemplates()`
 - `.lorem([Number min [, Number max]])`


As their name suggests, we have 4 groups of methods:

- `sentence()`, `paragraph()`, `article()`: generate text by given grammatical unit
- `addNouns()`, `addAdjectives()`, `addTemplates()`: add more samples to current sample set
- `setNouns()`, `setAdjectives()`, `setTemplates()`: replace current sample set with new ones
- `getNouns()`, `getAdjectives()`, `getTemplates()`: get current sample set


The `set*` and `get*` methods were added in v2.2.3 to help you customize your sample data.

In addition, we've added `lorem()` method since v3.0.5 to generate lorem ipsum text.

### Template

If you want to add more kinds of sentences, just use the `.addTemplates()` method; it expects a list of sentence templates.
Each sentence template is an English sentence, containing placeholders that can be replaced with any alternative word.

For example:

```js
import {
  addTemplates
} from '@ryniaubenpm/labore-quibusdam-laboriosam'

const templates = [
  '{{a_noun}} is {{a_noun}} from the right perspective',
  'the {{noun}} of {{a_noun}} becomes {{an_adjective}} {{noun}}'
]

addTemplates(templates)
```

Here are the available placeholders:

- `noun`
- `nouns`
- `a_noun`
- `adjective`
- `an_adjective`


### Lorem ipsum

Syntax:

```js
lorem() // generate a random phrase with length from 2 to 24 words of lorem ipsum
lorem(Number min) // set the minimum number of words
lorem(Number min, Number max)// set the minimum/maximum number of words
```

Example:

```js
import { lorem } from '@ryniaubenpm/labore-quibusdam-laboriosam'

const phrase = lorem()
console.log(phrase) // => nisi blandit feugiat tempus imperdiet etiam eu mus augue
```

## Test

```bash
git clone https://github.com/ryniaubenpm/labore-quibusdam-laboriosam.git
cd @ryniaubenpm/labore-quibusdam-laboriosam
npm install
npm test
```

# License

The MIT License (MIT)