randomperson 1.1.1 → 1.2.0

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.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ v1.2.0 Wednesday the 22nd of August 2012
2
+
3
+ * Removed the evil evals.
4
+ * Simplified some of the code.
5
+
6
+ ----
7
+
1
8
  v1.1.1 Tuesday the 21st of August 2012
2
9
 
3
10
  * Removed some monkey patches.
@@ -3,7 +3,24 @@
3
3
  require_relative "./loader.rb"
4
4
  require_relative "./ext/set.rb"
5
5
 
6
+
7
+
6
8
  module RandomPerson
9
+ class Constant < String
10
+
11
+ def to_constant
12
+ names = split('::')
13
+ names.shift if names.empty? || names.first.empty?
14
+
15
+ constant = Object
16
+ names.each do |name|
17
+ constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
18
+ end
19
+ constant
20
+ end
21
+
22
+ end
23
+
7
24
 
8
25
  class Demographic
9
26
  include Loader
@@ -13,8 +30,8 @@ module RandomPerson
13
30
 
14
31
  attr_accessor :malefirst, :femalefirst, :last, :gender_ratio, :age_lower, :age_upper, :prefix, :suffix #,:age_ratio
15
32
 
16
- def self.available_classes
17
- @available_classes ||= Set.new
33
+ def self.available_name_files
34
+ @available_name_files ||= Set.new
18
35
  end
19
36
 
20
37
 
@@ -32,7 +49,7 @@ module RandomPerson
32
49
  @age_upper = opts[:age_upper] || 115
33
50
 
34
51
 
35
- Demographic.available_classes.merge Demographic.load_names
52
+ Demographic.available_name_files.merge Demographic.load_names
36
53
  end
37
54
 
38
55
 
@@ -65,6 +82,16 @@ module RandomPerson
65
82
  w =~ /^\p{Upper}/
66
83
  }
67
84
  end
85
+
86
+
87
+ def require_and_add( yesses )
88
+ yesses.map {|file_name|
89
+ require file_name
90
+ Constant.new( Demographic.translate file_name )
91
+ }.each do |klass|
92
+ addklass klass
93
+ end
94
+ end
68
95
 
69
96
  # tribe, gender, position
70
97
  def method_missing( name, *args )
@@ -72,17 +99,16 @@ module RandomPerson
72
99
 
73
100
  words = get_words( name )
74
101
 
75
- nots = get_nots( words ).map{|word| Demographic.available_classes.classify_true(word)}.fold(:&)
76
-
77
- yesses = get_yesses( words ).map{|word| Demographic.available_classes.classify_true(word)}.fold(:&)
102
+ nots = get_nots( words ).map{|word|
103
+ Demographic.available_name_files.classify_true(word)
104
+ }.fold(:&)
78
105
 
79
- Demographic.prefix_em(
80
- yesses.map do |(file_name)|
81
- Demographic.requiring( file_name )
82
- end ).each do |klass|
83
- addklass klass
84
- end
106
+ yesses = get_yesses( words ).map{|word|
107
+ Demographic.available_name_files.classify_true(word)
108
+ }.fold(:&)
85
109
 
110
+ require_and_add yesses
111
+
86
112
  self # just because
87
113
  end
88
114
 
@@ -1,3 +1,6 @@
1
+ require 'date'
2
+
3
+
1
4
  module RandomPerson
2
5
  class Date < ::Date
3
6
 
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module RandomPerson
2
4
 
3
5
  # @todo Spec
File without changes
@@ -21,18 +21,11 @@ module RandomPerson
21
21
  end
22
22
  Dir.glob( fulls )
23
23
  end
24
-
25
24
 
26
- # Requires the file and then returns the name of the class
27
- # @param [String] file_name The file to require and extract the class name from.
28
- # @return [String] The class name.
29
- def requiring( file_name )
30
- require file_name
31
- set_of_names = File.basename( file_name, ".rb" ).split("-").map(&:capitalize).join
32
- end
33
-
34
- def prefix_em( collection, prefix="RandomPerson::Names::" )
35
- collection.map{|x| "#{prefix}#{x}"}
25
+
26
+ # Changes the file name into a string useable as a constant class name
27
+ def translate( file_name, prefix="RandomPerson::Names::" )
28
+ "#{prefix}#{File.basename( file_name, ".rb" ).split("-").map(&:capitalize).join}"
36
29
  end
37
30
 
38
31
 
