randexp 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2008 Ben Burkert
1
+ Copyright (c) 2008-2009 Ben Burkert
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -17,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
17
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
18
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
19
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile CHANGED
@@ -1,13 +1,13 @@
1
- require 'rubygems'
2
1
  require 'rake/gempackagetask'
3
2
  require 'rubygems/specification'
4
3
  require 'date'
5
4
  require "spec/rake/spectask"
6
5
  require 'rake/rdoctask'
6
+ require 'bundler'
7
7
 
8
8
  PROJECT_NAME = "randexp"
9
9
  GEM = "randexp"
10
- GEM_VERSION = "0.1.4"
10
+ GEM_VERSION = "0.1.5"
11
11
  AUTHOR = "Ben Burkert"
12
12
  EMAIL = "ben@benburkert.com"
13
13
  HOMEPAGE = "http://github.com/benburkert/randexp"
@@ -18,6 +18,8 @@ RDOC_FILES = %w(LICENSE README README Rakefile TODO CHANGELOG) + Dir.glob("lib/*
18
18
 
19
19
  RUBYFORGE_USER = "benburkert"
20
20
 
21
+ task :default => :specs
22
+
21
23
  spec = Gem::Specification.new do |s|
22
24
  s.name = GEM
23
25
  s.version = GEM_VERSION
@@ -33,6 +35,13 @@ spec = Gem::Specification.new do |s|
33
35
  s.require_path = 'lib'
34
36
  s.autorequire = GEM
35
37
  s.files = FILES
38
+
39
+ manifest = Bundler::Definition.from_gemfile('Gemfile')
40
+ manifest.dependencies.each do |d|
41
+ next unless d.groups.include?(:runtime)
42
+ s.add_dependency(d.name, d.version_requirements.to_s)
43
+ end
44
+
36
45
  end
37
46
 
38
47
  Rake::GemPackageTask.new(spec) do |package|
@@ -64,7 +73,7 @@ Spec::Rake::SpecTask.new("specs:unit") do |t|
64
73
  t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
65
74
  t.rcov_opts << '--only-uncovered'
66
75
  t.rcov_opts << '--output coverage/unit'
67
-
76
+
68
77
  end
69
78
 
70
79
  desc "Run all regression specs"
@@ -108,4 +117,4 @@ task :release => [:specs, :package, :doc] do
108
117
  %w[zip tgz].each do |ext|
109
118
  sh %{rubyforge add_file #{PROJECT_NAME} #{GEM} "#{GEM_VERSION}" pkg/#{GEM}-#{GEM_VERSION}.#{ext}}
110
119
  end
111
- end
120
+ end
@@ -18,4 +18,4 @@ require dir + '/randgen'
18
18
  require dir + '/reducer'
19
19
  require dir + '/wordlists/female_names'
20
20
  require dir + '/wordlists/male_names'
21
- require dir + '/wordlists/real_name'
21
+ require dir + '/wordlists/real_name'
@@ -3,4 +3,4 @@ dir = File.dirname(__FILE__)
3
3
  require dir + '/core_ext/array'
4
4
  require dir + '/core_ext/integer'
5
5
  require dir + '/core_ext/range'
6
- require dir + '/core_ext/regexp'
6
+ require dir + '/core_ext/regexp'
@@ -2,4 +2,4 @@ class Integer
2
2
  def of
3
3
  (1..self).to_a.map { yield }
4
4
  end
5
- end
5
+ end
@@ -6,4 +6,4 @@ class Range
6
6
  def of
7
7
  pick.of { yield }
8
8
  end
9
- end
9
+ end
@@ -4,4 +4,4 @@ class Regexp
4
4
  end
5
5
 
6
6
  alias_method :gen, :generate
7
- end
7
+ end
@@ -10,8 +10,7 @@ class Randexp::Dictionary
10
10
  end
11
11
 
12
12
  def self.words(options = {})
13
- case
14
- when options.has_key?(:length)
13
+ if options.has_key?(:length)
15
14
  words_by_length[options[:length]]
16
15
  else
17
16
  @@words ||= load_dictionary
@@ -19,6 +18,9 @@ class Randexp::Dictionary
19
18
  end
20
19
 
21
20
  def self.words_by_length
22
- @@words_by_length ||= words.inject({}) {|h, w| (h[w.size] ||= []) << w; h }
21
+ @@words_by_length ||= begin
22
+ hash = Hash.new {|h,k| h[k] = [] }
23
+ words.inject(hash) {|h, w| h[w.size] << w; h }
24
+ end
23
25
  end
24
- end
26
+ end
@@ -94,4 +94,4 @@ class Randexp
94
94
  [:literal, word]
95
95
  end
96
96
  end
97
- end
97
+ end
@@ -1,7 +1,7 @@
1
1
  class Randgen
2
2
  WORDS_PER_SENTENCE = 3..20
3
3
  SENTENCES_PER_PARAGRAPH = 3..8
4
-
4
+
5
5
  def self.bool(options = {})
6
6
  ['true', 'false'].pick
7
7
  end
@@ -33,15 +33,16 @@ class Randgen
33
33
  def self.word(options = {})
34
34
  begin
35
35
  word = Randexp::Dictionary.words(options).pick
36
+ word ||= options[:length].of { alpha_numeric }.join
36
37
  end until word =~ /^\w+$/
37
38
 
38
39
  word
39
40
  end
40
-
41
+
41
42
  def self.first_name(options = {})
42
43
  RealName.first_names(options).pick
43
44
  end
44
-
45
+
45
46
  def self.surname(options = {})
46
47
  RealName.surnames(options).pick
47
48
  end
@@ -49,11 +50,16 @@ class Randgen
49
50
  class << self
50
51
  alias_method :last_name, :surname
51
52
  end
52
-
53
+
53
54
  def self.name(options = {})
54
55
  "#{first_name(options)} #{surname(options)}"
55
56
  end
56
57
 
58
+ def self.email(options = {})
59
+ domain = options.fetch(:domain, "#{word(options)}.example.org")
60
+ "#{word(options)}@#{domain}"
61
+ end
62
+
57
63
  def self.sentence(options = {})
58
64
  ((options[:length] || WORDS_PER_SENTENCE.pick).of { word } * " ").capitalize
59
65
  end
@@ -62,11 +68,11 @@ class Randgen
62
68
  ((options[:length] || SENTENCES_PER_PARAGRAPH.pick).of { sentence } * ". ") + "."
63
69
  end
64
70
 
65
- def self.phone_number(options = {})
71
+ def self.phone_number(options = {})
66
72
  case options[:length]
67
73
  when 7 then /\d{3}-\d{4}/.gen
68
74
  when 10 then /\d{3}-\d{3}-\d{4}/.gen
69
75
  else /(\d{3}-)?\d{3}-\d{4}/.gen
70
76
  end
71
77
  end
72
- end
78
+ end
@@ -88,7 +88,7 @@ class Randexp
88
88
  end
89
89
 
90
90
  def self.randgen(args, quantity)
91
- method_name = *args
91
+ method_name, _ = *args
92
92
  case quantity
93
93
  when :'?' then ['', Randgen.send(method_name, :length => 1)].pick
94
94
  when :+, :'+?' then Randgen.send(method_name)
@@ -99,4 +99,4 @@ class Randexp
99
99
  end
100
100
  end
101
101
  end
102
- end
102
+ end
@@ -20,4 +20,4 @@ class RealName
20
20
  def self.female_first_names_by_length
21
21
  @@female_first_names_by_length ||= female_first_names.inject({}) {|h, w| (h[w.size] ||= []) << w; h }
22
22
  end
23
- end
23
+ end
@@ -20,4 +20,4 @@ class RealName
20
20
  def self.male_first_names_by_length
21
21
  @@male_first_names_by_length ||= male_first_names.inject({}) {|h, w| (h[w.size] ||= []) << w; h }
22
22
  end
23
- end
23
+ end
@@ -30,4 +30,4 @@ class RealName
30
30
  [male_first_names(options), female_first_names(options)].pick
31
31
  end
32
32
  end
33
- end
33
+ end
@@ -182,4 +182,4 @@ describe "#{'*' * 80}\nRegression Specs:" do
182
182
  it "/[:first_name:]{5,10}/ => /\\w{5,10}/" do
183
183
  /[:first_name:]{5,10}/.gen.should =~ /\w{5,10}/
184
184
  end
185
- end
185
+ end
@@ -1,7 +1,5 @@
1
- require 'rubygems'
2
- require 'spec'
3
1
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
4
-
2
+ require 'spec'
5
3
  require 'randexp'
6
4
 
7
5
  Spec::Runner.configure do |config|
@@ -6,4 +6,4 @@ describe Regexp do
6
6
  /abcd/.gen.class.should == String
7
7
  end
8
8
  end
9
- end
9
+ end
@@ -74,4 +74,4 @@ describe Randexp::Parser do
74
74
  Randexp::Parser.literal('a').first.should == :literal
75
75
  end
76
76
  end
77
- end
77
+ end
@@ -221,4 +221,4 @@ describe Randexp::Reducer do
221
221
  Randexp::Reducer.randgen([:baz], 7)
222
222
  end
223
223
  end
224
- end
224
+ end
@@ -155,4 +155,4 @@ describe Randexp do
155
155
  end
156
156
  end
157
157
  end
158
- end
158
+ end
@@ -58,6 +58,9 @@ describe Randgen do
58
58
  end
59
59
 
60
60
  describe ".word" do
61
+ it "should handle generating long strings" do
62
+ Randgen.word(:length => 64).length.should == 64
63
+ end
61
64
  it "should pick an entry from Dictionary" do
62
65
  10.times do
63
66
  Randexp::Dictionary.words.should include(Randgen.word)
@@ -123,6 +126,26 @@ describe Randgen do
123
126
  end
124
127
  end
125
128
 
129
+ describe ".email" do
130
+ it "should pick a local-part from the dictionnary" do
131
+ 100.times do
132
+ Randexp::Dictionary.words.should include(Randgen.email[/^(\w+)@/, 1])
133
+ end
134
+ end
135
+
136
+ it "should use the domain option paramter" do
137
+ 100.times do
138
+ Randgen.email(:domain => 'foobar.com')[/@((?:\w|\.)+)$/, 1].should == 'foobar.com'
139
+ end
140
+ end
141
+
142
+ it "should pick a subdomain of example.org by default" do
143
+ 100.times do
144
+ Randexp::Dictionary.words.should include(Randgen.email[/@(\w+)\.example\.org$/, 1])
145
+ end
146
+ end
147
+ end
148
+
126
149
  describe ".sentence" do
127
150
  it "should be capitalized" do
128
151
  10.times do
@@ -164,7 +187,7 @@ describe Randgen do
164
187
  Randgen.first_name.should =~ /\w/
165
188
  end
166
189
  end
167
-
190
+
168
191
  it "should generate a male first name" do
169
192
  male_list = RealName.male_first_names
170
193
  100.times do
@@ -172,7 +195,7 @@ describe Randgen do
172
195
  male_list.include?(Randgen.first_name(:gender => :male)).should be_true
173
196
  end
174
197
  end
175
-
198
+
176
199
  it "should generate a female first name" do
177
200
  female_list = RealName.female_first_names
178
201
  100.times do
@@ -180,19 +203,19 @@ describe Randgen do
180
203
  female_list.include?(Randgen.first_name(:gender => :female)).should be_true
181
204
  end
182
205
  end
183
-
206
+
184
207
  it "should generate a last name" do
185
208
  100.times do
186
209
  Randgen.last_name.should =~ /\w/
187
210
  end
188
211
  end
189
-
212
+
190
213
  it "should generate a real name" do
191
214
  100.times do
192
215
  Randgen.name.should =~ /\w{2}/
193
216
  end
194
217
  end
195
-
218
+
196
219
  it "should generate a real male name" do
197
220
  male_list = RealName.male_first_names
198
221
  100.times do
@@ -201,7 +224,7 @@ describe Randgen do
201
224
  male_list.include?(name.split(' ').first).should be_true
202
225
  end
203
226
  end
204
-
227
+
205
228
  it "should generate a real female name" do
206
229
  female_list = RealName.female_first_names
207
230
  100.times do
@@ -210,4 +233,4 @@ describe Randgen do
210
233
  female_list.include?(name.split(' ').first).should be_true
211
234
  end
212
235
  end
213
- end
236
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: randexp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Burkert
@@ -9,10 +9,19 @@ autorequire: randexp
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-08 00:00:00 -05:00
12
+ date: 2010-02-16 00:00:00 -08:00
13
13
  default_executable:
14
- dependencies: []
15
-
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ParseTree
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
16
25
  description: Library for generating random strings.
17
26
  email: ben@benburkert.com
18
27
  executables: []
@@ -29,9 +38,6 @@ files:
29
38
  - Rakefile
30
39
  - TODO
31
40
  - CHANGELOG
32
- - lib/randexp
33
- - lib/randexp/core
34
- - lib/randexp/core_ext
35
41
  - lib/randexp/core_ext/array.rb
36
42
  - lib/randexp/core_ext/integer.rb
37
43
  - lib/randexp/core_ext/range.rb
@@ -41,18 +47,13 @@ files:
41
47
  - lib/randexp/parser.rb
42
48
  - lib/randexp/randgen.rb
43
49
  - lib/randexp/reducer.rb
44
- - lib/randexp/wordlists
45
50
  - lib/randexp/wordlists/female_names.rb
46
51
  - lib/randexp/wordlists/male_names.rb
47
52
  - lib/randexp/wordlists/real_name.rb
48
53
  - lib/randexp.rb
49
- - spec/regression
50
54
  - spec/regression/regexp_spec.rb
51
55
  - spec/spec_helper.rb
52
- - spec/unit
53
- - spec/unit/core_ext
54
56
  - spec/unit/core_ext/regexp_spec.rb
55
- - spec/unit/randexp
56
57
  - spec/unit/randexp/parser_spec.rb
57
58
  - spec/unit/randexp/reducer_spec.rb
58
59
  - spec/unit/randexp_spec.rb
@@ -62,6 +63,8 @@ files:
62
63
  - wordlists/surnames
63
64
  has_rdoc: true
64
65
  homepage: http://github.com/benburkert/randexp
66
+ licenses: []
67
+
65
68
  post_install_message:
66
69
  rdoc_options: []
67
70
 
@@ -82,9 +85,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
85
  requirements: []
83
86
 
84
87
  rubyforge_project:
85
- rubygems_version: 1.3.0
88
+ rubygems_version: 1.3.5
86
89
  signing_key:
87
- specification_version: 2
90
+ specification_version: 3
88
91
  summary: Library for generating random strings.
89
92
  test_files: []
90
93