Current section
Files
Jump to
Current section
Files
lib/fixtures/text.ex
defmodule Fixtures.Text do
@moduledoc ~S"""
Text related generators.
"""
use Fixtures.Helper
@charset "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" |> String.graphemes()
@doc ~S"""
Generate a random string.
## Options
- `:length` the length of the generated string. Allows range of length.
- `:charset` a string with all allowed characters.
"""
@spec string(Keyword.t()) :: String.t()
def string(opts \\ []) do
range =
case opts[:length] || 16 do
a..b -> a..b
a -> a..a
end
cs =
case opts[:charset] do
nil -> @charset
custom -> String.graphemes(custom)
end
gen_string(Enum.random(range), cs)
end
@spec gen_string(integer, String.t(), String.t()) :: String.t()
defp gen_string(left, charset, acc \\ [])
defp gen_string(0, _charset, acc), do: :binary.list_to_bin(acc)
defp gen_string(left, charset, acc),
do: gen_string(left - 1, charset, [Enum.random(charset) | acc])
# credo:disable-for-next-line
@animals ~W(aardvark albatross alligator alpaca ant anteater antelope ape armadillo baboon badger barracuda bat bear beaver bee bison boar buffalo butterfly camel capybara caribou cassowary cat caterpillar cattle chamois cheetah chicken chimpanzee chinchilla chough clam cobra cockroach cod cormorant coyote crab crane crocodile crow curlew deer dinosaur dog dogfish dolphin donkey dotterel dove dragonfly duck dugong dunlin eagle echidna eel eland elephant elephant-seal elk emu falcon ferret finch fish flamingo fly fox frog gaur gazelle gerbil giant-panda giraffe gnat gnu goat goose goldfinch goldfish gorilla goshawk grasshopper grouse guanaco guinea-fowl guinea-pig gull hamster hare hawk hedgehog heron herring hippopotamus hornet horse human hummingbird hyena ibex ibis jackal jaguar jay jellyfish kangaroo kingfisher koala komodo-dragon kookabura kouprey kudu lapwing lark lemur leopard lion llama lobster locust loris louse lyrebird magpie mallard manatee mandrill mantis marten meerkat mink mole mongoose monkey moose mouse mosquito mule narwhal newt nightingale octopus okapi opossum oryx ostrich otter owl ox oyster panther parrot partridge peafowl pelican penguin pheasant pig pigeon polar-bear pony porcupine porpoise prairie-dog quail quelea quetzal rabbit raccoon rail ram rat raven red-deer red-panda reindeer rhinoceros rook salamander salmon sand-dollar sandpiper sardine scorpion sea-lion sea-urchin seahorse seal shark sheep shrew skunk snail snake sparrow spider spoonbill squid squirrel starling stingray stinkbug stork swallow swan tapir tarsier termite tiger toad trout turkey turtle vicuña viper vulture wallaby walrus wasp water-buffalo weasel whale wolf wolverine wombat woodcock woodpecker worm wren yak zebra)
# credo:disable-for-next-line
@nouns ~W(people history way art world information map two family government health system computer meat year thanks music person reading method data food understanding theory law bird literature problem software control knowledge power ability economics love internet television science library nature fact product idea temperature investment area society activity story industry media thing oven community definition safety quality development language management player variety video week security country exam movie organization equipment physics analysis policy series thought basis boyfriend direction strategy technology army camera freedom paper environment child instance month truth marketing university writing article department difference goal news audience fishing growth income marriage user combination failure meaning medicine philosophy teacher communication night chemistry disease disk energy nation road role soup advertising location success addition apartment education math moment painting politics attention decision event property shopping student wood competition distribution entertainment office population president unit category cigarette context introduction opportunity performance driver flight length magazine newspaper relationship teaching cell dealer finding lake member message phone scene appearance association concept customer death discussion housing inflation insurance mood woman advice blood effort expression importance opinion payment reality responsibility situation skill statement wealth application city county depth estate foundation grandmother heart perspective photo recipe studio topic collection depression imagination passion percentage resource setting ad agency college connection criticism debt description memory patience secretary solution administration aspect attitude director personality psychology recommendation response selection storage version alcohol argument complaint contract emphasis highway loss membership possession preparation steak union agreement cancer currency employment engineering entry interaction mixture preference region republic tradition virus actor classroom delivery device difficulty drama election engine football guidance hotel owner priority protection suggestion tension variation anxiety atmosphere awareness bath bread candidate climate comparison confusion construction elevator emotion employee employer guest height leadership mall manager operation recording sample transportation charity cousin disaster editor efficiency excitement extent feedback guitar homework leader mom outcome permission presentation promotion reflection refrigerator resolution revenue session singer tennis basket bonus cabinet childhood church clothes coffee dinner drawing hair hearing initiative judgment lab measurement mode mud orange poetry police possibility procedure queen ratio relation restaurant satisfaction sector signature significance song tooth town vehicle volume wife accident airport appointment arrival assumption baseball chapter committee conversation database enthusiasm error explanation farmer gate girl hall historian hospital injury instruction maintenance manufacturer meal perception pie poem presence proposal reception replacement revolution river son speech tea village warning winner worker writer assistance breath buyer chest chocolate conclusion contribution cookie courage dad desk drawer establishment examination garbage grocery honey impression improvement independence insect inspection inspector king ladder menu penalty piano potato profession professor quantity reaction requirement salad sister supermarket tongue weakness wedding affair ambition analyst apple assignment assistant bathroom bedroom beer birthday celebration championship cheek client consequence departure diamond dirt ear fortune friendship funeral gene girlfriend hat indication intention lady midnight negotiation obligation passenger pizza platform poet pollution recognition reputation shirt sir speaker stranger surgery sympathy tale throat trainer uncle youth time work film water money example while business study game life form air day place number part field fish back process heat hand experience job book end point type home economy value body market guide interest state radio course company price size card list mind trade line care group risk word fat force key light training name school top amount level order practice research sense service piece web boss sport fun house page term test answer sound focus matter kind soil board oil picture access garden range rate reason future site demand exercise image case cause coast action age bad boat record result section building mouse cash class nothing period plan store tax side subject space rule stock weather chance figure man model source beginning earth program chicken design feature head material purpose question rock salt act birth car dog object scale sun note profit rent speed style war bank craft half inside outside standard bus exchange eye fire position pressure stress advantage benefit box frame issue step cycle face item metal paint review room screen structure view account ball discipline medium share balance bit black bottom choice gift impact machine shape tool wind address average career culture morning pot sign table task condition contact credit egg hope ice network north square attempt date effect link post star voice capital challenge friend self shot brush couple debate exit front function lack living plant plastic spot summer taste theme track wing brain button click desire foot gas influence notice rain wall base damage distance feeling pair savings staff sugar target text animal author budget discount file ground lesson minute officer phase reference register sky stage stick title trouble bowl bridge campaign character club edge evidence fan letter lock maximum novel option pack park plenty quarter skin sort weight baby background carry dish factor fruit glass joint master muscle red strength traffic trip vegetable appeal chart gear ideal kitchen land log mother net party principle relative sale season signal spirit street tree wave belt bench commission copy drop minimum path progress project sea south status stuff ticket tour angle blue breakfast confidence daughter degree doctor dot dream duty essay father fee finance hour juice limit luck milk mouth peace pipe seat stable storm substance team trick afternoon bat beach blank catch chain consideration cream crew detail gold interview kid mark match mission pain pleasure score screw sex shop shower suit tone window agent band block bone calendar cap coat contest corner court cup district door east finger garage guarantee hole hook implement layer lecture lie manner meeting nose parking partner profile respect rice routine schedule swimming telephone tip winter airline bag battle bed bill bother cake code curve designer dimension dress ease emergency evening extension farm fight gap grade holiday horror horse host husband loan mistake mountain nail noise occasion package patient pause phrase proof race relief sand sentence shoulder smoke stomach string tourist towel vacation west wheel wine arm aside associate bet blow border branch breast brother buddy bunch chip coach cross document draft dust expert floor god golf habit iron judge knife landscape league mail mess native opening parent pattern pin pool pound request salary shame shelter shoe silver tackle tank trust assist bake bar bell bike blame boy brick chair closet clue collar comment conference devil diet fear fuel glove jacket lunch monitor mortgage nurse pace panic peak plane reward row sandwich shock spite spray surprise till transition weekend welcome yard alarm bend bicycle bite blind bottle cable candle clerk cloud concert counter flower grandfather harm knee lawyer leather load mirror neck pension plate purple ruin ship skirt slice snow specialist stroke switch trash tune zone anger award bid bitter boot bug camp candy carpet cat champion channel clock comfort cow crack engineer entrance fault grass guy hell highlight incident island joke jury leg lip mate motor nerve passage pen pride priest prize promise resident resort ring roof rope sail scheme script sock station toe tower truck witness a you it can will if one many most other use make good look help go great being few might still public read keep start give human local general she specific long play feel high tonight put common set change simple past big possible particular today major personal current national cut natural physical show try check second call move pay let increase single individual turn ask buy guard hold main offer potential professional international travel cook alternative following special working whole dance excuse cold commercial low purchase deal primary worth fall necessary positive produce search present spend talk creative tell cost drive green support glad remove return run complex due effective middle regular reserve independent leave original reach rest serve watch beautiful charge active break negative safe stay visit visual affect cover report rise walk white beyond junior pick unique anything classic final lift mix private stop teach western concern familiar fly official broad comfortable gain maybe rich save stand young fail heavy hello lead listen valuable worry handle leading meet release sell finish normal press ride secret spread spring tough wait brown deep display flow hit objective shoot touch cancel chemical cry dump extreme push conflict eat fill formal jump kick opposite pass pitch remote total treat vast abuse beat burn deposit print raise sleep somewhere advance anywhere consist dark double draw equal fix hire internal join kill sensitive tap win attack claim constant drag drink guess minor pull raw soft solid wear weird wonder annual count dead doubt feed forever impress nobody repeat round sing slide strip whereas wish combine command dig divide equivalent hang hunt initial march mention smell spiritual survey tie adult brief crazy escape gather hate prior repair rough sad scratch sick strike employ external hurt illegal laugh lay mobile nasty ordinary respond royal senior split strain struggle swim train upper wash yellow convert crash dependent fold funny grab hide miss permit quote recover resolve roll sink slip spare suspect sweet swing twist upstairs usual abroad brave calm concentrate estimate grand male mine prompt quiet refuse regret reveal rush shake shift shine steal suck surround anybody bear brilliant dare dear delay drunk female hurry inevitable invite kiss neat pop punch quit reply representative resist rip rub silly smile spell stretch stupid tear temporary tomorrow wake wrap yesterday )
@doc ~S"""
Generate a random animal name.
"""
@spec animal(Keyword.t()) :: String.t()
def animal(_opts \\ []), do: Enum.random(@animals)
@doc ~S"""
Generate a random noun.
"""
@spec noun(Keyword.t()) :: String.t()
def noun(_opts \\ []), do: Enum.random(@nouns ++ @animals)
@ipsums [
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque. Aliquam faucibus, elit ut dictum aliquet, felis nisl adipiscing sapien, sed malesuada diam lacus eget erat. Cras mollis scelerisque nunc. Nullam arcu. Aliquam consequat. Curabitur augue lorem, dapibus quis, laoreet et, pretium ac, nisi. Aenean magna nisl, mollis quis, molestie eu, feugiat in, orci. In hac habitasse platea dictumst.",
"Fusce convallis, mauris imperdiet gravida bibendum, nisl turpis suscipit mauris, sed placerat ipsum urna sed risus. In convallis tellus a mauris. Curabitur non elit ut libero tristique sodales. Mauris a lacus. Donec mattis semper leo. In hac habitasse platea dictumst. Vivamus facilisis diam at odio. Mauris dictum, nisi eget consequat elementum, lacus ligula molestie metus, non feugiat orci magna ac sem. Donec turpis. Donec vitae metus. Morbi tristique neque eu mauris. Quisque gravida ipsum non sapien. Proin turpis lacus, scelerisque vitae, elementum at, lobortis ac, quam. Aliquam dictum eleifend risus. In hac habitasse platea dictumst. Etiam sit amet diam. Suspendisse odio. Suspendisse nunc. In semper bibendum libero.",
"Proin nonummy, lacus eget pulvinar lacinia, pede felis dignissim leo, vitae tristique magna lacus sit amet eros. Nullam ornare. Praesent odio ligula, dapibus sed, tincidunt eget, dictum ac, nibh. Nam quis lacus. Nunc eleifend molestie velit. Morbi lobortis quam eu velit. Donec euismod vestibulum massa. Donec non lectus. Aliquam commodo lacus sit amet nulla. Cras dignissim elit et augue. Nullam non diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In hac habitasse platea dictumst. Aenean vestibulum. Sed lobortis elit quis lectus. Nunc sed lacus at augue bibendum dapibus.",
"Aliquam vehicula sem ut pede. Cras purus lectus, egestas eu, vehicula at, imperdiet sed, nibh. Morbi consectetuer luctus felis. Donec vitae nisi. Aliquam tincidunt feugiat elit. Duis sed elit ut turpis ullamcorper feugiat. Praesent pretium, mauris sed fermentum hendrerit, nulla lorem iaculis magna, pulvinar scelerisque urna tellus a justo. Suspendisse pulvinar massa in metus. Duis quis quam. Proin justo. Curabitur ac sapien. Nam erat. Praesent ut quam.",
"Vivamus commodo, augue et laoreet euismod, sem sapien tempor dolor, ac egestas sem ligula quis lacus. Donec vestibulum tortor ac lacus. Sed posuere vestibulum nisl. Curabitur eleifend fermentum justo. Nullam imperdiet. Integer sit amet mauris imperdiet risus sollicitudin rutrum. Ut vitae turpis. Nulla facilisi. Quisque tortor velit, scelerisque et, facilisis vel, tempor sed, urna. Vivamus nulla elit, vestibulum eget, semper et, scelerisque eget, lacus. Pellentesque viverra purus. Quisque elit. Donec ut dolor.",
"Duis volutpat elit et erat. In at nulla at nisl condimentum aliquet. Quisque elementum pharetra lacus. Nunc gravida arcu eget nunc. Nulla iaculis egestas magna. Aliquam erat volutpat. Sed pellentesque orci. Etiam lacus lorem, iaculis sit amet, pharetra quis, imperdiet sit amet, lectus. Integer quis elit ac mi aliquam pretium. Nullam mauris orci, porttitor eget, sollicitudin non, vulputate id, risus. Donec varius enim nec sem. Nam aliquam lacinia enim. Quisque eget lorem eu purus dignissim ultricies. Fusce porttitor hendrerit ante. Mauris urna diam, cursus id, mattis eget, tempus sit amet, risus. Curabitur eu felis. Sed eu mi. Nullam lectus mauris, luctus a, mattis ac, tempus non, leo. Cras mi nulla, rhoncus id, laoreet ut, ultricies id, odio.",
"Donec imperdiet. Vestibulum auctor tortor at orci. Integer semper, nisi eget suscipit eleifend, erat nisl hendrerit justo, eget vestibulum lorem justo ac leo. Integer sem velit, pharetra in, fringilla eu, fermentum id, felis. Vestibulum sed felis. In elit. Praesent et pede vel ante dapibus condimentum. Donec magna. Quisque id risus. Mauris vulputate pellentesque leo. Duis vulputate, ligula at venenatis tincidunt, orci nunc interdum leo, ac egestas elit sem ut lacus. Etiam non diam quis arcu egestas commodo. Curabitur nec massa ac massa gravida condimentum. Aenean id libero. Pellentesque vitae tellus. Fusce lectus est, accumsan ac, bibendum sed, porta eget, augue. Etiam faucibus. Quisque tempus purus eu ante.",
"Vestibulum sapien nisl, ornare auctor, consectetuer quis, posuere tristique, odio. Fusce ultrices ullamcorper odio. Ut augue nulla, interdum at, adipiscing non, tristique eget, neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut pede est, condimentum id, scelerisque ac, malesuada non, quam. Proin eu ligula ac sapien suscipit blandit. Suspendisse euismod. Ut accumsan, neque id gravida luctus, arcu pede sodales felis, vel blandit massa arcu eget ligula. Aenean sed turpis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec sem eros, ornare ut, commodo eu, tempor nec, risus. Donec laoreet dapibus ligula. Praesent orci leo, bibendum nec, ornare et, nonummy in, elit. Donec interdum feugiat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque feugiat ullamcorper ipsum. Donec convallis tincidunt urna.",
"Suspendisse et orci et arcu porttitor pellentesque. Sed lacus nunc, fermentum vel, vehicula in, imperdiet eget, urna. Nam consectetuer euismod nunc. Nulla dignissim posuere nulla. Integer iaculis lacinia massa. Nullam sapien augue, condimentum vel, venenatis id, rhoncus pellentesque, sapien. Donec sed ipsum ultrices turpis consectetuer imperdiet. Duis et ipsum ac nisl laoreet commodo. Mauris eu est. Suspendisse id turpis quis orci euismod consequat. Donec tellus mi, luctus sit amet, ultrices a, convallis eu, lorem. Proin faucibus convallis elit. Maecenas rhoncus arcu at arcu. Proin libero. Proin adipiscing. In quis lorem vitae elit consectetuer pretium. Nullam ligula urna, adipiscing nec, iaculis ut, elementum non, turpis. Fusce pulvinar."
]
@doc ~S"""
Generate paragraphs of lorem ipsum.
Set `:paragraphs` to set the amount of paragraphs to generate.
"""
@spec ipsum(Keyword.t()) :: String.t()
def ipsum(opts \\ []) do
paragraphs = opts[:paragraphs] || 1
1..paragraphs |> Enum.map(fn _ -> Enum.random(@ipsums) end) |> Enum.join("\n\n")
end
end