Generate N paragraphs | sentences | words of lorem-ipsum text:
It supports --format html and --copy flags with →.
Generate N paragraphs | sentences | words of lorem-ipsum text:
It supports --format html and --copy flags with →.
| // Name: Lorem ipsum | |
| import "@johnlindquist/kit"; | |
| import { loremIpsum, ILoremIpsumParams } from "lorem-ipsum"; | |
| let ret: ReturnType<typeof loremIpsum>; | |
| const DEFAULTS = { | |
| count: 1, | |
| }; | |
| let count: ILoremIpsumParams["count"]; | |
| let units: ILoremIpsumParams["units"]; | |
| const flags = { | |
| html: { | |
| name: "html", | |
| shortcut: "cmd+h", | |
| }, | |
| copy: { | |
| name: "copy", | |
| shortcut: "cmd+c", | |
| }, | |
| }; | |
| function myLoremIpsum({ ...args }: Parameters<typeof loremIpsum>[0] = {}) { | |
| const format = flag?.html ? "html" : "plain"; | |
| // say(`generating ${count} ${units} of ${format} text`); | |
| return loremIpsum({ count, units, format, ...args }); | |
| } | |
| await arg( | |
| { | |
| placeholder: String(DEFAULTS.count), | |
| description: `Generate lorem ipsum text...`, | |
| flags, | |
| }, | |
| (input) => { | |
| count = (input && Number(input)) || undefined; | |
| return ["paragraphs", "sentences", "words"].map((el) => ({ | |
| name: el, | |
| preview: () => { | |
| units = el as ILoremIpsumParams["units"]; | |
| return myLoremIpsum(); | |
| }, | |
| })); | |
| } | |
| ); | |
| const loremText = myLoremIpsum(); | |
| if (flag?.copy) { | |
| copy(loremText); | |
| } else { | |
| setSelectedText(loremText); | |
| } |
johnlindquist/kit#1340