nerdata
Testdata from scifi and fantasy, because y'all need it.
Now with zero dependencies!
DATA
Supported universes:
- Daevabad
- Dune
- Jojo's Bizarre Adventure
- Lord of the Rings
- Naruto
- Rick and Morty
- Star Wars
Planned universes:
- American Gods
- Avatar: The Last Airbender
- Buffy the Vampire Slayer
- DC Comics
- Discworld
- Doctor Who
- The Expanse
- Firefly
- Foundation
- Greek Mythology
- Gurren Lagann
- Harry Potter
- Marvel Comics
- Mass Effect
- One Piece
- A Song of Ice and Fire
- Umbrella Academy
- The Witcher
INITIALIZATION
const { Nerdata } = require("nerdata");
A new instance can be specified with all universes:
const nerdata = new Nerdata();
A custom number generator can be provided to be used instead of Math.random()
:
const nerdata = new Nerdata({
randomFn: someRandomFunction,
});
There are two ways to select which universes you want:
const nerdata = new Nerdata({
include: ["dune", "star-wars"],
});
const nerdata = new Nerdata({
exclude: ["rick-and-morty"],
});
USAGE
Call signature: nerdata.namespace.method([universes], [options])
Each method will return a random item from all loaded universes if no arguments are given. Universes can be filtered by providing a string or array of strings. Requesting a universe that does not exist or has not been loaded will throw an error.
Options may be provided for certain methods as an object.
nerdata.name.full();
nerdata.name.full("star-wars");
nerdata.name.full(["dune", "star-wars"]);
nerdata.name.full("fifty-shades-of-grey");
API
All return values are strings.
method | description | examples |
---|
name.first | first name | "Han", "Aragorn", "Paul" |
name.last | last name | "Solo", "Sanchez", "Atreides" |
name.full | full name | "Han Solo", "Rick Sanchez", "Frodo Baggins" |
place.any | name of location (any type) | "Ahto City", "Gazorpazorp", "Caladan" |
place.city | name of city | "Ahto City", "Seattle", "Bandalong" |
place.realm | name of realm | "Tattooine", "Gazorpazorp", "Gondor" |
item.any | name of item (any type) | "light saber", "space cruiser", "suspensor" |
item.tool | name of tool | "neural band", "plumbus", "suspensor" |
item.weapon | name of weapon | "Narsil", "freeze ray", "crysknife" |
item.vehicle | name of vehicle | "X-Wing", "space cruiser", "ornithopter" |
species.any | name of species (any type) | "jawa", "splorpian", "sandworm" |
species.sentient | name of sentient species | "jawa", "human", "tleilaxu" |
species.nonsentient | name of nonsentient species | "bantha", "fleeb", "sandworm" |
quote.sentence | full sentence with punctuation | "There is no try: only do." |
quote.paragraph | multiple sentences with punctuation | "There is no try: only do. You pass butter. " |
OPTIONS
quote.sentence: opts.citation
citation
: if true, appends speaker to quote
- true:
"It's a trap!" - Admiral Ackbar
- false:
It's a trap!
nerdata.quote.sentence("rick-and-morty", { citation: true });
nerdata.quote.sentence("rick-and-morty", { citation: false });
nerdata.quote.sentence("rick-and-morty");
quote.paragraph: opts.sentences
sentences
: number of sentences in paragraph
nerdata.quote.paragraph("rick-and-morty", { sentences: 1 });
nerdata.quote.paragraph("rick-and-morty");
BUILDING
To build, run npm run compile
. This first compiles the Typescript code and then auto-generates Flow definitions. Some magic is done here to add // @flow
, and the generator can make mistakes, so be sure to run npm run check-flow
to be sure everything worked.
CONTRIBUTING
I don't have a system in place yet for managing pull requests -- shoot me a message at daniel.rigberg@gmail.com, and let's talk!