garcun 0.0.2

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 (139) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +17 -0
  3. data/.gitignore +197 -0
  4. data/.rspec +2 -0
  5. data/Gemfile +22 -0
  6. data/LICENSE +201 -0
  7. data/README.md +521 -0
  8. data/Rakefile +47 -0
  9. data/garcun.gemspec +83 -0
  10. data/lib/garcon.rb +290 -0
  11. data/lib/garcon/chef/chef_helpers.rb +343 -0
  12. data/lib/garcon/chef/coerce/coercer.rb +134 -0
  13. data/lib/garcon/chef/coerce/coercions/boolean_definitions.rb +34 -0
  14. data/lib/garcon/chef/coerce/coercions/date_definitions.rb +32 -0
  15. data/lib/garcon/chef/coerce/coercions/date_time_definitions.rb +32 -0
  16. data/lib/garcon/chef/coerce/coercions/fixnum_definitions.rb +34 -0
  17. data/lib/garcon/chef/coerce/coercions/float_definitions.rb +32 -0
  18. data/lib/garcon/chef/coerce/coercions/hash_definitions.rb +29 -0
  19. data/lib/garcon/chef/coerce/coercions/integer_definitions.rb +31 -0
  20. data/lib/garcon/chef/coerce/coercions/string_definitions.rb +45 -0
  21. data/lib/garcon/chef/coerce/coercions/time_definitions.rb +32 -0
  22. data/lib/garcon/chef/handler/devreporter.rb +127 -0
  23. data/lib/garcon/chef/log.rb +64 -0
  24. data/lib/garcon/chef/node.rb +100 -0
  25. data/lib/garcon/chef/provider/civilize.rb +209 -0
  26. data/lib/garcon/chef/provider/development.rb +159 -0
  27. data/lib/garcon/chef/provider/download.rb +420 -0
  28. data/lib/garcon/chef/provider/house_keeping.rb +265 -0
  29. data/lib/garcon/chef/provider/node_cache.rb +31 -0
  30. data/lib/garcon/chef/provider/partial.rb +183 -0
  31. data/lib/garcon/chef/provider/recovery.rb +80 -0
  32. data/lib/garcon/chef/provider/zip_file.rb +271 -0
  33. data/lib/garcon/chef/resource/attribute.rb +52 -0
  34. data/lib/garcon/chef/resource/base_dsl.rb +174 -0
  35. data/lib/garcon/chef/resource/blender.rb +140 -0
  36. data/lib/garcon/chef/resource/lazy_eval.rb +66 -0
  37. data/lib/garcon/chef/resource/resource_name.rb +109 -0
  38. data/lib/garcon/chef/secret_bag.rb +204 -0
  39. data/lib/garcon/chef/validations.rb +76 -0
  40. data/lib/garcon/chef_inclusions.rb +151 -0
  41. data/lib/garcon/configuration.rb +138 -0
  42. data/lib/garcon/core_ext.rb +39 -0
  43. data/lib/garcon/core_ext/array.rb +27 -0
  44. data/lib/garcon/core_ext/binding.rb +64 -0
  45. data/lib/garcon/core_ext/boolean.rb +66 -0
  46. data/lib/garcon/core_ext/duration.rb +271 -0
  47. data/lib/garcon/core_ext/enumerable.rb +34 -0
  48. data/lib/garcon/core_ext/file.rb +127 -0
  49. data/lib/garcon/core_ext/filetest.rb +62 -0
  50. data/lib/garcon/core_ext/hash.rb +279 -0
  51. data/lib/garcon/core_ext/kernel.rb +159 -0
  52. data/lib/garcon/core_ext/lazy.rb +222 -0
  53. data/lib/garcon/core_ext/method_access.rb +243 -0
  54. data/lib/garcon/core_ext/module.rb +92 -0
  55. data/lib/garcon/core_ext/nil.rb +53 -0
  56. data/lib/garcon/core_ext/numeric.rb +44 -0
  57. data/lib/garcon/core_ext/object.rb +342 -0
  58. data/lib/garcon/core_ext/pathname.rb +152 -0
  59. data/lib/garcon/core_ext/process.rb +41 -0
  60. data/lib/garcon/core_ext/random.rb +497 -0
  61. data/lib/garcon/core_ext/string.rb +312 -0
  62. data/lib/garcon/core_ext/struct.rb +49 -0
  63. data/lib/garcon/core_ext/symbol.rb +170 -0
  64. data/lib/garcon/core_ext/time.rb +234 -0
  65. data/lib/garcon/exceptions.rb +101 -0
  66. data/lib/garcon/inflections.rb +237 -0
  67. data/lib/garcon/inflections/defaults.rb +79 -0
  68. data/lib/garcon/inflections/inflections.rb +182 -0
  69. data/lib/garcon/inflections/rules_collection.rb +37 -0
  70. data/lib/garcon/secret.rb +271 -0
  71. data/lib/garcon/stash/format.rb +114 -0
  72. data/lib/garcon/stash/journal.rb +226 -0
  73. data/lib/garcon/stash/queue.rb +83 -0
  74. data/lib/garcon/stash/serializer.rb +86 -0
  75. data/lib/garcon/stash/store.rb +435 -0
  76. data/lib/garcon/task.rb +31 -0
  77. data/lib/garcon/task/atomic.rb +151 -0
  78. data/lib/garcon/task/atomic_boolean.rb +127 -0
  79. data/lib/garcon/task/condition.rb +99 -0
  80. data/lib/garcon/task/copy_on_notify_observer_set.rb +154 -0
  81. data/lib/garcon/task/copy_on_write_observer_set.rb +153 -0
  82. data/lib/garcon/task/count_down_latch.rb +92 -0
  83. data/lib/garcon/task/delay.rb +196 -0
  84. data/lib/garcon/task/dereferenceable.rb +144 -0
  85. data/lib/garcon/task/event.rb +119 -0
  86. data/lib/garcon/task/executor.rb +275 -0
  87. data/lib/garcon/task/executor_options.rb +59 -0
  88. data/lib/garcon/task/future.rb +107 -0
  89. data/lib/garcon/task/immediate_executor.rb +84 -0
  90. data/lib/garcon/task/ivar.rb +171 -0
  91. data/lib/garcon/task/lazy_reference.rb +74 -0
  92. data/lib/garcon/task/monotonic_time.rb +69 -0
  93. data/lib/garcon/task/obligation.rb +256 -0
  94. data/lib/garcon/task/observable.rb +101 -0
  95. data/lib/garcon/task/priority_queue.rb +234 -0
  96. data/lib/garcon/task/processor_count.rb +128 -0
  97. data/lib/garcon/task/read_write_lock.rb +304 -0
  98. data/lib/garcon/task/safe_task_executor.rb +58 -0
  99. data/lib/garcon/task/single_thread_executor.rb +97 -0
  100. data/lib/garcon/task/thread_pool/cached.rb +71 -0
  101. data/lib/garcon/task/thread_pool/executor.rb +294 -0
  102. data/lib/garcon/task/thread_pool/fixed.rb +61 -0
  103. data/lib/garcon/task/thread_pool/worker.rb +90 -0
  104. data/lib/garcon/task/timer.rb +44 -0
  105. data/lib/garcon/task/timer_set.rb +194 -0
  106. data/lib/garcon/task/timer_task.rb +377 -0
  107. data/lib/garcon/task/waitable_list.rb +58 -0
  108. data/lib/garcon/utility/ansi.rb +199 -0
  109. data/lib/garcon/utility/at_random.rb +77 -0
  110. data/lib/garcon/utility/crypto.rb +292 -0
  111. data/lib/garcon/utility/equalizer.rb +146 -0
  112. data/lib/garcon/utility/faker/extensions/array.rb +22 -0
  113. data/lib/garcon/utility/faker/extensions/symbol.rb +9 -0
  114. data/lib/garcon/utility/faker/faker.rb +164 -0
  115. data/lib/garcon/utility/faker/faker/company.rb +17 -0
  116. data/lib/garcon/utility/faker/faker/hacker.rb +30 -0
  117. data/lib/garcon/utility/faker/faker/version.rb +3 -0
  118. data/lib/garcon/utility/faker/locales/en-US.yml +83 -0
  119. data/lib/garcon/utility/faker/locales/en.yml +21 -0
  120. data/lib/garcon/utility/file_helper.rb +170 -0
  121. data/lib/garcon/utility/hookers.rb +178 -0
  122. data/lib/garcon/utility/interpolation.rb +90 -0
  123. data/lib/garcon/utility/memstash.rb +364 -0
  124. data/lib/garcon/utility/misc.rb +54 -0
  125. data/lib/garcon/utility/msg_from_god.rb +62 -0
  126. data/lib/garcon/utility/retry.rb +238 -0
  127. data/lib/garcon/utility/timeout.rb +58 -0
  128. data/lib/garcon/utility/uber/builder.rb +91 -0
  129. data/lib/garcon/utility/uber/callable.rb +7 -0
  130. data/lib/garcon/utility/uber/delegates.rb +13 -0
  131. data/lib/garcon/utility/uber/inheritable_attr.rb +37 -0
  132. data/lib/garcon/utility/uber/options.rb +101 -0
  133. data/lib/garcon/utility/uber/uber_version.rb +3 -0
  134. data/lib/garcon/utility/uber/version.rb +33 -0
  135. data/lib/garcon/utility/url_helper.rb +100 -0
  136. data/lib/garcon/utils.rb +29 -0
  137. data/lib/garcon/version.rb +62 -0
  138. data/lib/garcun.rb +24 -0
  139. metadata +680 -0