@@ -41,17 +34,19 @@ module RandomPerson
41
34
 
42
35
 
43
36
  module InstanceMethods
44
-
45
- # this adds the classes as constants
37
+
46
38
  # The patterns are there to stop other files being added by accident.
47
39
  # and to load the right names into the right instance var
40
+ # @todo remove evil
41
+ # @param [#to_constant] klass
48
42
  def addklass( klass, patterns=[["Male",'First'],["Female", "First"], ['Last'], ['Prefix'], ['Suffix']] )
49
43
 
50
44
  patterns.each do |ps|
51
45
  if ps.all?{|p| klass =~ /#{p}/ }
52
- instance_variable_set( "@#{ps.join.downcase}", eval("#{klass}.new") )
46
+ instance_variable_set( "@#{ps.join.downcase}", klass.to_constant.new)
53
47
  end # if
54
48
  end
49
+ klass
55
50
  end # addklass
56
51
 
57
52
  end # InstanceMethods
@@ -1,3 +1,3 @@
1
1
  module RandomPerson
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/randomperson.rb CHANGED
@@ -5,9 +5,6 @@ module RandomPerson
5
5
 
6
6
  #require all the scaffolding
7
7
 
8
- require 'set'
9
- require 'date'
10
-
11
8
  require_relative './randomperson/version.rb'
12
9
  require_relative './randomperson/ext/array.rb'
13
10
  require_relative './randomperson/ext/date.rb'
@@ -63,6 +60,7 @@ module RandomPerson
63
60
 
64
61
  # The last person generated.
65
62
  # If a demographic name is given that is different to the last then a new person is generated. If no name is given then the last is used.
63
+ # @param [String] demo_name The key of the demographic to use, e.g "American Ladies".
66
64
  def person( demo_name=nil )
67
65
  person, last_demo_name =
68
66
  if demo_name.nil?
@@ -10,7 +10,8 @@ module RandomPerson
10
10
 
11
11
 
12
12
  describe "available_classes" do
13
- subject { Demographic.available_classes }
13
+ before(:all) { Demographic.available_name_files.clear }
14
+ subject { Demographic.available_name_files }
14
15
  it { should_not be_nil }
15
16
  it { should be_a_kind_of Set }
16
17
  it { should be_empty }
@@ -24,15 +25,24 @@ module RandomPerson
24
25
  specify { subject.map{|f| File.basename(f, ".rb")}.should include "welsh-prefix" }
25
26
  end
26
27
 
27
- describe "Requiring" do
28
+ describe "Translating" do
28
29
  %w{ancient-greek-female-first german-female-first spanish-male-first welsh-prefix}.each do |name|
29
30
  file_name = File.expand_path( File.join( File.dirname(__FILE__),"../lib/randomperson/names", "#{name}.rb") )
30
- expected = name.split("-").map(&:capitalize).join
31
+ expected = "RandomPerson::Names::#{name.split("-").map(&:capitalize).join}"
31
32
  it "should require and return the class name" do
32
- Demographic.requiring( file_name ).should == expected
33
+ Demographic.translate( file_name ).should == expected
33
34
  end
34
35
  end
35
36
  end
37
+
38
+ describe "require_and_add" do
39
+ subject {
40
+ Demographic.new.require_and_add(Demographic.load_names)
41
+ }
42
+ it { should_not be_nil }
43
+ it { should be_a_kind_of Array }
44
+ it { should_not be_empty }
45
+ end
36
46
 
37
47
  describe "Instatiation" do
38
48
  subject { Demographic.new }
@@ -4,107 +4,23 @@ require "spec_helper"
4
4
  require_relative "./support/shared_examples/names.rb"
5
5
  require_relative "../lib/randomperson/person.rb"
6
6
  require_relative "../lib/randomperson/demographic.rb"
7
+ require_relative "./support/helpers.rb"
7
8
 
8
9
  module RandomPerson
9
10
  module Names
10
-
11
- available_classes = Demographic.load_names
12
- available_classes.each do |klass|
13
- klass = Demographic.requiring klass
14
-
15
- k = eval "RandomPerson::Names::#{klass}"
16
-
17
-
18
-
19
- word = /\b\p{Upper}\p{Alpha}+?\b (?:(?:\s|-)\b\p{Upper}\p{Alpha}+?\b)?/x
20
- hypenated_rgx = /^#{word}$/x
21
- french_rgx = /^(?:(?: (?:\bLe\b\s) | (?:\bd[eu]\b)\s) | (?:#{word}-))? #{word}$/x
22
- hypenated_many_rgx = /^#{word} (?:(?:\s|-)#{word})*$/x
23
- unhypenated_rgx = /^#{word}\s#{word}?$/x
24
- poss_unhyph = /^#{word}(?:\s#{word})?$/
25
- thai_style = /^\b\p{Graph}+?\b$/x
26
- default_fix = {times: 50 }
27
- fixtures = {}
28
- fixtures.default = default_fix
29
- fixtures["SpanishLast"] = default_fix.merge({ rgx: /^ \b\p{Upper}(?:\p{Alpha}+-)?\p{Alpha}+?\b\s (?: (?:\bde\b\s) | (?: \b\p{Upper}(?:\p{Alpha}+-)?\p{Alpha}+?\b\s (?:\by\b\s)? ) )? \b\p{Upper}(?:\p{Alpha}+-)?\p{Alpha}+?\b$/x })
30
- fixtures["AmericanLast"] = default_fix.merge({ rgx: hypenated_rgx } )
31
- fixtures["AnyLast"] = default_fix.merge({ rgx: hypenated_rgx } )
32
- fixtures["BritishLast"] = default_fix.merge({ rgx: hypenated_rgx } )
33
- fixtures["EnglishLast"] = default_fix.merge({ rgx: hypenated_rgx } )
34
- fixtures["ScottishLast"] = default_fix.merge({ rgx: hypenated_rgx } )
35
- fixtures["WelshLast"] = default_fix.merge({ rgx: poss_unhyph } )
36
- fixtures["FrenchLast"] = default_fix.merge({ rgx: french_rgx} )
37
- fixtures["FrenchFemaleFirst"] = default_fix.merge({ rgx: hypenated_rgx } )
38
- fixtures["FrenchMaleFirst"] = default_fix.merge({ rgx: hypenated_rgx } )
39
- fixtures["BasqueMaleFirst"] = default_fix.merge({ rgx: hypenated_rgx } )
40
- fixtures["BasqueLast"] = default_fix.merge({ rgx: unhypenated_rgx } )
41
- fixtures["ThaiRomanisedLast"] = default_fix.merge({ rgx: hypenated_rgx } )
42
- fixtures["ThaiFemaleFirst"] = default_fix.merge({ rgx: thai_style } )
43
- fixtures["ThaiMaleFirst"] = default_fix.merge({ rgx: thai_style} )
44
- fixtures["ThaiLast"] = default_fix.merge({ rgx: thai_style} )
45
- fixtures["ThaiFirst"] = default_fix.merge({ rgx: thai_style} )
46
- fixtures["ThaiRomanisedMaleFirst"] = default_fix.merge({ rgx: hypenated_many_rgx} )
47
- fixtures["ThaiRomanisedFemaleFirst"] = default_fix.merge({ rgx: hypenated_many_rgx} )
48
- fixtures["AncientGreekLast"] = default_fix.merge(
49
- { rgx: /^\bof\b\s(?:\b\p{Alpha}+?\b(?:\s|-)){0,3}\b\p{Alpha}+?\b$/x } )
50
-
51
- #PREFIXES
52
- fix_fixtures = {}
53
- fix_fixtures["FinnishPrefix"] = {
54
- young_male: {gender: "m", age: rand(17), in: ["herra"]}, #rgx: /^\bherra\b$/x },
55
- older_male: {gender: "m", in: ["herra", "Dr"]}, #rgx: /^\b(?:herra|Dr)\b$/x },
56
- young_female: {gender: "f", age: rand(17), in: ["neiti"]}, #rgx: /^\bneiti\b$/x },
57
- older_female: {gender: "f", age: rand(17), in: ["rouva", "neiti", "Dr"]} #rgx: /^\b(?:rouva)|(?:neiti)|(?:Dr)\b$/x },
58
- }
59
- fix_fixtures["SpanishPrefix"] = {
60
- young_male: {gender: "m", age: rand(17), in: ["Sr."]}, #rgx: /^\bSr\b\.$/x },
61
- older_male: {gender: "m", in: ["Sr.", "Dr."]}, #rgx: /^\b(?:[SD]r\b\.)$/x },
62
- young_female: {gender: "f", age: rand(17), in: ["Srta."]}, #rgx: /^\bSrta\b.$/x },
63
- older_female: {gender: "f", in: ["Dra.", "Srta.", "Sra."]}#rgx: /^[DS]rt?a\b\.$/x }
64
- }
65
- fix_fixtures["AmericanPrefix"] = {
66
- young_female: {gender: "f", age: rand(17), rgx: /^\bMiss\b$/},
67
- older_female: {gender: "f", in: ["Miss", "Mrs.", "Dr.", "Ms."]}, #rgx: /^\bM(?:(?:iss\b)|(?:(?:r?s)\b\.))$|(?:Dr\b\.$)/x },
68
- young_male: {gender: "m", age: rand(17), in: ["Mr."]}, #rgx: /^\bMr\b\.$/},
69
- older_male: {gender: "m", in: ["Mr.", "Dr."]},
70
- } #rgx: /^\b[MD]r\b\.$/}, }
71
- fix_fixtures["AmericanSuffix"] = {
72
- young_female: {},
73
- older_female: {},
74
- young_male: {},
75
- older_male: {} }
76
- fix_fixtures["BritishPrefix"] = {
77
- young_female: {gender: "f", age: rand(17), rgx: /^\bMiss\b$/},
78
- older_female: {gender: "f", rgx: /^\b(?:M(?:is|r)?s)|(?:Dr)\b$/},
79
- young_male: {gender: "m", age: rand(17), rgx: /^\bMr\b$/},
80
- older_male: {gender: "m", rgx: /^\b[MD]r\b$/}, }
81
- fix_fixtures["EnglishPrefix"] = fix_fixtures["ScottishPrefix"] = fix_fixtures["WelshPrefix"] = fix_fixtures["BritishPrefix"]
82
-
83
- #SUFFIXES
84
- fix_fixtures["BritishSuffix"] = {
85
- young_female: {age: rand(17), gender: "f", in: [""] },
86
- older_female: { gender: "f", in: %w( OBE MBE GBE KBE DBE CBE JP GM PhD BSc BA )},
87
- young_male: {age: rand(17), gender: "m", in: [""] },
88
- older_male: {gender: "m", in: %w( OBE MBE GBE KBE DBE CBE JP GM PhD BSc BA ) },
89
- }
90
- fix_fixtures["AmericanSuffix"] = { # strictly speaking, gender doesn't matter here, but I'll leave the test in.
91
- young_female: {age: rand(17), gender: "f", in: [ 'Jr.', ''] + %w( I II III IV V) },
92
- young_male: { age: rand(17), gender: "m", in: [ 'Jr.', ''] + %w( I II III IV V ) },
93
- older_male: { gender: "m", in: [ ''] + %w( I II III IV V Sr. ) },
94
- older_female: { gender: "f", in: [ ''] + %w( I II III IV V Sr. ) },
95
- }
96
11
 
12
+ Demographic.new.require_and_add(Demographic.load_names).each do |klass|
13
+ klass = klass.split("::").last
97
14
 
98
15
  puts "Describe #{klass}" #because rspec doesn't output this before it blow up! Sheesh!!
99
16
  describe klass do
100
- let(:instance) { k.new }
17
+ let(:instance) { RandomPerson::Constant.new("RandomPerson::Names::#{klass}").to_constant.new }
101
18
  subject{ instance }
102
19
  it_should_behave_like "a Name class"
103
20
  if ["Prefix", "Suffix"].any?{|x| klass.include? x }
104
-
105
- it_should_behave_like "it cares about gender and/or age", fix_fixtures[klass]
21
+ it_should_behave_like "it cares about gender and/or age", RandomPerson::Spec::Helpers.fix_fixtures[klass]
106
22
  else
107
- it_should_behave_like "a name generator", fixtures[klass]
23
+ it_should_behave_like "a name generator", RandomPerson::Spec::Helpers.fixtures[klass]
108
24
  end
109
25
  end # describe
110
26
  end # loop
data/spec/spec_helper.rb CHANGED
@@ -18,8 +18,8 @@ SimpleCov.start do
18
18
  add_filter "/spec/"
19
19
  end
20
20
 
21
+
21
22
  RSpec.configure do |c|
22
- # c.include RandomPerson::Spec::Helpers
23
23
  c.treat_symbols_as_metadata_keys_with_true_values = true
24
24
  end
25
25
 
@@ -8,6 +8,96 @@ module RandomPerson
8
8
  def all_kind_of?( collection, kind )
9
9
  collection.all? {|c| c.kind_of? kind }
10
10
  end
11
+
12
+ Word = /\b\p{Upper}\p{Alpha}+?\b (?:(?:\s|-)\b\p{Upper}\p{Alpha}+?\b)?/x
13
+ Hypenated_rgx = /^#{Word}$/x
14
+ French_rgx = /^(?:(?: (?:\bLe\b\s) | (?:\bd[eu]\b)\s) | (?:#{Word}-))? #{Word}$/x
15
+ Hypenated_many_rgx = /^#{Word} (?:(?:\s|-)#{Word})*$/x
16
+ Unhypenated_rgx = /^#{Word}\s#{Word}?$/x
17
+ Poss_unhyph = /^#{Word}(?:\s#{Word})?$/
18
+ Thai_style = /^\b\p{Graph}+?\b$/x
19
+ Default_fix = {times: 50 }
20
+
21
+ def self.fixtures
22
+ if @fixtures.nil?
23
+ @fixtures = {}
24
+ @fixtures.default = Default_fix
25
+ @fixtures["SpanishLast"] = Default_fix.merge({ rgx: /^ \b\p{Upper}(?:\p{Alpha}+-)?\p{Alpha}+?\b\s (?: (?:\bde\b\s) | (?: \b\p{Upper}(?:\p{Alpha}+-)?\p{Alpha}+?\b\s (?:\by\b\s)? ) )? \b\p{Upper}(?:\p{Alpha}+-)?\p{Alpha}+?\b$/x })
26
+ @fixtures["AmericanLast"] = Default_fix.merge({ rgx: Hypenated_rgx } )
27
+ @fixtures["AnyLast"] = Default_fix.merge({ rgx: Hypenated_rgx } )
28
+ @fixtures["BritishLast"] = Default_fix.merge({ rgx: Hypenated_rgx } )
29
+ @fixtures["EnglishLast"] = Default_fix.merge({ rgx: Hypenated_rgx } )
30
+ @fixtures["ScottishLast"] = Default_fix.merge({ rgx: Hypenated_rgx } )
31
+ @fixtures["WelshLast"] = Default_fix.merge({ rgx: Poss_unhyph } )
32
+ @fixtures["FrenchLast"] = Default_fix.merge({ rgx: French_rgx} )
33
+ @fixtures["FrenchFemaleFirst"] = Default_fix.merge({ rgx: Hypenated_rgx } )
34
+ @fixtures["FrenchMaleFirst"] = Default_fix.merge({ rgx: Hypenated_rgx } )
35
+ @fixtures["BasqueMaleFirst"] = Default_fix.merge({ rgx: Hypenated_rgx } )
36
+ @fixtures["BasqueLast"] = Default_fix.merge({ rgx: Unhypenated_rgx } )
37
+ @fixtures["ThaiRomanisedLast"] = Default_fix.merge({ rgx: Hypenated_rgx } )
38
+ @fixtures["ThaiFemaleFirst"] = Default_fix.merge({ rgx: Thai_style } )
39
+ @fixtures["ThaiMaleFirst"] = Default_fix.merge({ rgx: Thai_style} )
40
+ @fixtures["ThaiLast"] = Default_fix.merge({ rgx: Thai_style} )
41
+ @fixtures["ThaiFirst"] = Default_fix.merge({ rgx: Thai_style} )
42
+ @fixtures["ThaiRomanisedMaleFirst"] = Default_fix.merge({ rgx: Hypenated_many_rgx} )
43
+ @fixtures["ThaiRomanisedFemaleFirst"] = Default_fix.merge({ rgx: Hypenated_many_rgx} )
44
+ @fixtures["AncientGreekLast"] = Default_fix.merge(
45
+ { rgx: /^\bof\b\s(?:\b\p{Alpha}+?\b(?:\s|-)){0,3}\b\p{Alpha}+?\b$/x } )
46
+ end
47
+ @fixtures
48
+ end
49
+
50
+ # prefixes
51
+ def self.fix_fixtures
52
+ if @fix_fixtures.nil?
53
+ @fix_fixtures = {}
54
+ @fix_fixtures["FinnishPrefix"] = {
55
+ young_male: {gender: "m", age: rand(17), in: ["herra"]}, #rgx: /^\bherra\b$/x },
56
+ older_male: {gender: "m", in: ["herra", "Dr"]}, #rgx: /^\b(?:herra|Dr)\b$/x },
57
+ young_female: {gender: "f", age: rand(17), in: ["neiti"]}, #rgx: /^\bneiti\b$/x },
58
+ older_female: {gender: "f", age: rand(17), in: ["rouva", "neiti", "Dr"]} #rgx: /^\b(?:rouva)|(?:neiti)|(?:Dr)\b$/x },
59
+ }
60
+ @fix_fixtures["SpanishPrefix"] = {
61
+ young_male: {gender: "m", age: rand(17), in: ["Sr."]}, #rgx: /^\bSr\b\.$/x },
62
+ older_male: {gender: "m", in: ["Sr.", "Dr."]}, #rgx: /^\b(?:[SD]r\b\.)$/x },
63
+ young_female: {gender: "f", age: rand(17), in: ["Srta."]}, #rgx: /^\bSrta\b.$/x },
64
+ older_female: {gender: "f", in: ["Dra.", "Srta.", "Sra."]}#rgx: /^[DS]rt?a\b\.$/x }
65
+ }
66
+ @fix_fixtures["AmericanPrefix"] = {
67
+ young_female: {gender: "f", age: rand(17), rgx: /^\bMiss\b$/},
68
+ older_female: {gender: "f", in: ["Miss", "Mrs.", "Dr.", "Ms."]}, #rgx: /^\bM(?:(?:iss\b)|(?:(?:r?s)\b\.))$|(?:Dr\b\.$)/x },
69
+ young_male: {gender: "m", age: rand(17), in: ["Mr."]}, #rgx: /^\bMr\b\.$/},
70
+ older_male: {gender: "m", in: ["Mr.", "Dr."]},
71
+ } #rgx: /^\b[MD]r\b\.$/}, }
72
+ @fix_fixtures["AmericanSuffix"] = {
73
+ young_female: {},
74
+ older_female: {},
75
+ young_male: {},
76
+ older_male: {} }
77
+ @fix_fixtures["BritishPrefix"] = {
78
+ young_female: {gender: "f", age: rand(17), rgx: /^\bMiss\b$/},
79
+ older_female: {gender: "f", rgx: /^\b(?:M(?:is|r)?s)|(?:Dr)\b$/},
80
+ young_male: {gender: "m", age: rand(17), rgx: /^\bMr\b$/},
81
+ older_male: {gender: "m", rgx: /^\b[MD]r\b$/}, }
82
+ @fix_fixtures["EnglishPrefix"] = @fix_fixtures["ScottishPrefix"] = @fix_fixtures["WelshPrefix"] = @fix_fixtures["BritishPrefix"]
83
+
84
+ #SUFFIXES
85
+ @fix_fixtures["BritishSuffix"] = {
86
+ young_female: {age: rand(17), gender: "f", in: [""] },
87
+ older_female: { gender: "f", in: %w( OBE MBE GBE KBE DBE CBE JP GM PhD BSc BA )},
88
+ young_male: {age: rand(17), gender: "m", in: [""] },
89
+ older_male: {gender: "m", in: %w( OBE MBE GBE KBE DBE CBE JP GM PhD BSc BA ) },
90
+ }
91
+ @fix_fixtures["AmericanSuffix"] = { # strictly speaking, gender doesn't matter here, but I'll leave the test in.
92
+ young_female: {age: rand(17), gender: "f", in: [ 'Jr.', ''] + %w( I II III IV V) },
93
+ young_male: { age: rand(17), gender: "m", in: [ 'Jr.', ''] + %w( I II III IV V ) },
94
+ older_male: { gender: "m", in: [ ''] + %w( I II III IV V Sr. ) },
95
+ older_female: { gender: "f", in: [ ''] + %w( I II III IV V Sr. ) },
96
+ }
97
+ end
98
+ @fix_fixtures
99
+ end
100
+
11
101
  end # Helpers
12
102
  end # Spec
13
103
  end # RandomPerson
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: randomperson
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-21 00:00:00.000000000 Z
12
+ date: 2012-08-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: wirble
@@ -135,6 +135,7 @@ files:
135
135
  - lib/randomperson/ext/hash.rb
136
136
  - lib/randomperson/ext/kernel.rb
137
137
  - lib/randomperson/ext/set.rb
138
+ - lib/randomperson/ext/string.rb
138
139
  - lib/randomperson/generator.rb
139
140
  - lib/randomperson/loader.rb
140
141
  - lib/randomperson/name.rb