Fake

Build Status Latest Version

A Rust library for generating fake data.

Installation

toml [dependencies] fake = "*"

Usage

```rust // Use macro style

[macro_use]

extern crate fake;

fake!(Internet.freeemail); fake!(Company.name); fake!(Name.name); fake!(Name.name in zhtw);

// Custom fake string fn tolowercase>(s: S) -> String { s.into().tolowercase() } fake!("{} - {}", [Name.name | tolowercase], [expr fake!(Name.name).tolowercase()]); fake!("{} - {} - {}", [Name.name], [Name.name in zhtw], [Number.number(10)]); fake!(r#"{{"name": "{x}", "chinesename": "{y}"}}"#, [y = Name.name in zhtw], [x = Name.name]); fake!(r#"http://{domain}.{domainsuffix}/user/{username}.png?size={size}x{size}"#, [domain = Name.lastname | tolowercase], [domainsuffix = Internet.domainsuffix], [username = Name.firstname | tolowercase], [size = expr [512, 256, 128][gen_range(0, 3)]]);

// Use function call style use fake::faker::*;

Faker::free_email();

// In case multiple candidates available ::name(); ::name();

// Switch locales use fake::locales::zh_tw; println!("{}", ::name()); ```

Lorem

rust println!("{:?}", fake!(Lorem.word)); println!("{:?}", fake!(Lorem.words(10))); println!("{:?}", fake!(Lorem.sentence(4, 6))); println!("{:?}", fake!(Lorem.sentences(10))); println!("{:?}", fake!(Lorem.paragraph(7, 3))); println!("{:?}", fake!(Lorem.paragraphs(3)));

Name

```rust println!("{:?}", fake!(Name.firstname)); println!("{:?}", fake!(Name.lastname)); println!("{:?}", fake!(Name.name)); println!("{:?}", fake!(Name.namewithmiddle)); println!("{:?}", fake!(Name.titledescriptor)); println!("{:?}", fake!(Name.titlelevel)); println!("{:?}", fake!(Name.title_job)); println!("{:?}", fake!(Name.title));

println!("{}", fake!(Name.firstname in zhtw)); println!("{}", fake!(Name.lastname in zhtw)); println!("{}", fake!(Name.name in zh_tw)); ```

Number

rust println!("{:?}", fake!(Number.digit)); println!("{:?}", fake!(Number.number(10))); println!("{:?}", fake!(Number.between(5, 10))); println!("{:?}", fake!(Number.between(5.0_f32, 10.0_f32)));

Boolean

rust println!("{:?}", fake!(Boolean.boolean));

Internet

rust println!("{:?}", fake!(Internet.free_email_provider)); println!("{:?}", fake!(Internet.domain_suffix)); println!("{:?}", fake!(Internet.user_name)); println!("{:?}", fake!(Internet.free_email)); println!("{:?}", fake!(Internet.safe_email));

Company

rust println!("{:?}", fake!(Company.suffix)); println!("{:?}", fake!(Company.name)); println!("{:?}", fake!(Company.buzzword)); println!("{:?}", fake!(Company.catch_phase)); println!("{:?}", fake!(Company.bs)); println!("{:?}", fake!(Company.profession)); println!("{:?}", fake!(Company.industry));

Address

rust println!("{:?}", fake!(Address.time_zone)); println!("{:?}", fake!(Address.city_prefix)); println!("{:?}", fake!(Address.city_suffix)); println!("{:?}", fake!(Address.street_suffix)); println!("{:?}", fake!(Address.state)); println!("{:?}", fake!(Address.state_abbr)); println!("{:?}", fake!(Address.city)); println!("{:?}", fake!(Address.street_name)); println!("{:?}", fake!(Address.building_number)); println!("{:?}", fake!(Address.street_address)); println!("{:?}", fake!(Address.secondary_address)); println!("{:?}", fake!(Address.zip)); println!("{:?}", fake!(Address.postcode)); println!("{:?}", fake!(Address.latitude)); println!("{:?}", fake!(Address.longitude));

Phone Number

rust println!("{:?}", fake!(PhoneNumber.phone_number)); // N => [1..9], # => [0..9] println!("{:?}", fake!(PhoneNumber.phone_number_with_format("N###-####"))); println!("{:?}", fake!(PhoneNumber.cell_number));

Dummy

rust // dummy macro take T: Dummy println!("{:?}", dummy!(i32)); println!("{:?}", dummy!(Vec<Vec<i32>>));

Contributing

What can you help

  1. Add locales
  2. Add new faker
  3. Report bugs

How

  1. Fork the repo.
  2. Add a test for your change.
  3. Make the test. cargo test
  4. Push to your fork and submit a pull request.

LICENSE

The MIT License (MIT)