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