UNPKG

lorem-ipsum

Version:

Generates passages of lorem ipsum text suitable for use as placeholder copy in web pages, graphics, and more. Works in the browser, NodeJS, and React Native.

71 lines (65 loc) 1.65 kB
import { LoremFormat, FORMAT_PLAIN } from "./constants/formats"; import { LoremUnit, UNIT_PARAGRAPH, UNIT_PARAGRAPHS, UNIT_SENTENCES, UNIT_SENTENCE, UNIT_WORDS, UNIT_WORD, } from "./constants/units"; import { WORDS } from "./constants/words"; import { IPrng } from "./lib/generator"; import LoremIpsum from "./lib/LoremIpsum"; export interface ILoremIpsumParams { count?: number; format?: LoremFormat; paragraphLowerBound?: number; paragraphUpperBound?: number; random?: IPrng; sentenceLowerBound?: number; sentenceUpperBound?: number; units?: LoremUnit; words?: string[]; suffix?: string; } const loremIpsum = ({ count = 1, format = FORMAT_PLAIN, paragraphLowerBound = 3, paragraphUpperBound = 7, random, sentenceLowerBound = 5, sentenceUpperBound = 15, units = UNIT_SENTENCES, words = WORDS, suffix = "", }: ILoremIpsumParams = {}): string => { const options = { random, sentencesPerParagraph: { max: paragraphUpperBound, min: paragraphLowerBound, }, words, wordsPerSentence: { max: sentenceUpperBound, min: sentenceLowerBound, }, }; const lorem: LoremIpsum = new LoremIpsum(options, format, suffix); switch (units) { case UNIT_PARAGRAPHS: case UNIT_PARAGRAPH: return lorem.generateParagraphs(count); case UNIT_SENTENCES: case UNIT_SENTENCE: return lorem.generateSentences(count); case UNIT_WORDS: case UNIT_WORD: return lorem.generateWords(count); default: return ""; } }; export { loremIpsum, LoremIpsum };