randomperson 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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