ffaker 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,22 +1,22 @@
1
1
  = ffaker
2
2
 
3
- Fast Faker == Faker refactored, cleaner and faster.
3
+ Fast Faker == Faker refactored. http://rubygems.org/gems/ffaker
4
4
 
5
5
  = Faker
6
6
 
7
- A port of Perl's Data::Faker library that generates fake data.
7
+ A port of Perl's Data::Faker library that generates fake data. http://rubygems.org/gems/faker
8
8
 
9
9
  == Usage
10
10
 
11
11
  require 'ffaker'
12
-
13
12
  Faker::Name.name => "Christophe Bartell"
14
-
15
13
  Faker::Internet.email => "kirsten.greenholt@corkeryfisher.info"
16
14
 
17
15
  == Ffaker / Faker
18
16
 
19
- The are only two differences between faker and ffaker. The first one is that you need to
17
+ Faker and Ffaker APIs are mostly the same, although the API on ffaker keeps
18
+ growing with its users additions. In general, the only difference is that you
19
+ need to:
20
20
 
21
21
  gem install ffaker
22
22
 
@@ -26,19 +26,15 @@ and then
26
26
 
27
27
  instead of "faker" with only one f.
28
28
 
29
- The API is pretty much the same as before.
30
-
31
- The second difference is that Faker::VERSION is no longer a module, so instead of accessing the version like this:
32
-
33
- Faker::VERSION::STRING # faker
34
-
35
- you'll need to access it like this:
36
-
37
- Faker::VERSION # ffaker
29
+ == Faster? does it really matter ?
38
30
 
39
- Fork it/ping me if you feel like adding more goodies to it.
31
+ Ffaker was initially written in an effort to speed up a slow spec suite. Bear
32
+ in mind, if your spec suite is slow, chances are the generation of random data
33
+ will not account for much of the run time.
40
34
 
41
- == Faster? does it really matter ?
35
+ Since then, the original faker gem has become faster (at the moment it did not
36
+ seem it was mantained). Nevertheless, ffaker is still about 20x faster than
37
+ faker.
42
38
 
43
39
  $ cat scripts/benchmark.rb
44
40
 
@@ -53,21 +49,15 @@ $ cat scripts/benchmark.rb
53
49
  end
54
50
  end
55
51
 
56
- * ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2009.10
57
-
58
- user system total real
59
- Faker 9.240000 0.020000 9.260000 ( 9.297381)
60
- Fast Faker 0.060000 0.000000 0.060000 ( 0.109047)
52
+ * ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2011.03
61
53
 
62
- * ruby 1.9.1p376 (2009-12-07 revision 26041) [x86_64-linux]
54
+ generating 10000 names (faker 0.9.5) 1.500000 0.000000 1.500000 ( 1.506865)
55
+ generating 10000 names (ffaker 1.5.0) 0.070000 0.000000 0.070000 ( 0.067526)
63
56
 
64
- user system total real
65
- Faker 74.980000 0.110000 75.090000 ( 75.881142)
66
- Fast Faker 0.050000 0.000000 0.050000 ( 0.052292)
57
+ * ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
67
58
 
68
- DISCLAIMER: I have no idea why I'm getting such bad numbers
69
- for traditional faker on 1.9, but I'm not making this up.
70
- Try it in your own machine, your mileage may vary!
59
+ generating 10000 names (faker 0.9.5) 1.030000 0.020000 1.050000 ( 1.046116)
60
+ generating 10000 names (ffaker 1.7.0) 0.040000 0.000000 0.040000 ( 0.045917)
71
61
 
72
62
  == Contributors
73
63
 
