fake_data 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +119 -8
- data/bin/console +1 -1
- data/lib/fake_data/method.rb +1 -1
- data/lib/fake_data/method/control.rb +1 -1
- data/lib/fake_data/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 41847a41f8158d6ef36a7db01a2ca9c21b2fbaa2
|
|
4
|
+
data.tar.gz: f68e00914385129db81e356a08d26cd33dfb4a03
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fd21e7bfdb387b808aea3c91a14703fabf9a7c2965d4160fa68f01bd334f59f4b97c106c72f72af6fed51de74a6387a66b8acab386465136edf6f9a61abb7af4
|
|
7
|
+
data.tar.gz: c1c9fce599b40728e9aba33cd99ec8b5fa62d079d1e31e50088f7fe313fe78562acc23802e62b6bc22946dde043f299f37e22808c3892b39f28ae77a075c457f
|
data/README.md
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
[](https://travis-ci.org/schovi/FakeData)
|
|
2
|
-
|
|
3
2
|
[](http://badge.fury.io/rb/fake_data)
|
|
4
|
-
|
|
5
3
|
[](https://coveralls.io/r/schovi/FakeData)
|
|
6
4
|
|
|
7
5
|
# FakeData
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
TODO: Delete this and the text above, and describe your gem
|
|
7
|
+
Fake data generator for simple and complex structures or objects. For data generation it uses [Faker gem](https://github.com/stympy/faker)
|
|
12
8
|
|
|
13
9
|
## Installation
|
|
14
10
|
|
|
@@ -20,15 +16,130 @@ gem 'fake_data'
|
|
|
20
16
|
|
|
21
17
|
And then execute:
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
```
|
|
20
|
+
$ bundle
|
|
21
|
+
```
|
|
24
22
|
|
|
25
23
|
Or install it yourself as:
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
```
|
|
26
|
+
$ gem install fake_data
|
|
27
|
+
```
|
|
28
28
|
|
|
29
29
|
## Usage
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
With simple schema generates fake data. Supports structure controling like how many items array should have or value presence based on probability. For random data is used (Faker gem)[https://github.com/stympy/faker].
|
|
32
|
+
|
|
33
|
+
### String
|
|
34
|
+
|
|
35
|
+
All following rows are equivalent.
|
|
36
|
+
|
|
37
|
+
```ruby
|
|
38
|
+
FakeData.once("Hello, my name is %{Faker::Name.name}")
|
|
39
|
+
=> "Hello, my name is Miss Darius Stokes"
|
|
40
|
+
FakeData.once("Hello, my name is %{Name.name}")
|
|
41
|
+
=> "Hello, my name is Ms. Santino Gutmann"
|
|
42
|
+
FakeData.once("Hello, my name is %{name.name}")
|
|
43
|
+
=> "Hello, my name is Miss Edward Kunde"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Array
|
|
47
|
+
|
|
48
|
+
#### Simple array with content
|
|
49
|
+
|
|
50
|
+
```ruby
|
|
51
|
+
FakeData.once(
|
|
52
|
+
[
|
|
53
|
+
"I live in %{address.city}",
|
|
54
|
+
"My family came from %{address.country}"
|
|
55
|
+
]
|
|
56
|
+
)
|
|
57
|
+
=> ["I live in Winnifredshire", "And my family came from Hungary"]
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Hash
|
|
61
|
+
|
|
62
|
+
```ruby
|
|
63
|
+
FakeData.once(
|
|
64
|
+
{
|
|
65
|
+
id: "%{number.number(5)}",
|
|
66
|
+
name: "%{name.name}",
|
|
67
|
+
email: "%{internet.email}"
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
=> {"id"=>"70095", "name"=>"Mr. Alverta Gibson", "email"=>"seamus@schambergerswaniawski.name"}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Repeating
|
|
75
|
+
|
|
76
|
+
#### Generated Array with given number of items
|
|
77
|
+
|
|
78
|
+
Use hash with only one special control key `"%{repeat(n)}"`
|
|
79
|
+
|
|
80
|
+
```ruby
|
|
81
|
+
FakeData.once(
|
|
82
|
+
{"%{repeat(2)}" => "I have email %{internet.email}"}
|
|
83
|
+
)
|
|
84
|
+
=> ["I have email eryn@bayer.name", "I have email roxane.hoppe@rosenbaum.com"]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### Generated Array with random number of items
|
|
88
|
+
|
|
89
|
+
From empty Array to Array with N items with `repeat(0..n)`
|
|
90
|
+
|
|
91
|
+
```ruby
|
|
92
|
+
3.times do
|
|
93
|
+
p FakeData.once({"%{repeat(0..2)}" => "My favorite beer is: %{beer.name}"})
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
=> ["My favorite beer is Pliny The Elder", "My favorite beer is: Brooklyn Black"]
|
|
97
|
+
=> ["My favorite beer is: Ten FIDY"]
|
|
98
|
+
=> []
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Generated Array with random number of items and nothing for empty array
|
|
102
|
+
|
|
103
|
+
For empty Array returns `nil` with `repeat(0..n, nil: true)`
|
|
104
|
+
|
|
105
|
+
```ruby
|
|
106
|
+
FakeData.once({"%{repeat(0..1, nil: true)}" => "My favorite beer is: %{beer.name}"})
|
|
107
|
+
=> nil
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Value presence with probability
|
|
111
|
+
|
|
112
|
+
Use hash with only one special control key `"%{maybe}"` - change is 50%. `maybe(20)` - chance is 20%
|
|
113
|
+
|
|
114
|
+
```ruby
|
|
115
|
+
2.times do
|
|
116
|
+
FakeData.once({"%{maybe(20)}" => "I like to watch on movies with %{superhero.name}"})
|
|
117
|
+
end
|
|
118
|
+
=> "I like to watch on movies with Giant Thanos Thirteen"
|
|
119
|
+
=> nil
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Complex example
|
|
123
|
+
|
|
124
|
+
```ruby
|
|
125
|
+
FakeData.once(
|
|
126
|
+
{
|
|
127
|
+
id: "%{number.number(5)}",
|
|
128
|
+
name: "%{name.name}",
|
|
129
|
+
age: 20,
|
|
130
|
+
facebook: "%{internet.url('facebook.com/profile')}",
|
|
131
|
+
friends: {
|
|
132
|
+
"%{maybe(75)}" => {
|
|
133
|
+
"%{repeat(2..20)}" => {
|
|
134
|
+
id: "%{number.number(5)}",
|
|
135
|
+
name: "%{name.name}",
|
|
136
|
+
facebook: "%{internet.url('facebook.com/profile')}",
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
```
|
|
32
143
|
|
|
33
144
|
## Development
|
|
34
145
|
|
data/bin/console
CHANGED
data/lib/fake_data/method.rb
CHANGED
|
@@ -4,7 +4,7 @@ require "fake_data/method/control"
|
|
|
4
4
|
module FakeData
|
|
5
5
|
class Method
|
|
6
6
|
# TODO: problem with parsing "test()" => method = test; arguments = ["()"]
|
|
7
|
-
METHOD_MATCHER = /((?<klass>[a-z_.:]+)\.)?(?<method>[a-
|
|
7
|
+
METHOD_MATCHER = /((?<klass>[a-z_.:]+)\.)?(?<method>[a-z0-9_=\?]+)\s*(\((?<args1>.+)\)|(?<args2>.+))?\s*/i
|
|
8
8
|
LEFT_BRACKET_MATCHER = /^\(/
|
|
9
9
|
RIGHT_BRACKET_MATCHER = /\)$/
|
|
10
10
|
# TODO: better argument splitting
|
data/lib/fake_data/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fake_data
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Schovanec
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-05-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
197
197
|
version: '0'
|
|
198
198
|
requirements: []
|
|
199
199
|
rubyforge_project:
|
|
200
|
-
rubygems_version: 2.
|
|
200
|
+
rubygems_version: 2.6.4
|
|
201
201
|
signing_key:
|
|
202
202
|
specification_version: 4
|
|
203
203
|
summary: Universal random data generator
|