ffakerer 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.
Files changed (234) hide show
  1. checksums.yaml +15 -0
  2. data/Changelog.md +154 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE +22 -0
  5. data/README.md +88 -0
  6. data/Rakefile +138 -0
  7. data/ffakerer.gemspec +266 -0
  8. data/lib/ffakerer.rb +31 -0
  9. data/lib/ffakerer/address.rb +99 -0
  10. data/lib/ffakerer/address_au.rb +106 -0
  11. data/lib/ffakerer/address_ca.rb +28 -0
  12. data/lib/ffakerer/address_da.rb +56 -0
  13. data/lib/ffakerer/address_de.rb +42 -0
  14. data/lib/ffakerer/address_mx.rb +505 -0
  15. data/lib/ffakerer/address_se.rb +48 -0
  16. data/lib/ffakerer/address_sn.rb +25 -0
  17. data/lib/ffakerer/address_uk.rb +27 -0
  18. data/lib/ffakerer/address_us.rb +30 -0
  19. data/lib/ffakerer/bacon_ipsum.rb +21 -0
  20. data/lib/ffakerer/company.rb +45 -0
  21. data/lib/ffakerer/company_se.rb +24 -0
  22. data/lib/ffakerer/conference.rb +12 -0
  23. data/lib/ffakerer/data/address/city_suffixes +19 -0
  24. data/lib/ffakerer/data/address/country +242 -0
  25. data/lib/ffakerer/data/address/neighborhood +49 -0
  26. data/lib/ffakerer/data/address/street_suffix +195 -0
  27. data/lib/ffakerer/data/address_ca/province +13 -0
  28. data/lib/ffakerer/data/address_da/city +592 -0
  29. data/lib/ffakerer/data/address_da/kommune +92 -0
  30. data/lib/ffakerer/data/address_da/street +657 -0
  31. data/lib/ffakerer/data/address_de/city +1666 -0
  32. data/lib/ffakerer/data/address_de/state +15 -0
  33. data/lib/ffakerer/data/address_mx/state +32 -0
  34. data/lib/ffakerer/data/address_mx/state_abbr +32 -0
  35. data/lib/ffakerer/data/address_se/city +154 -0
  36. data/lib/ffakerer/data/address_se/countries +250 -0
  37. data/lib/ffakerer/data/address_se/street +2887 -0
  38. data/lib/ffakerer/data/address_sn/arrondissements +47 -0
  39. data/lib/ffakerer/data/address_sn/departements +43 -0
  40. data/lib/ffakerer/data/address_sn/regions +14 -0
  41. data/lib/ffakerer/data/address_uk/uk_county +70 -0
  42. data/lib/ffakerer/data/address_us/state +50 -0
  43. data/lib/ffakerer/data/address_us/state_abbr +51 -0
  44. data/lib/ffakerer/data/address_us/state_and_territories_abbr +62 -0
  45. data/lib/ffakerer/data/bacon_ipsum/bacon_words +60 -0
  46. data/lib/ffakerer/data/company/bs_mid +65 -0
  47. data/lib/ffakerer/data/company/bs_pos +44 -0
  48. data/lib/ffakerer/data/company/bs_pre +60 -0
  49. data/lib/ffakerer/data/company/catch_mid +101 -0
  50. data/lib/ffakerer/data/company/catch_pos +104 -0
  51. data/lib/ffakerer/data/company/catch_pre +100 -0
  52. data/lib/ffakerer/data/company/position_areas +11 -0
  53. data/lib/ffakerer/data/conference/conference_list +40 -0
  54. data/lib/ffakerer/data/dizzle_ipsum/dizzle_words +69 -0
  55. data/lib/ffakerer/data/education/major_noun +13 -0
  56. data/lib/ffakerer/data/education/school_suffix +13 -0
  57. data/lib/ffakerer/data/healthcare_ipsum/healthcare_words +193 -0
  58. data/lib/ffakerer/data/hipster_ipsum/hipster_words +101 -0
  59. data/lib/ffakerer/data/job/job_adj +37 -0
  60. data/lib/ffakerer/data/job/job_noun +25 -0
  61. data/lib/ffakerer/data/job/job_prefix +22 -0
  62. data/lib/ffakerer/data/job_fr/job_nouns +14 -0
  63. data/lib/ffakerer/data/job_fr/job_prefixes +15 -0
  64. data/lib/ffakerer/data/lorem/characters +36 -0
  65. data/lib/ffakerer/data/lorem/words +249 -0
  66. data/lib/ffakerer/data/lorem_ar/words +911 -0
  67. data/lib/ffakerer/data/lorem_cn/words +706 -0
  68. data/lib/ffakerer/data/lorem_fr/words +10379 -0
  69. data/lib/ffakerer/data/movie/adj_and_adv +20 -0
  70. data/lib/ffakerer/data/movie/nouns +36 -0
  71. data/lib/ffakerer/data/movie/prefixes +17 -0
  72. data/lib/ffakerer/data/name/first_names +3008 -0
  73. data/lib/ffakerer/data/name/last_names +475 -0
  74. data/lib/ffakerer/data/name_cn/first_names +1000 -0
  75. data/lib/ffakerer/data/name_cn/last_names +1057 -0
  76. data/lib/ffakerer/data/name_cs/prefixes +16 -0
  77. data/lib/ffakerer/data/name_da/female_first_names +492 -0
  78. data/lib/ffakerer/data/name_da/last_names +187 -0
  79. data/lib/ffakerer/data/name_da/male_first_names +390 -0
  80. data/lib/ffakerer/data/name_de/first_names +1166 -0
  81. data/lib/ffakerer/data/name_de/last_names +100 -0
  82. data/lib/ffakerer/data/name_fr/first_names +220 -0
  83. data/lib/ffakerer/data/name_fr/last_names +408 -0
  84. data/lib/ffakerer/data/name_ga/first_names_female +225 -0
  85. data/lib/ffakerer/data/name_ga/first_names_male +306 -0
  86. data/lib/ffakerer/data/name_ja/first_names +397 -0
  87. data/lib/ffakerer/data/name_ja/last_names +1078 -0
  88. data/lib/ffakerer/data/name_kr/first_names +1317 -0
  89. data/lib/ffakerer/data/name_kr/last_names +197 -0
  90. data/lib/ffakerer/data/name_mx/female_first_names +216 -0
  91. data/lib/ffakerer/data/name_mx/last_names +352 -0
  92. data/lib/ffakerer/data/name_mx/male_first_names +211 -0
  93. data/lib/ffakerer/data/name_ph/autochthonous_surnames +217 -0
  94. data/lib/ffakerer/data/name_ph/spanish_surnames +300 -0
  95. data/lib/ffakerer/data/name_se/first_names_female +110 -0
  96. data/lib/ffakerer/data/name_se/first_names_male +110 -0
  97. data/lib/ffakerer/data/name_se/last_names +100 -0
  98. data/lib/ffakerer/data/name_sn/first_names_female +225 -0
  99. data/lib/ffakerer/data/name_sn/first_names_male +304 -0
  100. data/lib/ffakerer/data/name_sn/last_names +243 -0
  101. data/lib/ffakerer/data/name_vn/first_names +6 -0
  102. data/lib/ffakerer/data/name_vn/last_names +67 -0
  103. data/lib/ffakerer/data/name_vn/middle_names +89 -0
  104. data/lib/ffakerer/data/phone_number_se/phone_prefix +265 -0
  105. data/lib/ffakerer/data/product/adj +19 -0
  106. data/lib/ffakerer/data/product/b1 +19 -0
  107. data/lib/ffakerer/data/product/noun +16 -0
  108. data/lib/ffakerer/data/skill/specialty_end +14 -0
  109. data/lib/ffakerer/data/skill/specialty_start +18 -0
  110. data/lib/ffakerer/data/skill/tech_skills +52 -0
  111. data/lib/ffakerer/data/venue/venue_list +33 -0
  112. data/lib/ffakerer/dizzle_ipsum.rb +21 -0
  113. data/lib/ffakerer/education.rb +48 -0
  114. data/lib/ffakerer/geolocation.rb +50 -0
  115. data/lib/ffakerer/healthcare_ipsum.rb +20 -0
  116. data/lib/ffakerer/hipster_ipsum.rb +21 -0
  117. data/lib/ffakerer/html_ipsum.rb +160 -0
  118. data/lib/ffakerer/identification.rb +27 -0
  119. data/lib/ffakerer/identification_es.rb +15 -0
  120. data/lib/ffakerer/identification_es_cl.rb +26 -0
  121. data/lib/ffakerer/identification_es_co.rb +40 -0
  122. data/lib/ffakerer/internet.rb +72 -0
  123. data/lib/ffakerer/internet_se.rb +106 -0
  124. data/lib/ffakerer/job.rb +12 -0
  125. data/lib/ffakerer/job_fr.rb +14 -0
  126. data/lib/ffakerer/lorem.rb +44 -0
  127. data/lib/ffakerer/lorem_ar.rb +40 -0
  128. data/lib/ffakerer/lorem_cn.rb +41 -0
  129. data/lib/ffakerer/lorem_fr.rb +39 -0
  130. data/lib/ffakerer/movie.rb +63 -0
  131. data/lib/ffakerer/name.rb +35 -0
  132. data/lib/ffakerer/name_cn.rb +24 -0
  133. data/lib/ffakerer/name_cs.rb +90 -0
  134. data/lib/ffakerer/name_da.rb +68 -0
  135. data/lib/ffakerer/name_de.rb +33 -0
  136. data/lib/ffakerer/name_fr.rb +37 -0
  137. data/lib/ffakerer/name_ga.rb +47 -0
  138. data/lib/ffakerer/name_ja.rb +24 -0
  139. data/lib/ffakerer/name_kr.rb +24 -0
  140. data/lib/ffakerer/name_mx.rb +103 -0
  141. data/lib/ffakerer/name_ph.rb +29 -0
  142. data/lib/ffakerer/name_ru.rb +92 -0
  143. data/lib/ffakerer/name_se.rb +47 -0
  144. data/lib/ffakerer/name_sn.rb +65 -0
  145. data/lib/ffakerer/name_vn.rb +28 -0
  146. data/lib/ffakerer/phone_number.rb +34 -0
  147. data/lib/ffakerer/phone_number_au.rb +77 -0
  148. data/lib/ffakerer/phone_number_da.rb +45 -0
  149. data/lib/ffakerer/phone_number_de.rb +51 -0
  150. data/lib/ffakerer/phone_number_mx.rb +58 -0
  151. data/lib/ffakerer/phone_number_se.rb +90 -0
  152. data/lib/ffakerer/phone_number_sg.rb +81 -0
  153. data/lib/ffakerer/phone_number_sn.rb +78 -0
  154. data/lib/ffakerer/product.rb +45 -0
  155. data/lib/ffakerer/skill.rb +24 -0
  156. data/lib/ffakerer/ssn.rb +17 -0
  157. data/lib/ffakerer/ssn_se.rb +109 -0
  158. data/lib/ffakerer/string.rb +92 -0
  159. data/lib/ffakerer/time.rb +30 -0
  160. data/lib/ffakerer/unit.rb +50 -0
  161. data/lib/ffakerer/unit_english.rb +114 -0
  162. data/lib/ffakerer/unit_metric.rb +105 -0
  163. data/lib/ffakerer/utils/array_utils.rb +44 -0
  164. data/lib/ffakerer/utils/module_utils.rb +29 -0
  165. data/lib/ffakerer/venue.rb +12 -0
  166. data/scripts/benchmark.rb +21 -0
  167. data/scripts/profile.sh +2 -0
  168. data/scripts/profiling.rb +7 -0
  169. data/test/helper.rb +2 -0
  170. data/test/test_address.rb +73 -0
  171. data/test/test_address_au.rb +58 -0
  172. data/test/test_address_ca.rb +17 -0
  173. data/test/test_address_de.rb +25 -0
  174. data/test/test_address_mx.rb +26 -0
  175. data/test/test_address_se.rb +36 -0
  176. data/test/test_address_sn.rb +25 -0
  177. data/test/test_address_uk.rb +17 -0
  178. data/test/test_address_us.rb +25 -0
  179. data/test/test_array_utils.rb +52 -0
  180. data/test/test_bacon_ipsum.rb +30 -0
  181. data/test/test_company.rb +23 -0
  182. data/test/test_company_se.rb +14 -0
  183. data/test/test_conference.rb +10 -0
  184. data/test/test_dizzle_ipsum.rb +30 -0
  185. data/test/test_education.rb +34 -0
  186. data/test/test_faker.rb +30 -0
  187. data/test/test_faker_internet.rb +60 -0
  188. data/test/test_faker_internet_se.rb +67 -0
  189. data/test/test_faker_job.rb +14 -0
  190. data/test/test_faker_job_fr.rb +22 -0
  191. data/test/test_faker_name.rb +21 -0
  192. data/test/test_faker_name_cn.rb +13 -0
  193. data/test/test_faker_name_cs.rb +65 -0
  194. data/test/test_faker_name_de.rb +21 -0
  195. data/test/test_faker_name_fr.rb +48 -0
  196. data/test/test_faker_name_ga.rb +56 -0
  197. data/test/test_faker_name_ja.rb +13 -0
  198. data/test/test_faker_name_kr.rb +13 -0
  199. data/test/test_faker_name_mx.rb +180 -0
  200. data/test/test_faker_name_ph.rb +17 -0
  201. data/test/test_faker_name_ru.rb +80 -0
  202. data/test/test_faker_name_se.rb +38 -0
  203. data/test/test_faker_name_sn.rb +98 -0
  204. data/test/test_geolocation.rb +34 -0
  205. data/test/test_healthcare_ipsum.rb +27 -0
  206. data/test/test_hipster_ipsum.rb +29 -0
  207. data/test/test_html_ipsum.rb +91 -0
  208. data/test/test_identification.rb +27 -0
  209. data/test/test_identification_co.rb +38 -0
  210. data/test/test_identification_es.rb +13 -0
  211. data/test/test_identification_es_cl.rb +13 -0
  212. data/test/test_lorem.rb +44 -0
  213. data/test/test_lorem_ar.rb +37 -0
  214. data/test/test_lorem_cn.rb +47 -0
  215. data/test/test_lorem_fr.rb +37 -0
  216. data/test/test_module_utils.rb +14 -0
  217. data/test/test_movie.rb +9 -0
  218. data/test/test_phone_number.rb +13 -0
  219. data/test/test_phone_number_au.rb +50 -0
  220. data/test/test_phone_number_de.rb +46 -0
  221. data/test/test_phone_number_mx.rb +43 -0
  222. data/test/test_phone_number_se.rb +60 -0
  223. data/test/test_phone_number_sg.rb +44 -0
  224. data/test/test_phone_number_sn.rb +34 -0
  225. data/test/test_skill.rb +24 -0
  226. data/test/test_ssn.rb +11 -0
  227. data/test/test_ssn_se.rb +43 -0
  228. data/test/test_string.rb +71 -0
  229. data/test/test_time.rb +19 -0
  230. data/test/test_units.rb +32 -0
  231. data/test/test_units_english.rb +62 -0
  232. data/test/test_units_metric.rb +61 -0
  233. data/test/test_venue.rb +9 -0
  234. metadata +372 -0
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ module Faker
4
+ module Product
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def brand
9
+ case rand(12)
10
+ when (0..4) then B1.rand + B2.rand
11
+ when (5..10) then "#{START.rand}#{VOWELS.rand}#{SUFFIX.rand}#{ADDON.rand if rand(2)==0}".capitalize
12
+ when 11 then "#{letters(2..3)}"
13
+ end
14
+ end
15
+
16
+ def product_name
17
+ case rand(2)
18
+ when 0 then "#{ADJ.rand} #{NOUN.rand}"
19
+ when 1 then "#{[ADJ.rand, ADJ.rand].uniq.join(" ")} #{NOUN.rand}"
20
+ end
21
+ end
22
+
23
+ def product
24
+ "#{brand} #{product_name}"
25
+ end
26
+
27
+ def letters(n)
28
+ max = n.is_a?(Range) ? n.to_a.shuffle.first : n
29
+ (0...max).map { LETTERS.rand.upcase }.join
30
+ end
31
+
32
+ def model
33
+ case rand(2)
34
+ when 0 then "#{LETTERS.rand.upcase}#{rand(90)}" # N90
35
+ when 1 then "#{letters(1..rand(1..2))}-#{rand(9900)}" # N-9400
36
+ end
37
+ end
38
+
39
+ B2 = k %w(nix cell sync func balt sche pod)
40
+ VOWELS = k %w(a e i o u ou ie y io)
41
+ START = k %w(tr br p ph)
42
+ SUFFIX = k %w(ck ns nce nt st ne re ffe ph)
43
+ ADDON = k %w(wood forge func)
44
+ end
45
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ module Faker
4
+ module Skill
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def tech_skill
9
+ TECH_SKILLS.rand
10
+ end
11
+
12
+ def tech_skills(num = 3)
13
+ TECH_SKILLS.random_pick(num)
14
+ end
15
+
16
+ def specialty
17
+ "%s %s" % [SPECIALTY_START.rand, SPECIALTY_END.rand]
18
+ end
19
+
20
+ def specialties(num = 3)
21
+ (1..num).map { specialty }
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ module Faker
4
+ module SSN
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ # The Social Security number is a nine-digit number in the format
9
+ # "AAA-GG-SSSS". More info here:
10
+ #
11
+ # http://en.wikipedia.org/wiki/Social_Security_number
12
+ #
13
+ def ssn
14
+ Faker.numerify('###-##-####')
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,109 @@
1
+ # encoding: utf-8
2
+
3
+ require 'date'
4
+
5
+ module Faker
6
+
7
+ # The Social Security number is a 12-digit number in the format:
8
+ # "YYYYDDMM-XXXX'
9
+ #
10
+ # http://sv.wikipedia.org/wiki/Personnummer_i_Sverige
11
+ #
12
+ # The 4 last digits (XXXX) are generated based on what region the person are
13
+ # born # in, the gender and the last one is a check digit using the luhn
14
+ # algorithm.
15
+ #
16
+ # http://en.wikipedia.org/wiki/Luhn_algorithm
17
+ #
18
+ # Usage:
19
+ # ssn(from: Time.local(1980, 2, 28),
20
+ # to: Time.local(2000, 2, 28),
21
+ # gender: :male)
22
+ #
23
+ module SSNSE
24
+ extend ModuleUtils
25
+ extend self
26
+
27
+ def ssn(opts = {})
28
+ from = opts[:from] || ::Time.local(1940, 1, 1)
29
+ to = opts[:to] || ::Time.now
30
+ gender = (opts[:gender] || GENDERS.rand).to_s
31
+
32
+ raise_error_on_bad_arguments(from, to, gender)
33
+
34
+ generate_ssn(from, to, gender)
35
+ end
36
+
37
+ private
38
+
39
+ def generate_ssn(from, to, gender)
40
+ birth_date = random_birth_time_between(from, to)
41
+ birth_date_str = birth_date.strftime("%Y%m%d") # "19800228"
42
+ region = get_random_region_for(gender) # "413"
43
+ ssn_without_check_digit = birth_date_str + region # "19800228413"
44
+ check_digit = luhn_check(ssn_without_check_digit) # "9"
45
+ ssn_without_check_digit + check_digit # "198002284139"
46
+ end
47
+
48
+ def raise_error_on_bad_arguments(from, to, gender)
49
+ raise ArgumentError, "Invalid from argument: from" unless to.is_a? ::Time
50
+ raise ArgumentError, "Invalid from argument: from" unless from.is_a? ::Time
51
+ raise ArgumentError, "Invalid argument: from > to" if from > to
52
+ raise ArgumentError, "Invalid argument: gender" unless GENDERS.include?(gender.to_s)
53
+ end
54
+
55
+ GENDERS = k ["female", "male"]
56
+
57
+ def random_birth_time_between(from=::Time.local(1940, 1, 1), to=::Time.now)
58
+ ::Time.at(from + rand * (to.to_f - from.to_f))
59
+ end
60
+
61
+ def get_random_region_for(gender)
62
+ region_number = case gender
63
+ when "female" then get_random_region_even
64
+ when "male" then get_random_region_odd
65
+ end
66
+ three_character_string(region_number)
67
+ end
68
+
69
+ def get_random_region_even
70
+ rand(499) * 2
71
+ end
72
+
73
+ def get_random_region_odd
74
+ rand(499) * 2 + 1
75
+ end
76
+
77
+ def three_character_string(number)
78
+ "%03d" % number
79
+ end
80
+
81
+ # http://en.wikipedia.org/wiki/Luhn_algorithm
82
+ def luhn_check(number)
83
+ multiplications = []
84
+
85
+ number.split(//).each_with_index do |digit, i|
86
+ if i % 2 == 0
87
+ multiplications << digit.to_i * 2
88
+ else
89
+ multiplications << digit.to_i
90
+ end
91
+ end
92
+
93
+ sum = 0
94
+ multiplications.each do |num|
95
+ num.to_s.each_byte do |character|
96
+ sum += character.chr.to_i
97
+ end
98
+ end
99
+
100
+ if sum % 10 == 0
101
+ control_digit = 0
102
+ else
103
+ control_digit = (sum / 10 + 1) * 10 - sum
104
+ end
105
+
106
+ control_digit.to_s
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,92 @@
1
+ # encoding: utf-8
2
+
3
+ module Faker
4
+ module String
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ BACKSLASH = '\\'
9
+
10
+ LOWERS = k(('a'..'z').to_a)
11
+ UPPERS = k(('A'..'Z').to_a)
12
+ LETTERS = k(LOWERS + UPPERS)
13
+ NUMBERS = k(('0'..'9').to_a)
14
+ WORD_CHARS = k(LETTERS + NUMBERS + ['_'])
15
+ SPACES = k([" ", "\t"])
16
+ ESCAPEABLE_CHARS = '\\', '/', '.', '(', ')', '[', ']', '{', '}'
17
+
18
+ def from_regexp(exp)
19
+ result = ''
20
+ @last_token = nil
21
+
22
+ # Drop surrounding /'s and split into characters
23
+ tokens = exp.inspect[1...-1].split(//)
24
+ until tokens.empty?
25
+ result << process_token(tokens)
26
+ end
27
+
28
+ result
29
+ end
30
+
31
+ private
32
+
33
+ def join_escapes(tokens)
34
+ result = []
35
+ while tokens.any?
36
+ token = tokens.shift
37
+ token << tokens.shift if token == BACKSLASH
38
+ result << token
39
+ end
40
+ result
41
+ end
42
+
43
+ def process_token(tokens)
44
+ return '' if tokens.empty?
45
+
46
+ token = tokens.shift
47
+
48
+ case token
49
+ when '?' then
50
+ # TODO: Let ? generate nothong
51
+ return '' # We already printed its target
52
+ when '+' then
53
+ tokens.unshift(token) if rand(2) == 1 # Leave the `+` on to run again
54
+ return process_token(@last_token) # Run the last one at least once
55
+ when '*' then
56
+ tokens.unshift(token) if rand(2) == 1 # Leave the `*` on to run again
57
+ return '' if rand(2) == 1 # Or maybe do nothing
58
+ return process_token(@last_token) # Else run the last one again
59
+ end
60
+
61
+ generate_token token, tokens
62
+ end
63
+
64
+ def generate_token(token, tokens)
65
+ case token
66
+ when /\w/ then
67
+ @last_token = [token]
68
+ token
69
+ when BACKSLASH then
70
+ token = tokens.shift
71
+ @last_token = ['\\', token]
72
+ special(token)
73
+ when '[' then
74
+ set = []
75
+ while (ch = tokens.shift) != ']'
76
+ set << ch
77
+ end
78
+ @last_token = ['['] + set + [']']
79
+ process_token([ArrayUtils.rand(join_escapes(set))])
80
+ end
81
+ end
82
+
83
+ def special(token)
84
+ case token
85
+ when 'w' then WORD_CHARS.rand
86
+ when 'd' then NUMBERS.rand
87
+ when 's' then SPACES.rand
88
+ when *ESCAPEABLE_CHARS then token
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ module Faker
4
+ module Time
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def month
9
+ MONTHS.rand
10
+ end
11
+
12
+ def date(params={})
13
+ years_back = params[:year_range] || 5
14
+ latest_year = params [:year_latest] || 0
15
+ year = (rand * (years_back)).ceil + (::Time.now.year - latest_year - years_back)
16
+ month = (rand * 12).ceil
17
+ day = (rand * 31).ceil
18
+ series = [date = ::Time.local(year, month, day)]
19
+ if params[:series]
20
+ params[:series].each do |some_time_after|
21
+ series << series.last + (rand * some_time_after).ceil
22
+ end
23
+ return series
24
+ end
25
+ date.strftime "%Y-%m-%d %T %z"
26
+ end
27
+
28
+ MONTHS = k %w(January February March April May June July August September October November December)
29
+ end
30
+ end
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+
3
+ require 'ostruct'
4
+
5
+ module Faker
6
+ module Unit
7
+ extend ModuleUtils
8
+ extend self
9
+
10
+ def time_name
11
+ time.name
12
+ end
13
+
14
+ def time_abbr
15
+ time.abbreviation
16
+ end
17
+
18
+ def temperature_name
19
+ temperature.name
20
+ end
21
+
22
+ def temperature_abbr
23
+ temperature.abbreviation
24
+ end
25
+
26
+ private
27
+
28
+ def time
29
+ OpenStruct.new TIME_UNITS.rand
30
+ end
31
+
32
+ def temperature
33
+ OpenStruct.new TEMPERATURE_UNITS.rand
34
+ end
35
+
36
+ TIME_UNITS = k [
37
+ {:name => 'Years', :abbreviation => 'yr'},
38
+ {:name => 'Days', :abbreviation => 'd'},
39
+ {:name => 'Hours', :abbreviation => 'Minutes'},
40
+ {:name => 'Seconds', :abbreviation => 's'},
41
+ {:name => 'Milliseconds', :abbreviation => 'msec'}
42
+ ]
43
+
44
+ TEMPERATURE_UNITS = k [
45
+ {:name => 'Kelvin', :abbreviation => 'K'},
46
+ {:name => 'Celsius', :abbreviation => 'C'},
47
+ {:name => 'Fahrenheit', :abbreviation => 'F'}
48
+ ]
49
+ end
50
+ end
@@ -0,0 +1,114 @@
1
+ # encoding: utf-8
2
+
3
+ require 'ffakerer/unit'
4
+ require 'ostruct'
5
+
6
+ module Faker
7
+ module UnitEnglish
8
+ include Faker::Unit
9
+
10
+ extend ModuleUtils
11
+ extend self
12
+
13
+ def mass_name
14
+ mass.name
15
+ end
16
+
17
+ def mass_abbr
18
+ mass.abbreviation
19
+ end
20
+
21
+ def length_name
22
+ length.name
23
+ end
24
+
25
+ def length_abbr
26
+ length.abbreviation
27
+ end
28
+
29
+ def liquid_name
30
+ liquid.name
31
+ end
32
+
33
+ def liquid_abbr
34
+ liquid.abbreviation
35
+ end
36
+
37
+ def volume_name
38
+ volume.name
39
+ end
40
+
41
+ def volume_abbr
42
+ volume.abbreviation
43
+ end
44
+
45
+ def area_name
46
+ area.name
47
+ end
48
+
49
+ def area_abbr
50
+ area.abbreviation
51
+ end
52
+
53
+ private
54
+
55
+ def length
56
+ OpenStruct.new LENGTH_UNITS.rand
57
+ end
58
+
59
+ def mass
60
+ OpenStruct.new MASS_UNITS.rand
61
+ end
62
+
63
+ def liquid
64
+ OpenStruct.new LIQUID_UNITS.rand
65
+ end
66
+
67
+ def volume
68
+ OpenStruct.new VOLUME_UNITS.rand
69
+ end
70
+
71
+ def area
72
+ OpenStruct.new AREA_UNITS.rand
73
+ end
74
+
75
+ LENGTH_UNITS = k [
76
+ { :name =>"inch", :abbreviation => "in"},
77
+ { :name =>"foot", :abbreviation => "ft"},
78
+ { :name =>"yard", :abbreviation => "yd"},
79
+ { :name =>"furlong", :abbreviation => "fur"},
80
+ { :name =>"mile", :abbreviation => "m"}
81
+ ]
82
+
83
+ MASS_UNITS = k [
84
+ { :name => "grains", :abbreviation => "gr"},
85
+ { :name => "ounces", :abbreviation => "oz"},
86
+ { :name => "pounds", :abbreviation => "lb" },
87
+ { :name => "hundredweight", :abbreviation => "cwt"},
88
+ { :name => "ton", :abbreviation => "t" }
89
+ ]
90
+
91
+ LIQUID_UNITS = k [
92
+ { :name => "fluid ounce", :abbreviation => "fl oz"},
93
+ { :name => "gill", :abbreviation => "gi"},
94
+ { :name => "pint", :abbreviation => "pt"},
95
+ { :name => "quart", :abbreviation => "qt"}
96
+ ]
97
+
98
+ VOLUME_UNITS = k [
99
+ { :name =>"cubic inch", :abbreviation => "CI"},
100
+ { :name =>"cubic foot", :abbreviation => "CFT"},
101
+ { :name =>"cubic yard", :abbreviation => "CY"}
102
+ ]
103
+
104
+ AREA_UNITS = k [
105
+ { :name =>"square inch", :abbreviation => "sq. in"},
106
+ { :name =>"square foot", :abbreviation => "sq ft"},
107
+ { :name =>"square yard", :abbreviation => "sq yd"},
108
+ { :name =>"acre", :abbreviation => "ac"},
109
+ { :name =>"section", :abbreviation => "s"},
110
+ { :name =>"square mile", :abbreviation => "sq mi"},
111
+ { :name =>"township", :abbreviation => "Twp"}
112
+ ]
113
+ end
114
+ end