@@ -81,12 +71,17 @@ Try it in your own machine, your mileage may vary!
81
71
  * David Noelte (https://github.com/marvin)
82
72
  * Port 80 Labs (https://github.com/port80labs)
83
73
  * Shane Weng (https://github.com/swcool)
74
+ * Chris Bloom (https://github.com/chrisbloom7)
84
75
 
85
76
  == Changelog
86
77
 
78
+ * 1.8.0
79
+
80
+ Added Faker::HTMLIpsum module inspired in http://html-ipsum.com/ (Thanks Chris Bloom, https://github.com/EmmanuelOga/ffaker/pull/18)
81
+
87
82
  * 1.7.0
88
83
 
89
- Added Faker::LoremCN (Thanks Shane Weng, Shane Weng (https://github.com/swcool), https://github.com/EmmanuelOga/ffaker/pull/16/files)
84
+ Added Faker::LoremCN (Thanks Shane Weng, Shane Weng, https://github.com/swcool, https://github.com/EmmanuelOga/ffaker/pull/16/files)
90
85
 
91
86
  * 1.6.0
92
87
 
data/ffaker.gemspec CHANGED
@@ -5,8 +5,8 @@ Gem::Specification.new do |s|
5
5
  s.rubygems_version = '1.3.5'
6
6
 
7
7
  s.name = 'ffaker'
8
- s.version = '1.7.0'
9
- s.date = '2011-05-19'
8
+ s.version = '1.8.0'
9
+ s.date = '2011-05-30'
10
10
  s.rubyforge_project = 'ffaker'
11
11
 
12
12
  s.summary = "Faster Faker, generates dummy data."
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
34
34
  lib/ffaker/company.rb
35
35
  lib/ffaker/education.rb
36
36
  lib/ffaker/geolocation.rb
37
+ lib/ffaker/html_ipsum.rb
37
38
  lib/ffaker/internet.rb
38
39
  lib/ffaker/lorem.rb
39
40
  lib/ffaker/lorem_cn.rb
@@ -60,6 +61,7 @@ Gem::Specification.new do |s|
60
61
  test/test_faker_name_de.rb
61
62
  test/test_faker_name_ru.rb
62
63
  test/test_geolocation.rb
64
+ test/test_html_ipsum.rb
63
65
  test/test_lorem.rb
64
66
  test/test_lorem_cn.rb
65
67
  test/test_module_utils.rb
data/lib/ffaker.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Faker
2
- VERSION = "1.7.0"
2
+ VERSION = "1.8.0"
3
3
 
4
4
  require 'ffaker/utils/module_utils'
5
5
 
@@ -25,6 +25,7 @@ module Faker
25
25
  autoload :AddressDE, 'ffaker/address_de'
26
26
  autoload :Company, 'ffaker/company'
27
27
  autoload :Education, 'ffaker/education'
28
+ autoload :HTMLIpsum, 'ffaker/html_ipsum'
28
29
  autoload :Internet, 'ffaker/internet'
29
30
  autoload :Lorem, 'ffaker/lorem'
30
31
  autoload :LoremCN, 'ffaker/lorem_cn'
@@ -0,0 +1,160 @@
1
+ module Faker
2
+ # Loosely based on http://html-ipsum.com/
3
+ # Requires Faker::Lorem module
4
+ module HTMLIpsum
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def a(word_count = 2)
9
+ "<a href=\"##{word}\" title=\"#{words(word_count).capitalize!}\">#{words(word_count).capitalize!}</a>"
10
+ end
11
+
12
+ def p(count = 3, options = {})
13
+ options = {:fancy => false, :include_breaks => false}.merge(options)
14
+ if options[:fancy]
15
+ s = fancy_string(count, options[:include_breaks])
16
+ else
17
+ mode = options[:include_breaks] ? "paragraphs" : "paragraph"
18
+ s = send(mode.to_sym, count)
19
+ end
20
+ "<p>#{s}</p>"
21
+ end
22
+
23
+ def dl(definitions = 2)
24
+ s = "<dl>"
25
+ definitions.times do
26
+ s << "<dt>#{words(1).capitalize!}</dt><dd>#{paragraph 2}</dd>"
27
+ end
28
+ s << "</dl>"
29
+ end
30
+
31
+ def ul_short(items = 3)
32
+ s = "<ul>"
33
+ items.times do
34
+ s << "<li>#{sentence 2}</li>"
35
+ end
36
+ s << "</ul>"
37
+ end
38
+
39
+ def ul_long(items = 3)
40
+ s = "<ul>"
41
+ items.times do
42
+ s << "<li>#{paragraph 2}</li>"
43
+ end
44
+ s << "</ul>"
45
+ end
46
+
47
+ def ol_short(items = 3)
48
+ s = "<ol>"
49
+ items.times do
50
+ s << "<li>#{sentence 2}</li>"
51
+ end
52
+ s << "</ol>"
53
+ end
54
+
55
+ def ol_long(items = 3)
56
+ s = "<ol>"
57
+ items.times do
58
+ s << "<li>#{paragraph 2}</li>"
59
+ end
60
+ s << "</ol>"
61
+ end
62
+
63
+ def ul_links(items = 3)
64
+ s = "<ul>"
65
+ items.times do
66
+ s << "<li>#{a 1}</li>"
67
+ end
68
+ s << "</ul>"
69
+ end
70
+
71
+ def table(rows = 3)
72
+ s = "<table>
73
+ <thead>
74
+ <tr>
75
+ <th>#{word.capitalize!}</th>
76
+ <th>#{word.capitalize!}</th>
77
+ <th>#{word.capitalize!}</th>
78
+ <th>#{word.capitalize!}</th>
79
+ </tr>
80
+ </thead>
81
+ <tbody>"
82
+ rows.times do
83
+ s << "<tr>
84
+ <td>#{words(1).capitalize!}</td>
85
+ <td>#{words(1).capitalize!}</td>
86
+ <td>#{words(1).capitalize!}</td>
87
+ <td>#{a}</td>
88
+ </tr>"
89
+ end
90
+ s << "</tbody>
91
+ </table>"
92
+ end
93
+
94
+ def body
95
+ s = "<h1>#{words(2).capitalize!}</h1>"
96
+ rand(4).times do
97
+ s << "<p>#{fancy_string}</p>"
98
+ end
99
+ s << table(rand(4))
100
+ s << "<h2>#{words(2).capitalize!}</h2>
101
+ <ol>"
102
+ rand(4).times do
103
+ s << "<li>#{paragraph 1}</li>"
104
+ end
105
+ s << "</ol>
106
+ <blockquote><p>#{paragraphs 3}</p></blockquote>
107
+ <h3>#{words(2).capitalize!}</h3>
108
+ <ul>"
109
+ rand(4).times do
110
+ s << "<li>#{paragraph 1}</li>"
111
+ end
112
+ s << "</ul>
113
+ <pre><code>
114
+ ##{word} h1 a {
115
+ display: block;
116
+ width: 300px;
117
+ height: 80px;
118
+ }
119
+ </code></pre>"
120
+ end
121
+
122
+ def fancy_string(count = 3, include_breaks = false)
123
+ sep = include_breaks ? "<br>" : " "
124
+ a = k([
125
+ "<strong>#{words(2).capitalize!}</strong>.",
126
+ "<em>#{paragraph}</em>",
127
+ "<code>#{words 2}</code>",
128
+ "#{a 2}"
129
+ ] + Faker::Lorem::paragraphs(count))
130
+ a.random_pick(count).join(sep)
131
+ end
132
+
133
+ private
134
+
135
+ def word
136
+ Faker::Lorem::word
137
+ end
138
+
139
+ def words(word_count = 3)
140
+ Faker::Lorem::words(word_count).join(' ')
141
+ end
142
+
143
+ def sentence(word_count = 3)
144
+ Faker::Lorem::sentence(word_count)
145
+ end
146
+
147
+ def sentences(sentence_count = 3)
148
+ Faker::Lorem::sentences(sentence_count).join(' ')
149
+ end
150
+
151
+ def paragraph(sentence_count = 3)
152
+ Faker::Lorem::paragraph(sentence_count)
153
+ end
154
+
155
+ def paragraphs(paragraph_count = 3)
156
+ Faker::Lorem::paragraphs(paragraph_count).join('<br>')
157
+ end
158
+
159
+ end
160
+ end
data/scripts/benchmark.rb CHANGED
@@ -1,27 +1,20 @@
1
1
  require 'rubygems'
2
-
3
- begin
4
- require 'ffaker'
5
- rescue LoadError
6
- begin
7
- require 'faker'
8
- rescue LoadError
9
- puts "You need to install either faker or ffaker to run this."
10
- else
11
- puts "Using Faker"
12
- end
13
- else
14
- puts "Using Fast Faker"
15
- end
16
-
17
2
  require 'benchmark'
18
3
 
19
4
  N = 10_000
20
5
 
21
- Benchmark.bm do |rep|
22
- rep.report("generating #{ N } names") do
23
- N.times do
24
- Faker::Name.name
6
+ def run(name)
7
+ require name
8
+ Benchmark.bm do |rep|
9
+ rep.report("generating #{ N } names (#{name} #{Faker::VERSION})") do
10
+ N.times do
11
+ Faker::Name.name
12
+ end
25
13
  end
26
14
  end
15
+ $stdout.flush
16
+ exit(0)
27
17
  end
18
+
19
+ fork { run("faker") }; Process.wait
20
+ fork { run("ffaker") }; Process.wait
@@ -0,0 +1,83 @@
1
+ require 'helper'
2
+
3
+ class TestHTMLIpsum < Test::Unit::TestCase
4
+ def setup
5
+ @tester = Faker::HTMLIpsum
6
+ end
7
+
8
+ def test_a
9
+ assert_match /^<a href="#\w+" title="[ \w]+">[ \w]+<\/a>$/i, Faker::HTMLIpsum.a
10
+ end
11
+
12
+ def test_p
13
+ # We can't predict the number of times the sentence pattern will repeat
14
+ # because the Faker::Lorem methods that we are using adds a random
15
+ # number on top of what we specify for the count argument.
16
+ assert_match /^<p>([ \w]+\.)+<\/p>$/i, Faker::HTMLIpsum.p
17
+ end
18
+
19
+ def test_p_breaks
20
+ # Here we can at least test how many <br> tags there are.
21
+ assert_match /^<p>(?:[ \w\.]+<br>){2}[ \w\.]+<\/p>$/i, Faker::HTMLIpsum.p(3, {:include_breaks => true})
22
+ end
23
+
24
+ def test_p_fancy
25
+ # We can't predict the number of times the sentence pattern will repeat
26
+ # because the Faker::Lorem methods that we are using adds a random
27
+ # number on top of what we specify for the count argument. We also have to
28
+ # account for the other HTML that is being returned.
29
+ assert_match /^<p>[[:alnum:][:punct:] <>\/]+<\/p>$/i, Faker::HTMLIpsum.p(5, {:fancy => true})
30
+ end
31
+
32
+ def test_p_fancy_breaks
33
+ # Here we can at least test how many <br> tags there are. We also have to
34
+ # account for the other HTML that is being returned.
35
+ assert_match /^<p>(?:[[:alnum:][:punct:] <>\/]+?<br>){9}[[:alnum:][:punct:] <>\/]+?<\/p>/i, Faker::HTMLIpsum.p(10, {:fancy => true, :include_breaks => true})
36
+ end
37
+
38
+ def test_dl
39
+ assert_match /^<dl>(<dt>[ \w]+<\/dt><dd>[ \w.]+<\/dd>){3}<\/dl>$/i, Faker::HTMLIpsum.dl(3)
40
+ end
41
+
42
+ def test_ul_short
43
+ assert_match /^<ul>(<li>[ \w.]+<\/li>){3}<\/ul>$/i, Faker::HTMLIpsum.ul_short(3)
44
+ end
45
+
46
+ def test_ul_long
47
+ assert_match /^<ul>(<li>[ \w.]+<\/li>){3}<\/ul>$/i, Faker::HTMLIpsum.ul_long(3)
48
+ end
49
+
50
+ def test_ol_short
51
+ assert_match /^<ol>(<li>[ \w.]+<\/li>){3}<\/ol>$/i, Faker::HTMLIpsum.ol_short(3)
52
+ end
53
+
54
+ def test_ol_long
55
+ assert_match /^<ol>(<li>[ \w.]+<\/li>){3}<\/ol>$/i, Faker::HTMLIpsum.ol_long(3)
56
+ end
57
+
58
+ def test_ul_links
59
+ assert_match /^<ul>(<li><a href="#\w+" title="\w+">[ \w]+<\/a><\/li>){3}<\/ul>$/i, Faker::HTMLIpsum.ul_links(3)
60
+ end
61
+
62
+ def test_table
63
+ assert_match /(<td>[ \w]+<\/td>\s*){3}/i, Faker::HTMLIpsum.table(3)
64
+ end
65
+
66
+ def test_body
67
+ # We can't reliably predict what's going to end up inside, so just ensure
68
+ # that we have a complete string.
69
+ assert_match /^<h1>.+<\/pre>$/im, Faker::HTMLIpsum.body
70
+ end
71
+
72
+ def test_fancy_string
73
+ # We can't reliably predict what's going to end up inside, so just ensure
74
+ # that we have a complete string.
75
+ assert_match /^[[:alnum:][:punct:] <>\/]+$/im, Faker::HTMLIpsum.fancy_string
76
+ end
77
+
78
+ def test_fancy_string_breaks
79
+ # We can't reliably predict what's going to end up inside, so just ensure
80
+ # that we have a complete string.
81
+ assert_match /^(?:[[:alnum:][:punct:] <>\/]+?<br>){2}[[:alnum:][:punct:] <>\/]+?$/im, Faker::HTMLIpsum.fancy_string(3, true)
82
+ end
83
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffaker
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 55
5
+ prerelease:
5
6
  segments:
6
7
  - 1
7
- - 7
8
+ - 8
8
9
  - 0
9
- version: 1.7.0
10
+ version: 1.8.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Emmanuel Oga
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-05-19 00:00:00 -03:00
18
+ date: 2011-05-30 00:00:00 -03:00
18
19
  default_executable:
19
20
  dependencies: []
20
21
 
@@ -39,6 +40,7 @@ files:
39
40
  - lib/ffaker/company.rb
40
41
  - lib/ffaker/education.rb
41
42
  - lib/ffaker/geolocation.rb
43
+ - lib/ffaker/html_ipsum.rb
42
44
  - lib/ffaker/internet.rb
43
45
  - lib/ffaker/lorem.rb
44
46
  - lib/ffaker/lorem_cn.rb
@@ -65,6 +67,7 @@ files:
65
67
  - test/test_faker_name_de.rb
66
68
  - test/test_faker_name_ru.rb
67
69
  - test/test_geolocation.rb
70
+ - test/test_html_ipsum.rb
68
71
  - test/test_lorem.rb
69
72
  - test/test_lorem_cn.rb
70
73
  - test/test_module_utils.rb
@@ -83,6 +86,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
86
  requirements:
84
87
  - - ">="
85
88
  - !ruby/object:Gem::Version
89
+ hash: 3
86
90
  segments:
87
91
  - 0
88
92
  version: "0"
@@ -91,13 +95,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
95
  requirements:
92
96
  - - ">="
93
97
  - !ruby/object:Gem::Version
98
+ hash: 3
94
99
  segments:
95
100
  - 0
96
101
  version: "0"
97
102
  requirements: []
98
103
 
99
104
  rubyforge_project: ffaker
100
- rubygems_version: 1.3.7
105
+ rubygems_version: 1.6.0
101
106
  signing_key:
102
107
  specification_version: 2
103
108
  summary: Faster Faker, generates dummy data.
@@ -113,6 +118,7 @@ test_files:
113
118
  - test/test_faker_name_de.rb
114
119
  - test/test_faker_name_ru.rb
115
120
  - test/test_geolocation.rb
121
+ - test/test_html_ipsum.rb
116
122
  - test/test_lorem.rb
117
123
  - test/test_lorem_cn.rb
118
124
  - test/test_module_utils.rb