@@ -0,0 +1,146 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Author: Stefano Harding <riddopic@gmail.com>
4
+ # License: Apache License, Version 2.0
5
+ # Copyright: (C) 2014-2015 Stefano Harding
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ module Garcon
21
+ # Define equality, equivalence and inspection methods.
22
+ #
23
+ class Equalizer
24
+
25
+ # Initialize an Equalizer with the given keys.
26
+ #
27
+ # Will use the keys with which it is initialized to define #cmp?,
28
+ # #hash, and #inspect
29
+ #
30
+ # @param [String] name
31
+ #
32
+ # @param [Array<Symbol>] keys
33
+ #
34
+ # @return [undefined]
35
+ #
36
+ # @api private
37
+ def initialize(name, keys = [])
38
+ @name = name.dup.freeze
39
+ @keys = keys.dup
40
+ define_methods
41
+ include_comparison_methods
42
+ end
43
+
44
+ # Append a key and compile the equality methods.
45
+ #
46
+ # @return [Equalizer] self
47
+ #
48
+ # @api private
49
+ def <<(key)
50
+ @keys << key
51
+ self
52
+ end
53
+
54
+ private # P R O P R I E T À P R I V A T A Vietato L'accesso
55
+
56
+ # Define the equalizer methods based on #keys.
57
+ #
58
+ # @return [undefined]
59
+ #
60
+ # @api private
61
+ def define_methods
62
+ define_cmp_method
63
+ define_hash_method
64
+ define_inspect_method
65
+ end
66
+
67
+ # Define an #cmp? method based on the instance's values identified by #keys.
68
+ #
69
+ # @return [undefined]
70
+ #
71
+ # @api private
72
+ def define_cmp_method
73
+ keys = @keys
74
+ define_method(:cmp?) do |comparator, other|
75
+ keys.all? { |key| send(key).send(comparator, other.send(key)) }
76
+ end
77
+ end
78
+
79
+ # Define a #hash method based on the instance's values identified by #keys.
80
+ #
81
+ # @return [undefined]
82
+ #
83
+ # @api private
84
+ def define_hash_method
85
+ keys = @keys
86
+ define_method(:hash) do
87
+ keys.map { |key| send(key) }.push(self.class).hash
88
+ end
89
+ end
90
+
91
+ # Define an inspect method that reports the values of the instance's keys.
92
+ #
93
+ # @return [undefined]
94
+ #
95
+ # @api private
96
+ def define_inspect_method
97
+ name, keys = @name, @keys
98
+ define_method(:inspect) do
99
+ "#<#{name}#{keys.map { |key| " #{key}=#{send(key).inspect}" }.join}>"
100
+ end
101
+ end
102
+
103
+ # Include the #eql? and #== methods
104
+ #
105
+ # @return [undefined]
106
+ #
107
+ # @api private
108
+ def include_comparison_methods
109
+ module_eval { include Methods }
110
+ end
111
+
112
+ # The comparison methods
113
+ module Methods
114
+
115
+ # Compare the object with other object for equality.
116
+ #
117
+ # @example
118
+ # object.eql?(other) # => true or false
119
+ #
120
+ # @param [Object] other
121
+ # the other object to compare with
122
+ #
123
+ # @return [Boolean]
124
+ #
125
+ # @api public
126
+ def eql?(other)
127
+ instance_of?(other.class) && cmp?(__method__, other)
128
+ end
129
+
130
+ # Compare the object with other object for equivalency.
131
+ #
132
+ # @example
133
+ # object == other # => true or false
134
+ #
135
+ # @param [Object] other
136
+ # the other object to compare with
137
+ #
138
+ # @return [Boolean]
139
+ #
140
+ # @api public
141
+ def ==(other)
142
+ other.kind_of?(self.class) && cmp?(__method__, other)
143
+ end
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,22 @@
1
+ class Array
2
+ unless self.method_defined? :sample
3
+ def sample(n = nil)
4
+ #based on code from https://github.com/marcandre/backports
5
+ size = self.length
6
+ return self[Kernel.rand(size)] if n.nil?
7
+
8
+ n = n.to_int
9
+ raise ArgumentError, "negative array size" if n < 0
10
+
11
+ n = size if n > size
12
+
13
+ result = Array.new(self)
14
+ n.times do |i|
15
+ r = i + Kernel.rand(size - i)
16
+ result[i], result[r] = result[r], result[i]
17
+ end
18
+ result[n..size] = []
19
+ result
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ # For Ruby 1.8
2
+ unless :symbol.respond_to?(:downcase)
3
+ Symbol.class_eval do
4
+ def downcase
5
+ to_s.downcase.intern
6
+ end
7
+ end
8
+ end
9
+
@@ -0,0 +1,164 @@
1
+ # -*- coding: utf-8 -*-
2
+ mydir = File.expand_path(File.dirname(__FILE__))
3
+
4
+ begin
5
+ require 'psych'
6
+ rescue LoadError
7
+ end
8
+
9
+ require 'i18n'
10
+ require 'set' # Fixes a bug in i18n 0.6.11
11
+
12
+ if I18n.respond_to?(:enforce_available_locales=)
13
+ I18n.enforce_available_locales = true
14
+ end
15
+ I18n.load_path += Dir[File.join(mydir, 'locales', '*.yml')]
16
+
17
+
18
+ module Faker
19
+ class Config
20
+ @locale = nil
21
+
22
+ class << self
23
+ attr_writer :locale
24
+ def locale
25
+ @locale || I18n.locale
26
+ end
27
+ end
28
+ end
29
+
30
+ class Base
31
+ Numbers = Array(0..9)
32
+ ULetters = Array('A'..'Z')
33
+ Letters = ULetters + Array('a'..'z')
34
+
35
+ class << self
36
+ ## make sure numerify results doesn’t start with a zero
37
+ def numerify(number_string)
38
+ number_string.sub(/#/) { (rand(9)+1).to_s }.gsub(/#/) { rand(10).to_s }
39
+ end
40
+
41
+ def letterify(letter_string)
42
+ letter_string.gsub(/\?/) { ULetters.sample }
43
+ end
44
+
45
+ def bothify(string)
46
+ letterify(numerify(string))
47
+ end
48
+
49
+ # Given a regular expression, attempt to generate a string
50
+ # that would match it. This is a rather simple implementation,
51
+ # so don't be shocked if it blows up on you in a spectacular fashion.
52
+ #
53
+ # It does not handle ., *, unbounded ranges such as {1,},
54
+ # extensions such as (?=), character classes, some abbreviations
55
+ # for character classes, and nested parentheses.
56
+ #
57
+ # I told you it was simple. :) It's also probably dog-slow,
58
+ # so you shouldn't use it.
59
+ #
60
+ # It will take a regex like this:
61
+ #
62
+ # /^[A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}$/
63
+ #
64
+ # and generate a string like this:
65
+ #
66
+ # "U3V 3TP"
67
+ #
68
+ def regexify(re)
69
+ re = re.source if re.respond_to?(:source) # Handle either a Regexp or a String that looks like a Regexp
70
+ re.
71
+ gsub(/^\/?\^?/, '').gsub(/\$?\/?$/, ''). # Ditch the anchors
72
+ gsub(/\{(\d+)\}/, '{\1,\1}').gsub(/\?/, '{0,1}'). # All {2} become {2,2} and ? become {0,1}
73
+ gsub(/(\[[^\]]+\])\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample }. # [12]{1,2} becomes [12] or [12][12]
74
+ gsub(/(\([^\)]+\))\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample }. # (12|34){1,2} becomes (12|34) or (12|34)(12|34)
75
+ gsub(/(\\?.)\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample }. # A{1,2} becomes A or AA or \d{3} becomes \d\d\d
76
+ gsub(/\((.*?)\)/) {|match| match.gsub(/[\(\)]/, '').split('|').sample }. # (this|that) becomes 'this' or 'that'
77
+ gsub(/\[([^\]]+)\]/) {|match| match.gsub(/(\w\-\w)/) {|range| Array(Range.new(*range.split('-'))).sample } }. # All A-Z inside of [] become C (or X, or whatever)
78
+ gsub(/\[([^\]]+)\]/) {|match| $1.split('').sample }. # All [ABC] become B (or A or C)
79
+ gsub('\d') {|match| Numbers.sample }.
80
+ gsub('\w') {|match| Letters.sample }
81
+ end
82
+
83
+ # Helper for the common approach of grabbing a translation
84
+ # with an array of values and selecting one of them.
85
+ def fetch(key)
86
+ fetched = translate("faker.#{key}")
87
+ fetched = fetched.sample if fetched.respond_to?(:sample)
88
+ if fetched.match(/^\//) and fetched.match(/\/$/) # A regex
89
+ regexify(fetched)
90
+ else
91
+ fetched
92
+ end
93
+ end
94
+
95
+ # Load formatted strings from the locale, "parsing" them
96
+ # into method calls that can be used to generate a
97
+ # formatted translation: e.g., "#{first_name} #{last_name}".
98
+ def parse(key)
99
+ fetch(key).scan(/(\(?)#\{([A-Za-z]+\.)?([^\}]+)\}([^#]+)?/).map {|prefix, kls, meth, etc|
100
+ # If the token had a class Prefix (e.g., Name.first_name)
101
+ # grab the constant, otherwise use self
102
+ cls = kls ? Faker.const_get(kls.chop) : self
103
+
104
+ # If an optional leading parentheses is not present, prefix.should == "", otherwise prefix.should == "("
105
+ # In either case the information will be retained for reconstruction of the string.
106
+ text = prefix
107
+
108
+ # If the class has the method, call it, otherwise
109
+ # fetch the transation (i.e., faker.name.first_name)
110
+ text += cls.respond_to?(meth) ? cls.send(meth) : fetch("#{(kls || self).to_s.split('::').last.downcase}.#{meth.downcase}")
111
+
112
+ # And tack on spaces, commas, etc. left over in the string
113
+ text += etc.to_s
114
+ }.join
115
+ end
116
+
117
+ # Call I18n.translate with our configured locale if no
118
+ # locale is specified
119
+ def translate(*args)
120
+ opts = args.last.is_a?(Hash) ? args.pop : {}
121
+ opts[:locale] ||= Faker::Config.locale
122
+ opts[:raise] = true
123
+ I18n.translate(*(args.push(opts)))
124
+ rescue I18n::MissingTranslationData
125
+ # Super-simple fallback -- fallback to en if the
126
+ # translation was missing. If the translation isn't
127
+ # in en either, then it will raise again.
128
+ I18n.translate(*(args.push(opts.merge(:locale => :en))))
129
+ end
130
+
131
+ def flexible(key)
132
+ @flexible_key = key
133
+ end
134
+
135
+ # You can add whatever you want to the locale file, and it will get caught here.
136
+ # E.g., in your locale file, create a
137
+ # name:
138
+ # girls_name: ["Alice", "Cheryl", "Tatiana"]
139
+ # Then you can call Faker::Name.girls_name and it will act like #first_name
140
+ def method_missing(m, *args, &block)
141
+ super unless @flexible_key
142
+
143
+ # Use the alternate form of translate to get a nil rather than a "missing translation" string
144
+ if translation = translate(:faker)[@flexible_key][m]
145
+ translation.respond_to?(:sample) ? translation.sample : translation
146
+ else
147
+ super
148
+ end
149
+ end
150
+
151
+ # Generates a random value between the interval
152
+ def rand_in_range(from, to)
153
+ from, to = to, from if to < from
154
+ Random.new.rand(from..to)
155
+ end
156
+ end
157
+ end
158
+ end
159
+
160
+ require_relative 'faker/company'
161
+ require_relative 'faker/hacker'
162
+
163
+ require_relative 'extensions/array'
164
+ require_relative 'extensions/symbol'
@@ -0,0 +1,17 @@
1
+ module Faker
2
+ class Company < Base
3
+ flexible :company
4
+
5
+ class << self
6
+ # Generate a buzzword-laden catch phrase.
7
+ def catch_phrase
8
+ translate('faker.company.buzzwords').collect {|list| list.sample }.join(' ')
9
+ end
10
+
11
+ # When a straight answer won't do, BS to the rescue!
12
+ def bs
13
+ translate('faker.company.bs').collect {|list| list.sample }.join(' ')
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,30 @@
1
+
2
+ module Faker
3
+ class Hacker < Base
4
+ flexible :hacker
5
+
6
+ class << self
7
+ def say_something_smart
8
+ phrases.sample
9
+ end
10
+
11
+ def abbreviation; fetch('hacker.abbreviation'); end
12
+ def adjective; fetch('hacker.adjective'); end
13
+ def noun; fetch('hacker.noun'); end
14
+ def verb; fetch('hacker.verb'); end
15
+ def ingverb; fetch('hacker.ingverb'); end
16
+
17
+ def phrases
18
+ [ "If we #{verb} the #{noun}, we can get to the #{abbreviation} #{noun} through the #{adjective} #{abbreviation} #{noun}!",
19
+ "We need to #{verb} the #{adjective} #{abbreviation} #{noun}!",
20
+ "Try to #{verb} the #{abbreviation} #{noun}, maybe it will #{verb} the #{adjective} #{noun}!",
21
+ "You can't #{verb} the #{noun} without #{ingverb} the #{adjective} #{abbreviation} #{noun}!",
22
+ "Use the #{adjective} #{abbreviation} #{noun}, then you can #{verb} the #{adjective} #{noun}!",
23
+ "The #{abbreviation} #{noun} is down, #{verb} the #{adjective} #{noun} so we can #{verb} the #{abbreviation} #{noun}!",
24
+ "#{ingverb} the #{noun} won't do anything, we need to #{verb} the #{adjective} #{abbreviation} #{noun}!",
25
+ "I'll #{verb} the #{adjective} #{abbreviation} #{noun}, that should #{noun} the #{abbreviation} #{noun}!"
26
+ ]
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,3 @@
1
+ module Faker #:nodoc:
2
+ VERSION = "1.4.3"
3
+ end
@@ -0,0 +1,83 @@
1
+ en-US:
2
+ faker:
3
+ internet:
4
+ domain_suffix: [com, us, biz, info, name, net, org]
5
+ address:
6
+ default_country: [United States, United States of America, USA]
7
+ postcode_by_state:
8
+ AL: '350##'
9
+ AK: '995##'
10
+ AS: '967##'
11
+ AZ: '850##'
12
+ AR: '717##'
13
+ CA: '900##'
14
+ CO: '800##'
15
+ CT: '061##'
16
+ DC: '204##'
17
+ DE: '198##'
18
+ FL: '322##'
19
+ GA: '301##'
20
+ HI: '967##'
21
+ ID: '832##'
22
+ IL: '600##'
23
+ IN: '463##'
24
+ IA: '510##'
25
+ KS: '666##'
26
+ KY: '404##'
27
+ LA: '701##'
28
+ ME: '042##'
29
+ MD: '210##'
30
+ MA: '026##'
31
+ MI: '480##'
32
+ MN: '555##'
33
+ MS: '387##'
34
+ MO: '650##'
35
+ MT: '590##'
36
+ NE: '688##'
37
+ NV: '898##'
38
+ NH: '036##'
39
+ NJ: '076##'
40
+ NM: '880##'
41
+ NY: '122##'
42
+ NC: '288##'
43
+ ND: '586##'
44
+ OH: '444##'
45
+ OK: '730##'
46
+ OR: '979##'
47
+ PA: '186##'
48
+ RI: '029##'
49
+ SC: '299##'
50
+ SD: '577##'
51
+ TN: '383##'
52
+ TX: '798##'
53
+ UT: '847##'
54
+ VT: '050##'
55
+ VA: '222##'
56
+ WA: '990##'
57
+ WV: '247##'
58
+ WI: '549##'
59
+ WY: '831##'
60
+ phone_number:
61
+ area_code: ["201", "202", "203", "205", "206", "207", "208", "209", "210", "212", "213", "214", "215", "216", "217", "218", "219", "224", "225", "227", "228", "229", "231", "234", "239", "240", "248", "251", "252", "253", "254", "256", "260", "262", "267", "269", "270", "276", "281", "283", "301", "302", "303", "304", "305", "307", "308", "309", "310", "312", "313", "314", "315", "316", "317", "318", "319", "320", "321", "323", "330", "331", "334", "336", "337", "339", "347", "351", "352", "360", "361", "386", "401", "402", "404", "405", "406", "407", "408", "409", "410", "412", "413", "414", "415", "417", "419", "423", "424", "425", "434", "435", "440", "443", "445", "464", "469", "470", "475", "478", "479", "480", "484", "501", "502", "503", "504", "505", "507", "508", "509", "510", "512", "513", "515", "516", "517", "518", "520", "530", "540", "541", "551", "557", "559", "561", "562", "563", "564", "567", "570", "571", "573", "574", "580", "585", "586", "601", "602", "603", "605", "606", "607", "608", "609", "610", "612", "614", "615", "616", "617", "618", "619", "620", "623", "626", "630", "631", "636", "641", "646", "650", "651", "660", "661", "662", "667", "678", "682", "701", "702", "703", "704", "706", "707", "708", "712", "713", "714", "715", "716", "717", "718", "719", "720", "724", "727", "731", "732", "734", "737", "740", "754", "757", "760", "763", "765", "770", "772", "773", "774", "775", "781", "785", "786", "801", "802", "803", "804", "805", "806", "808", "810", "812", "813", "814", "815", "816", "817", "818", "828", "830", "831", "832", "835", "843", "845", "847", "848", "850", "856", "857", "858", "859", "860", "862", "863", "864", "865", "870", "872", "878", "901", "903", "904", "906", "907", "908", "909", "910", "912", "913", "914", "915", "916", "917", "918", "919", "920", "925", "928", "931", "936", "937", "940", "941", "947", "949", "952", "954", "956", "959", "970", "971", "972", "973", "975", "978", "979", "980", "984", "985", "989"]
62
+ exchange_code: ["201", "202", "203", "205", "206", "207", "208", "209", "210", "212", "213", "214", "215", "216", "217", "218", "219", "224", "225", "227", "228", "229", "231", "234", "239", "240", "248", "251", "252", "253", "254", "256", "260", "262", "267", "269", "270", "276", "281", "283", "301", "302", "303", "304", "305", "307", "308", "309", "310", "312", "313", "314", "315", "316", "317", "318", "319", "320", "321", "323", "330", "331", "334", "336", "337", "339", "347", "351", "352", "360", "361", "386", "401", "402", "404", "405", "406", "407", "408", "409", "410", "412", "413", "414", "415", "417", "419", "423", "424", "425", "434", "435", "440", "443", "445", "464", "469", "470", "475", "478", "479", "480", "484", "501", "502", "503", "504", "505", "507", "508", "509", "510", "512", "513", "515", "516", "517", "518", "520", "530", "540", "541", "551", "557", "559", "561", "562", "563", "564", "567", "570", "571", "573", "574", "580", "585", "586", "601", "602", "603", "605", "606", "607", "608", "609", "610", "612", "614", "615", "616", "617", "618", "619", "620", "623", "626", "630", "631", "636", "641", "646", "650", "651", "660", "661", "662", "667", "678", "682", "701", "702", "703", "704", "706", "707", "708", "712", "713", "714", "715", "716", "717", "718", "719", "720", "724", "727", "731", "732", "734", "737", "740", "754", "757", "760", "763", "765", "770", "772", "773", "774", "775", "781", "785", "786", "801", "802", "803", "804", "805", "806", "808", "810", "812", "813", "814", "815", "816", "817", "818", "828", "830", "831", "832", "835", "843", "845", "847", "848", "850", "856", "857", "858", "859", "860", "862", "863", "864", "865", "870", "872", "878", "901", "903", "904", "906", "907", "908", "909", "910", "912", "913", "914", "915", "916", "917", "918", "919", "920", "925", "928", "931", "936", "937", "940", "941", "947", "949", "952", "954", "956", "959", "970", "971", "972", "973", "975", "978", "979", "980", "984", "985", "989"]
63
+ formats:
64
+ - "#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number}"
65
+ - "(#{PhoneNumber.area_code}) #{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number}"
66
+ - "1-#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number}"
67
+ - "#{PhoneNumber.area_code}.#{PhoneNumber.exchange_code}.#{PhoneNumber.subscriber_number}"
68
+ - "#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number}"
69
+ - "(#{PhoneNumber.area_code}) #{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number}"
70
+ - "1-#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number}"
71
+ - "#{PhoneNumber.area_code}.#{PhoneNumber.exchange_code}.#{PhoneNumber.subscriber_number}"
72
+ - "#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
73
+ - "(#{PhoneNumber.area_code}) #{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
74
+ - "1-#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
75
+ - "#{PhoneNumber.area_code}.#{PhoneNumber.exchange_code}.#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
76
+ - "#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
77
+ - "(#{PhoneNumber.area_code}) #{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
78
+ - "1-#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
79
+ - "#{PhoneNumber.area_code}.#{PhoneNumber.exchange_code}.#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
80
+ - "#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
81
+ - "(#{PhoneNumber.area_code}) #{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
82
+ - "1-#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"
83
+ - "#{PhoneNumber.area_code}.#{PhoneNumber.exchange_code}.#{PhoneNumber.subscriber_number} x#{PhoneNumber.extension}"