faker 0.9.5 → 1.0.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/History.txt +27 -0
 - data/README.md +0 -13
 - data/lib/extensions/array.rb +5 -3
 - data/lib/faker.rb +55 -9
 - data/lib/faker/address.rb +14 -24
 - data/lib/faker/company.rb +6 -19
 - data/lib/faker/internet.rb +33 -10
 - data/lib/faker/lorem.rb +18 -11
 - data/lib/faker/name.rb +8 -2
 - data/lib/faker/phone_number.rb +9 -1
 - data/lib/faker/version.rb +1 -1
 - data/lib/locales/de-ch.yml +7 -0
 - data/lib/locales/de.yml +47 -0
 - data/lib/locales/en-au.yml +21 -0
 - data/lib/locales/en-bork.yml +4 -0
 - data/lib/locales/en-ca.yml +13 -0
 - data/lib/locales/en.yml +42 -22
 - data/lib/locales/nl.yml +65 -0
 - data/lib/locales/no-nb.yml +51 -0
 - data/lib/locales/pt-br.yml +56 -0
 - data/test/test_faker.rb +8 -2
 - data/test/test_faker_city.rb +45 -0
 - data/test/test_faker_internet.rb +9 -1
 - data/test/test_faker_lorem.rb +23 -0
 - data/test/test_faker_name.rb +1 -1
 - data/test/test_faker_street.rb +38 -0
 - data/test/test_flexible.rb +56 -0
 - data/test/test_helper.rb +1 -1
 - data/test/test_locale.rb +35 -0
 - metadata +24 -7
 
    
        data/History.txt
    CHANGED
    
    | 
         @@ -1,3 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            == 1.0.0 2011-09-05
         
     | 
| 
      
 2 
     | 
    
         
            +
            * 2 major enhancements
         
     | 
| 
      
 3 
     | 
    
         
            +
              * Moved all formats to locale files
         
     | 
| 
      
 4 
     | 
    
         
            +
              * Stopped interfering with I18n's global settings for fallbacks
         
     | 
| 
      
 5 
     | 
    
         
            +
            * 3 minor bug fixes:
         
     | 
| 
      
 6 
     | 
    
         
            +
              * Ruby 1.9.2 fixes [eMxyzptlk]
         
     | 
| 
      
 7 
     | 
    
         
            +
              * UTF8 fixes [maxmiliano]
         
     | 
| 
      
 8 
     | 
    
         
            +
              * Updated IPv4 generator to return valid addresses [Sylvain Desbureaux]
         
     | 
| 
      
 9 
     | 
    
         
            +
            * Many minor enhancements:
         
     | 
| 
      
 10 
     | 
    
         
            +
              * Added bork locale for bork-ified lorem [johnbentcope]
         
     | 
| 
      
 11 
     | 
    
         
            +
              * Added IPv6 address generator [jc00ke]
         
     | 
| 
      
 12 
     | 
    
         
            +
              * Removed deprecation warnings for Array#rand [chrismarshall]
         
     | 
| 
      
 13 
     | 
    
         
            +
              * Added German translation and I18n improvments [Matthias Kühnert]
         
     | 
| 
      
 14 
     | 
    
         
            +
              * Added Dutch translation [moretea]
         
     | 
| 
      
 15 
     | 
    
         
            +
              * Added Lat/Long generator [Andy Callaghan]
         
     | 
| 
      
 16 
     | 
    
         
            +
              * Added buzzword-laden title generator [supercleanse]
         
     | 
| 
      
 17 
     | 
    
         
            +
              * Added optional extended wordlist for lorem [chriskottom]
         
     | 
| 
      
 18 
     | 
    
         
            +
              * Updated German translation [Jan Schwenzien]
         
     | 
| 
      
 19 
     | 
    
         
            +
              * Locale improvements [suweller]
         
     | 
| 
      
 20 
     | 
    
         
            +
              * Added limit to lorem generator [darrenterhune]
         
     | 
| 
      
 21 
     | 
    
         
            +
              * Added Brazilian Portuguese translation [maxmiliano]
         
     | 
| 
      
 22 
     | 
    
         
            +
              * Added Australian translation [madeindata]
         
     | 
| 
      
 23 
     | 
    
         
            +
              * Added Canadian translation [igbanam]
         
     | 
| 
      
 24 
     | 
    
         
            +
              * Added Norwegian translation [kytrinyx]
         
     | 
| 
      
 25 
     | 
    
         
            +
              * Lots of translation-related cleanup [kytrinyx]
         
     | 
| 
      
 26 
     | 
    
         
            +
              
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
       1 
28 
     | 
    
         
             
            == 0.9.5 2011-01-27
         
     | 
| 
       2 
29 
     | 
    
         
             
            * 1 minor bug fix:
         
     | 
| 
       3 
30 
     | 
    
         
             
              * Fixed YAML [Aaron Patterson]
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -13,19 +13,6 @@ Usage 
     | 
|
| 
       13 
13 
     | 
    
         
             
            * Faker::Name.name => "Christophe Bartell"
         
     | 
| 
       14 
14 
     | 
    
         
             
            * Faker::Internet.email => "kirsten.greenholt@corkeryfisher.info"
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
            Usage with Rails
         
     | 
| 
       17 
     | 
    
         
            -
            ----------------
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            If you want to change your locale with Rails from the default of :en, change
         
     | 
| 
       20 
     | 
    
         
            -
            config/application.rb, setting config.i18n.locale to whatever locale you
         
     | 
| 
       21 
     | 
    
         
            -
            want.  Change locale rather than default_locale (as suggested by the comments
         
     | 
| 
       22 
     | 
    
         
            -
            in that file) so that I18n's fallbacks will work properly and Faker can use
         
     | 
| 
       23 
     | 
    
         
            -
            the formats and data in en.yml (if there is no Faker localization for your
         
     | 
| 
       24 
     | 
    
         
            -
            locale).  If you'd prefer to set default_locale rather than locale, then
         
     | 
| 
       25 
     | 
    
         
            -
            you'll also need to add config.i18n.fallbacks.defaults = [:en] to your
         
     | 
| 
       26 
     | 
    
         
            -
            configuration to make the fallbacks work for Faker.
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
16 
     | 
    
         
             
            Customization
         
     | 
| 
       30 
17 
     | 
    
         
             
            ------------
         
     | 
| 
       31 
18 
     | 
    
         
             
            Since you may want to make addresses and other types of data look different
         
     | 
    
        data/lib/extensions/array.rb
    CHANGED
    
    
    
        data/lib/faker.rb
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            mydir = File.dirname(__FILE__)
         
     | 
| 
      
 1 
     | 
    
         
            +
            mydir = File.expand_path(File.dirname(__FILE__))
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            begin
         
     | 
| 
       4 
4 
     | 
    
         
             
              require 'psych'
         
     | 
| 
         @@ -6,36 +6,82 @@ rescue LoadError 
     | 
|
| 
       6 
6 
     | 
    
         
             
            end
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            require 'i18n'
         
     | 
| 
       9 
     | 
    
         
            -
            I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
         
     | 
| 
       10 
9 
     | 
    
         
             
            I18n.load_path += Dir[File.join(mydir, 'locales', '*.yml')]
         
     | 
| 
      
 10 
     | 
    
         
            +
            I18n.reload!
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            module Faker
         
     | 
| 
       14 
14 
     | 
    
         
             
              class Config
         
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
                @locale = nil
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 18 
     | 
    
         
            +
                  attr_writer :locale
         
     | 
| 
      
 19 
     | 
    
         
            +
                  def locale
         
     | 
| 
      
 20 
     | 
    
         
            +
                    @locale || I18n.locale
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
       17 
22 
     | 
    
         
             
                end
         
     | 
| 
       18 
23 
     | 
    
         
             
              end
         
     | 
| 
       19 
24 
     | 
    
         | 
| 
       20 
25 
     | 
    
         
             
              class Base
         
     | 
| 
       21 
26 
     | 
    
         
             
                class << self
         
     | 
| 
      
 27 
     | 
    
         
            +
                  ## make sure numerify results doesn’t start with a zero
         
     | 
| 
       22 
28 
     | 
    
         
             
                  def numerify(number_string)
         
     | 
| 
       23 
     | 
    
         
            -
                    number_string.gsub(/#/) { rand(10).to_s }
         
     | 
| 
      
 29 
     | 
    
         
            +
                    number_string.sub(/#/) { (rand(9)+1).to_s }.gsub(/#/) { rand(10).to_s }
         
     | 
| 
       24 
30 
     | 
    
         
             
                  end
         
     | 
| 
       25 
31 
     | 
    
         | 
| 
       26 
32 
     | 
    
         
             
                  def letterify(letter_string)
         
     | 
| 
       27 
     | 
    
         
            -
                    letter_string.gsub(/\?/) { (' 
     | 
| 
      
 33 
     | 
    
         
            +
                    letter_string.gsub(/\?/) { ('A'..'Z').to_a.sample }
         
     | 
| 
       28 
34 
     | 
    
         
             
                  end
         
     | 
| 
       29 
35 
     | 
    
         | 
| 
       30 
36 
     | 
    
         
             
                  def bothify(string)
         
     | 
| 
       31 
37 
     | 
    
         
             
                    letterify(numerify(string))
         
     | 
| 
       32 
38 
     | 
    
         
             
                  end
         
     | 
| 
       33 
39 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
                  # Helper for the common approach of grabbing a translation 
     | 
| 
       35 
     | 
    
         
            -
                  # of values and selecting one of them
         
     | 
| 
      
 40 
     | 
    
         
            +
                  # Helper for the common approach of grabbing a translation
         
     | 
| 
      
 41 
     | 
    
         
            +
                  # with an array of values and selecting one of them.
         
     | 
| 
       36 
42 
     | 
    
         
             
                  def fetch(key)
         
     | 
| 
       37 
     | 
    
         
            -
                     
     | 
| 
      
 43 
     | 
    
         
            +
                    translate("faker.#{key}").sample
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  
         
     | 
| 
      
 46 
     | 
    
         
            +
                  # Load formatted strings from the locale, "parsing" them
         
     | 
| 
      
 47 
     | 
    
         
            +
                  # into method calls that can be used to generate a
         
     | 
| 
      
 48 
     | 
    
         
            +
                  # formatted translation: e.g., "#{first_name} #{last_name}".
         
     | 
| 
      
 49 
     | 
    
         
            +
                  def parse(key)
         
     | 
| 
      
 50 
     | 
    
         
            +
                    fetch(key).scan(/#\{([A-Za-z]+\.)?([^\}]+)\}([^#]+)?/).map {|kls, meth, etc| (kls ? Faker.const_get(kls.chop) : self).send(meth) + etc.to_s }.join
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
                  
         
     | 
| 
      
 53 
     | 
    
         
            +
                  # Call I18n.translate with our configured locale if no
         
     | 
| 
      
 54 
     | 
    
         
            +
                  # locale is specified
         
     | 
| 
      
 55 
     | 
    
         
            +
                  def translate(*args)
         
     | 
| 
      
 56 
     | 
    
         
            +
                    opts = args.last.is_a?(Hash) ? args.pop : {}
         
     | 
| 
      
 57 
     | 
    
         
            +
                    opts[:locale] ||= Faker::Config.locale
         
     | 
| 
      
 58 
     | 
    
         
            +
                    opts[:throw] = true
         
     | 
| 
      
 59 
     | 
    
         
            +
                    I18n.translate(*(args.push(opts)))
         
     | 
| 
      
 60 
     | 
    
         
            +
                  rescue
         
     | 
| 
      
 61 
     | 
    
         
            +
                    # Super-simple fallback -- fallback to en if the
         
     | 
| 
      
 62 
     | 
    
         
            +
                    # translation was missing.  If the translation isn't
         
     | 
| 
      
 63 
     | 
    
         
            +
                    # in en either, then it will raise again.
         
     | 
| 
      
 64 
     | 
    
         
            +
                    I18n.translate(*(args.push(opts.merge(:locale => :en))))
         
     | 
| 
      
 65 
     | 
    
         
            +
                  end
         
     | 
| 
      
 66 
     | 
    
         
            +
                  
         
     | 
| 
      
 67 
     | 
    
         
            +
                  def flexible(key)
         
     | 
| 
      
 68 
     | 
    
         
            +
                    @flexible_key = key
         
     | 
| 
       38 
69 
     | 
    
         
             
                  end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                  # You can add whatever you want to the locale file, and it will get caught here.
         
     | 
| 
      
 72 
     | 
    
         
            +
                  # E.g., in your locale file, create a
         
     | 
| 
      
 73 
     | 
    
         
            +
                  #   name:
         
     | 
| 
      
 74 
     | 
    
         
            +
                  #     girls_name: ["Alice", "Cheryl", "Tatiana"]
         
     | 
| 
      
 75 
     | 
    
         
            +
                  # Then you can call Faker::Name.girls_name and it will act like #first_name
         
     | 
| 
      
 76 
     | 
    
         
            +
                  def method_missing(m, *args, &block)
         
     | 
| 
      
 77 
     | 
    
         
            +
                    # Use the alternate form of translate to get a nil rather than a "missing translation" string
         
     | 
| 
      
 78 
     | 
    
         
            +
                    if translation = translate(:faker)[@flexible_key][m]
         
     | 
| 
      
 79 
     | 
    
         
            +
                      translation.respond_to?(:sample) ? translation.sample : translation
         
     | 
| 
      
 80 
     | 
    
         
            +
                    else
         
     | 
| 
      
 81 
     | 
    
         
            +
                      super
         
     | 
| 
      
 82 
     | 
    
         
            +
                    end
         
     | 
| 
      
 83 
     | 
    
         
            +
                  end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
       39 
85 
     | 
    
         
             
                end
         
     | 
| 
       40 
86 
     | 
    
         
             
              end
         
     | 
| 
       41 
87 
     | 
    
         
             
            end
         
     | 
    
        data/lib/faker/address.rb
    CHANGED
    
    | 
         @@ -1,24 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Faker
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Address < Base
         
     | 
| 
      
 3 
     | 
    
         
            +
                flexible :address
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
                class << self
         
     | 
| 
       4 
6 
     | 
    
         
             
                  def city
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
       6 
     | 
    
         
            -
                      '%s %s%s' % [city_prefix, Name.first_name, city_suffix],
         
     | 
| 
       7 
     | 
    
         
            -
                      '%s %s' % [city_prefix, Name.first_name],
         
     | 
| 
       8 
     | 
    
         
            -
                      '%s%s' % [Name.first_name, city_suffix],
         
     | 
| 
       9 
     | 
    
         
            -
                      '%s%s' % [Name.last_name, city_suffix],
         
     | 
| 
       10 
     | 
    
         
            -
                    ].rand
         
     | 
| 
      
 7 
     | 
    
         
            +
                    parse('address.city')
         
     | 
| 
       11 
8 
     | 
    
         
             
                  end
         
     | 
| 
       12 
9 
     | 
    
         | 
| 
       13 
10 
     | 
    
         
             
                  def street_name
         
     | 
| 
       14 
     | 
    
         
            -
                     
     | 
| 
       15 
     | 
    
         
            -
                      Proc.new { [Name.last_name, street_suffix].join(' ') },
         
     | 
| 
       16 
     | 
    
         
            -
                      Proc.new { [Name.first_name, street_suffix].join(' ') }
         
     | 
| 
       17 
     | 
    
         
            -
                    ].rand.call
         
     | 
| 
      
 11 
     | 
    
         
            +
                    parse('address.street_name')
         
     | 
| 
       18 
12 
     | 
    
         
             
                  end
         
     | 
| 
       19 
13 
     | 
    
         | 
| 
       20 
14 
     | 
    
         
             
                  def street_address(include_secondary = false)
         
     | 
| 
       21 
     | 
    
         
            -
                    numerify( 
     | 
| 
      
 15 
     | 
    
         
            +
                    numerify(parse('address.street_address') + (include_secondary ? ' ' + secondary_address : ''))
         
     | 
| 
       22 
16 
     | 
    
         
             
                  end
         
     | 
| 
       23 
17 
     | 
    
         | 
| 
       24 
18 
     | 
    
         
             
                  def secondary_address
         
     | 
| 
         @@ -26,7 +20,7 @@ module Faker 
     | 
|
| 
       26 
20 
     | 
    
         
             
                  end
         
     | 
| 
       27 
21 
     | 
    
         | 
| 
       28 
22 
     | 
    
         
             
                  def zip_code
         
     | 
| 
       29 
     | 
    
         
            -
                    bothify(fetch('address.postcode')) 
     | 
| 
      
 23 
     | 
    
         
            +
                    bothify(fetch('address.postcode'))
         
     | 
| 
       30 
24 
     | 
    
         
             
                  end
         
     | 
| 
       31 
25 
     | 
    
         
             
                  alias_method :zip, :zip_code
         
     | 
| 
       32 
26 
     | 
    
         
             
                  alias_method :postcode, :zip_code
         
     | 
| 
         @@ -38,18 +32,14 @@ module Faker 
     | 
|
| 
       38 
32 
     | 
    
         
             
                  def state;         fetch('address.state');         end
         
     | 
| 
       39 
33 
     | 
    
         
             
                  def country;       fetch('address.country');       end
         
     | 
| 
       40 
34 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                   
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                  # then you can call #country_code and it will act like #country
         
     | 
| 
       44 
     | 
    
         
            -
                  def method_missing(m, *args, &block)
         
     | 
| 
       45 
     | 
    
         
            -
                    # Use the alternate form of translate to get a nil rather than a "missing translation" string
         
     | 
| 
       46 
     | 
    
         
            -
                    if translation = I18n.translate(:faker)[:address][m]
         
     | 
| 
       47 
     | 
    
         
            -
                      translation.respond_to?(:rand) ? translation.rand : translation
         
     | 
| 
       48 
     | 
    
         
            -
                    else
         
     | 
| 
       49 
     | 
    
         
            -
                      super
         
     | 
| 
       50 
     | 
    
         
            -
                    end
         
     | 
| 
      
 35 
     | 
    
         
            +
                  def latitude
         
     | 
| 
      
 36 
     | 
    
         
            +
                    ((rand * 180) - 90).to_s
         
     | 
| 
       51 
37 
     | 
    
         
             
                  end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  def longitude
         
     | 
| 
      
 40 
     | 
    
         
            +
                    ((rand * 360) - 180).to_s
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
       53 
43 
     | 
    
         
             
                  # Deprecated
         
     | 
| 
       54 
44 
     | 
    
         
             
                  alias_method :earth_country, :country
         
     | 
| 
       55 
45 
     | 
    
         
             
                  alias_method :us_state, :state
         
     | 
| 
         @@ -59,4 +49,4 @@ module Faker 
     | 
|
| 
       59 
49 
     | 
    
         | 
| 
       60 
50 
     | 
    
         
             
                end
         
     | 
| 
       61 
51 
     | 
    
         
             
              end
         
     | 
| 
       62 
     | 
    
         
            -
            end
         
     | 
| 
      
 52 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/faker/company.rb
    CHANGED
    
    | 
         @@ -1,8 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Faker
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Company < Base
         
     | 
| 
      
 3 
     | 
    
         
            +
                flexible :company
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
                class << self
         
     | 
| 
       4 
6 
     | 
    
         
             
                  def name
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
      
 7 
     | 
    
         
            +
                    parse('company.name')
         
     | 
| 
       6 
8 
     | 
    
         
             
                  end
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
       8 
10 
     | 
    
         
             
                  def suffix
         
     | 
| 
         @@ -10,30 +12,15 @@ module Faker 
     | 
|
| 
       10 
12 
     | 
    
         
             
                  end
         
     | 
| 
       11 
13 
     | 
    
         | 
| 
       12 
14 
     | 
    
         
             
                  # Generate a buzzword-laden catch phrase.
         
     | 
| 
       13 
     | 
    
         
            -
                  # Wordlist from http://www.1728.com/buzzword.htm
         
     | 
| 
       14 
15 
     | 
    
         
             
                  def catch_phrase
         
     | 
| 
       15 
     | 
    
         
            -
                     
     | 
| 
       16 
     | 
    
         
            -
                      ["Adaptive", "Advanced", "Ameliorated", "Assimilated", "Automated", "Balanced", "Business-focused", "Centralized", "Cloned", "Compatible", "Configurable", "Cross-group", "Cross-platform", "Customer-focused", "Customizable", "Decentralized", "De-engineered", "Devolved", "Digitized", "Distributed", "Diverse", "Down-sized", "Enhanced", "Enterprise-wide", "Ergonomic", "Exclusive", "Expanded", "Extended", "Face to face", "Focused", "Front-line", "Fully-configurable", "Function-based", "Fundamental", "Future-proofed", "Grass-roots", "Horizontal", "Implemented", "Innovative", "Integrated", "Intuitive", "Inverse", "Managed", "Mandatory", "Monitored", "Multi-channelled", "Multi-lateral", "Multi-layered", "Multi-tiered", "Networked", "Object-based", "Open-architected", "Open-source", "Operative", "Optimized", "Optional", "Organic", "Organized", "Persevering", "Persistent", "Phased", "Polarised", "Pre-emptive", "Proactive", "Profit-focused", "Profound", "Programmable", "Progressive", "Public-key", "Quality-focused", "Reactive", "Realigned", "Re-contextualized", "Re-engineered", "Reduced", "Reverse-engineered", "Right-sized", "Robust", "Seamless", "Secured", "Self-enabling", "Sharable", "Stand-alone", "Streamlined", "Switchable", "Synchronised", "Synergistic", "Synergized", "Team-oriented", "Total", "Triple-buffered", "Universal", "Up-sized", "Upgradable", "User-centric", "User-friendly", "Versatile", "Virtual", "Visionary", "Vision-oriented"].rand, 
         
     | 
| 
       17 
     | 
    
         
            -
                      ["24 hour", "24/7", "3rd generation", "4th generation", "5th generation", "6th generation", "actuating", "analyzing", "assymetric", "asynchronous", "attitude-oriented", "background", "bandwidth-monitored", "bi-directional", "bifurcated", "bottom-line", "clear-thinking", "client-driven", "client-server", "coherent", "cohesive", "composite", "context-sensitive", "contextually-based", "content-based", "dedicated", "demand-driven", "didactic", "directional", "discrete", "disintermediate", "dynamic", "eco-centric", "empowering", "encompassing", "even-keeled", "executive", "explicit", "exuding", "fault-tolerant", "foreground", "fresh-thinking", "full-range", "global", "grid-enabled", "heuristic", "high-level", "holistic", "homogeneous", "human-resource", "hybrid", "impactful", "incremental", "intangible", "interactive", "intermediate", "leading edge", "local", "logistical", "maximized", "methodical", "mission-critical", "mobile", "modular", "motivating", "multimedia", "multi-state", "multi-tasking", "national", "needs-based", "neutral", "next generation", "non-volatile", "object-oriented", "optimal", "optimizing", "radical", "real-time", "reciprocal", "regional", "responsive", "scalable", "secondary", "solution-oriented", "stable", "static", "systematic", "systemic", "system-worthy", "tangible", "tertiary", "transitional", "uniform", "upward-trending", "user-facing", "value-added", "web-enabled", "well-modulated", "zero administration", "zero defect", "zero tolerance"].rand,
         
     | 
| 
       18 
     | 
    
         
            -
                      ["ability", "access", "adapter", "algorithm", "alliance", "analyzer", "application", "approach", "architecture", "archive", "artificial intelligence", "array", "attitude", "benchmark", "budgetary management", "capability", "capacity", "challenge", "circuit", "collaboration", "complexity", "concept", "conglomeration", "contingency", "core", "customer loyalty", "database", "data-warehouse", "definition", "emulation", "encoding", "encryption", "extranet", "firmware", "flexibility", "focus group", "forecast", "frame", "framework", "function", "functionalities", "Graphic Interface", "groupware", "Graphical User Interface", "hardware", "help-desk", "hierarchy", "hub", "implementation", "info-mediaries", "infrastructure", "initiative", "installation", "instruction set", "interface", "internet solution", "intranet", "knowledge user", "knowledge base", "local area network", "leverage", "matrices", "matrix", "methodology", "middleware", "migration", "model", "moderator", "monitoring", "moratorium", "neural-net", "open architecture", "open system", "orchestration", "paradigm", "parallelism", "policy", "portal", "pricing structure", "process improvement", "product", "productivity", "project", "projection", "protocol", "secured line", "service-desk", "software", "solution", "standardization", "strategy", "structure", "success", "superstructure", "support", "synergy", "system engine", "task-force", "throughput", "time-frame", "toolset", "utilisation", "website", "workforce"].rand
         
     | 
| 
       19 
     | 
    
         
            -
                    ].join(' ')
         
     | 
| 
      
 16 
     | 
    
         
            +
                    translate('faker.company.buzzwords').collect {|list| list.sample }.join(' ')
         
     | 
| 
       20 
17 
     | 
    
         
             
                  end
         
     | 
| 
       21 
18 
     | 
    
         | 
| 
       22 
19 
     | 
    
         
             
                  # When a straight answer won't do, BS to the rescue!
         
     | 
| 
       23 
     | 
    
         
            -
                  # Wordlist from http://dack.com/web/bullshit.html
         
     | 
| 
       24 
20 
     | 
    
         
             
                  def bs
         
     | 
| 
       25 
     | 
    
         
            -
                     
     | 
| 
       26 
     | 
    
         
            -
                      ["implement", "utilize", "integrate", "streamline", "optimize", "evolve", "transform", "embrace", "enable", "orchestrate", "leverage", "reinvent", "aggregate", "architect", "enhance", "incentivize", "morph", "empower", "envisioneer", "monetize", "harness", "facilitate", "seize", "disintermediate", "synergize", "strategize", "deploy", "brand", "grow", "target", "syndicate", "synthesize", "deliver", "mesh", "incubate", "engage", "maximize", "benchmark", "expedite", "reintermediate", "whiteboard", "visualize", "repurpose", "innovate", "scale", "unleash", "drive", "extend", "engineer", "revolutionize", "generate", "exploit", "transition", "e-enable", "iterate", "cultivate", "matrix", "productize", "redefine", "recontextualize"].rand,
         
     | 
| 
       27 
     | 
    
         
            -
                      ["clicks-and-mortar", "value-added", "vertical", "proactive", "robust", "revolutionary", "scalable", "leading-edge", "innovative", "intuitive", "strategic", "e-business", "mission-critical", "sticky", "one-to-one", "24/7", "end-to-end", "global", "B2B", "B2C", "granular", "frictionless", "virtual", "viral", "dynamic", "24/365", "best-of-breed", "killer", "magnetic", "bleeding-edge", "web-enabled", "interactive", "dot-com", "sexy", "back-end", "real-time", "efficient", "front-end", "distributed", "seamless", "extensible", "turn-key", "world-class", "open-source", "cross-platform", "cross-media", "synergistic", "bricks-and-clicks", "out-of-the-box", "enterprise", "integrated", "impactful", "wireless", "transparent", "next-generation", "cutting-edge", "user-centric", "visionary", "customized", "ubiquitous", "plug-and-play", "collaborative", "compelling", "holistic", "rich"].rand,
         
     | 
| 
       28 
     | 
    
         
            -
                      ["synergies", "web-readiness", "paradigms", "markets", "partnerships", "infrastructures", "platforms", "initiatives", "channels", "eyeballs", "communities", "ROI", "solutions", "e-tailers", "e-services", "action-items", "portals", "niches", "technologies", "content", "vortals", "supply-chains", "convergence", "relationships", "architectures", "interfaces", "e-markets", "e-commerce", "systems", "bandwidth", "infomediaries", "models", "mindshare", "deliverables", "users", "schemas", "networks", "applications", "metrics", "e-business", "functionalities", "experiences", "web services", "methodologies"].rand
         
     | 
| 
       29 
     | 
    
         
            -
                    ].join(' ')
         
     | 
| 
      
 21 
     | 
    
         
            +
                    translate('faker.company.bs').collect {|list| list.sample }.join(' ')
         
     | 
| 
       30 
22 
     | 
    
         
             
                  end
         
     | 
| 
       31 
23 
     | 
    
         
             
                end
         
     | 
| 
       32 
24 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
                Formats = [
         
     | 
| 
       34 
     | 
    
         
            -
                  Proc.new { [ Name.last_name, suffix ].join(' ') },
         
     | 
| 
       35 
     | 
    
         
            -
                  Proc.new { [ Name.last_name, Name.last_name ].join('-') },
         
     | 
| 
       36 
     | 
    
         
            -
                  Proc.new { "%s, %s and %s" % [ Name.last_name, Name.last_name, Name.last_name ] }
         
     | 
| 
       37 
     | 
    
         
            -
                  ]
         
     | 
| 
       38 
25 
     | 
    
         
             
              end
         
     | 
| 
       39 
     | 
    
         
            -
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/faker/internet.rb
    CHANGED
    
    | 
         @@ -1,3 +1,4 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: utf-8
         
     | 
| 
       1 
2 
     | 
    
         
             
            module Faker
         
     | 
| 
       2 
3 
     | 
    
         
             
              class Internet < Base
         
     | 
| 
       3 
4 
     | 
    
         
             
                class << self
         
     | 
| 
         @@ -10,19 +11,30 @@ module Faker 
     | 
|
| 
       10 
11 
     | 
    
         
             
                  end
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
                  def user_name(name = nil)
         
     | 
| 
       13 
     | 
    
         
            -
                    return name.scan(/\w+/).shuffle.join(%w(. _). 
     | 
| 
      
 14 
     | 
    
         
            +
                    return name.scan(/\w+/).shuffle.join(%w(. _).sample).downcase if name
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                    [ 
         
     | 
| 
      
 16 
     | 
    
         
            +
                    fix_umlauts([ 
         
     | 
| 
       16 
17 
     | 
    
         
             
                      Proc.new { Name.first_name.gsub(/\W/, '').downcase },
         
     | 
| 
       17 
18 
     | 
    
         
             
                      Proc.new { 
         
     | 
| 
       18 
19 
     | 
    
         
             
                        [ Name.first_name, Name.last_name ].map {|n| 
         
     | 
| 
       19 
20 
     | 
    
         
             
                          n.gsub(/\W/, '')
         
     | 
| 
       20 
     | 
    
         
            -
                        }.join(%w(. _). 
     | 
| 
       21 
     | 
    
         
            -
                    ]. 
     | 
| 
      
 21 
     | 
    
         
            +
                        }.join(%w(. _).sample).downcase }
         
     | 
| 
      
 22 
     | 
    
         
            +
                    ].sample.call)
         
     | 
| 
       22 
23 
     | 
    
         
             
                  end
         
     | 
| 
       23 
24 
     | 
    
         | 
| 
       24 
25 
     | 
    
         
             
                  def domain_name
         
     | 
| 
       25 
     | 
    
         
            -
                    [ domain_word, domain_suffix ].join('.')
         
     | 
| 
      
 26 
     | 
    
         
            +
                    [ fix_umlauts(domain_word), domain_suffix ].join('.')
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                  
         
     | 
| 
      
 29 
     | 
    
         
            +
                  def fix_umlauts(string)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    string.gsub(/[äöüß]/i) do |match|
         
     | 
| 
      
 31 
     | 
    
         
            +
                        case match.downcase
         
     | 
| 
      
 32 
     | 
    
         
            +
                            when "ä" 'ae'
         
     | 
| 
      
 33 
     | 
    
         
            +
                            when "ö" 'oe'
         
     | 
| 
      
 34 
     | 
    
         
            +
                            when "ü" 'ue'
         
     | 
| 
      
 35 
     | 
    
         
            +
                            when "ß" 'ss'
         
     | 
| 
      
 36 
     | 
    
         
            +
                        end
         
     | 
| 
      
 37 
     | 
    
         
            +
                    end
         
     | 
| 
       26 
38 
     | 
    
         
             
                  end
         
     | 
| 
       27 
39 
     | 
    
         | 
| 
       28 
40 
     | 
    
         
             
                  def domain_word
         
     | 
| 
         @@ -34,11 +46,22 @@ module Faker 
     | 
|
| 
       34 
46 
     | 
    
         
             
                  end
         
     | 
| 
       35 
47 
     | 
    
         | 
| 
       36 
48 
     | 
    
         
             
                  def ip_v4_address
         
     | 
| 
       37 
     | 
    
         
            -
                     
     | 
| 
       38 
     | 
    
         
            -
                     
     | 
| 
       39 
     | 
    
         
            -
                     
     | 
| 
       40 
     | 
    
         
            -
                     
     | 
| 
      
 49 
     | 
    
         
            +
                    ary = (2..254).to_a
         
     | 
| 
      
 50 
     | 
    
         
            +
                    [ary.sample,
         
     | 
| 
      
 51 
     | 
    
         
            +
                    ary.sample,
         
     | 
| 
      
 52 
     | 
    
         
            +
                    ary.sample,
         
     | 
| 
      
 53 
     | 
    
         
            +
                    ary.sample].join('.')
         
     | 
| 
      
 54 
     | 
    
         
            +
                  end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  def ip_v6_address
         
     | 
| 
      
 57 
     | 
    
         
            +
                    @@ip_v6_space ||= (0..65535).to_a
         
     | 
| 
      
 58 
     | 
    
         
            +
                    container = (1..8).map{ |_| @@ip_v6_space.sample }
         
     | 
| 
      
 59 
     | 
    
         
            +
                    container.map{ |n| n.to_s(16) }.join(':')
         
     | 
| 
      
 60 
     | 
    
         
            +
                  end
         
     | 
| 
      
 61 
     | 
    
         
            +
                  
         
     | 
| 
      
 62 
     | 
    
         
            +
                  def url
         
     | 
| 
      
 63 
     | 
    
         
            +
                    "http://#{domain_name}/#{user_name}"
         
     | 
| 
       41 
64 
     | 
    
         
             
                  end
         
     | 
| 
       42 
65 
     | 
    
         
             
                end
         
     | 
| 
       43 
66 
     | 
    
         
             
              end
         
     | 
| 
       44 
     | 
    
         
            -
            end
         
     | 
| 
      
 67 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/faker/lorem.rb
    CHANGED
    
    | 
         @@ -1,32 +1,39 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Faker
         
     | 
| 
       2 
2 
     | 
    
         
             
              # Based on Perl's Text::Lorem
         
     | 
| 
       3 
3 
     | 
    
         
             
              class Lorem < Base
         
     | 
| 
       4 
     | 
    
         
            -
                def self.words(num = 3)
         
     | 
| 
       5 
     | 
    
         
            -
                   
     | 
| 
      
 4 
     | 
    
         
            +
                def self.words(num = 3, supplemental = false)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  (
         
     | 
| 
      
 6 
     | 
    
         
            +
                    translate('faker.lorem.words') + 
         
     | 
| 
      
 7 
     | 
    
         
            +
                    (supplemental ? translate('faker.lorem.supplemental') : [])
         
     | 
| 
      
 8 
     | 
    
         
            +
                  ).shuffle[0, num]
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
                
         
     | 
| 
      
 11 
     | 
    
         
            +
                def self.characters(char_count = 255)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  rand(36**char_count).to_s(36)
         
     | 
| 
       6 
13 
     | 
    
         
             
                end
         
     | 
| 
       7 
14 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
                def self.sentence(word_count = 4)
         
     | 
| 
       9 
     | 
    
         
            -
                  words(word_count + rand(6)).join(' ').capitalize + '.'
         
     | 
| 
      
 15 
     | 
    
         
            +
                def self.sentence(word_count = 4, supplemental = false)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  words(word_count + rand(6), supplemental).join(' ').capitalize + '.'
         
     | 
| 
       10 
17 
     | 
    
         
             
                end
         
     | 
| 
       11 
18 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                def self.sentences(sentence_count = 3)
         
     | 
| 
      
 19 
     | 
    
         
            +
                def self.sentences(sentence_count = 3, supplemental = false)
         
     | 
| 
       13 
20 
     | 
    
         
             
                  [].tap do |sentences|
         
     | 
| 
       14 
21 
     | 
    
         
             
                    1.upto(sentence_count) do
         
     | 
| 
       15 
     | 
    
         
            -
                      sentences << sentence
         
     | 
| 
      
 22 
     | 
    
         
            +
                      sentences << sentence(3, supplemental)
         
     | 
| 
       16 
23 
     | 
    
         
             
                    end
         
     | 
| 
       17 
24 
     | 
    
         
             
                  end
         
     | 
| 
       18 
25 
     | 
    
         
             
                end
         
     | 
| 
       19 
26 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                def self.paragraph(sentence_count = 3)
         
     | 
| 
       21 
     | 
    
         
            -
                  sentences(sentence_count + rand(3)).join(' ')
         
     | 
| 
      
 27 
     | 
    
         
            +
                def self.paragraph(sentence_count = 3, supplemental = false)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  sentences(sentence_count + rand(3), supplemental).join(' ')
         
     | 
| 
       22 
29 
     | 
    
         
             
                end
         
     | 
| 
       23 
30 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                def self.paragraphs(paragraph_count = 3)
         
     | 
| 
      
 31 
     | 
    
         
            +
                def self.paragraphs(paragraph_count = 3, supplemental = false)
         
     | 
| 
       25 
32 
     | 
    
         
             
                  [].tap do |paragraphs|
         
     | 
| 
       26 
33 
     | 
    
         
             
                    1.upto(paragraph_count) do
         
     | 
| 
       27 
     | 
    
         
            -
                      paragraphs << paragraph
         
     | 
| 
      
 34 
     | 
    
         
            +
                      paragraphs << paragraph(3, supplemental)
         
     | 
| 
       28 
35 
     | 
    
         
             
                    end
         
     | 
| 
       29 
36 
     | 
    
         
             
                  end
         
     | 
| 
       30 
37 
     | 
    
         
             
                end
         
     | 
| 
       31 
38 
     | 
    
         
             
              end
         
     | 
| 
       32 
     | 
    
         
            -
            end
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/faker/name.rb
    CHANGED
    
    | 
         @@ -1,9 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Faker
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Name < Base
         
     | 
| 
      
 3 
     | 
    
         
            +
                flexible :name
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
                class << self
         
     | 
| 
       4 
6 
     | 
    
         | 
| 
       5 
7 
     | 
    
         
             
                  def name
         
     | 
| 
       6 
     | 
    
         
            -
                     
     | 
| 
      
 8 
     | 
    
         
            +
                    parse('name.name')
         
     | 
| 
       7 
9 
     | 
    
         
             
                  end
         
     | 
| 
       8 
10 
     | 
    
         | 
| 
       9 
11 
     | 
    
         
             
                  def first_name; fetch('name.first_name'); end
         
     | 
| 
         @@ -11,6 +13,10 @@ module Faker 
     | 
|
| 
       11 
13 
     | 
    
         
             
                  def prefix;     fetch('name.prefix'); end
         
     | 
| 
       12 
14 
     | 
    
         
             
                  def suffix;     fetch('name.suffix'); end
         
     | 
| 
       13 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
                  # Generate a buzzword-laden job title
         
     | 
| 
      
 17 
     | 
    
         
            +
                  # Wordlist from http://www.bullshitjob.com/title/
         
     | 
| 
      
 18 
     | 
    
         
            +
                  def title; fetch('name.title.descriptor') + ' ' + fetch('name.title.level') + ' ' + fetch('name.title.job'); end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  
         
     | 
| 
       14 
20 
     | 
    
         
             
                end
         
     | 
| 
       15 
21 
     | 
    
         
             
              end
         
     | 
| 
       16 
     | 
    
         
            -
            end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/faker/phone_number.rb
    CHANGED
    
    | 
         @@ -4,6 +4,14 @@ module Faker 
     | 
|
| 
       4 
4 
     | 
    
         
             
                  def phone_number
         
     | 
| 
       5 
5 
     | 
    
         
             
                    numerify(fetch('phone_number.formats'))
         
     | 
| 
       6 
6 
     | 
    
         
             
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def cell_phone
         
     | 
| 
      
 9 
     | 
    
         
            +
                    if (translation = translate(:faker)[:cell_phone]).is_a? Hash
         
     | 
| 
      
 10 
     | 
    
         
            +
                      numerify(translation[:formats].sample)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    else
         
     | 
| 
      
 12 
     | 
    
         
            +
                      numerify(fetch('phone_number.formats'))
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
       7 
15 
     | 
    
         
             
                end
         
     | 
| 
       8 
16 
     | 
    
         
             
              end
         
     | 
| 
       9 
     | 
    
         
            -
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/faker/version.rb
    CHANGED
    
    
    
        data/lib/locales/de-ch.yml
    CHANGED
    
    | 
         @@ -3,9 +3,16 @@ de-ch: 
     | 
|
| 
       3 
3 
     | 
    
         
             
                address:
         
     | 
| 
       4 
4 
     | 
    
         
             
                  country_code: [CH, CH, CH, DE, AT, US, LI, US, HK, VN]
         
     | 
| 
       5 
5 
     | 
    
         
             
                  postcode: ['1###', '2###', '3###', '4###', '5###', '6###', '7###', '8###', '9###']
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       6 
7 
     | 
    
         
             
                company:
         
     | 
| 
       7 
8 
     | 
    
         
             
                  suffix: [AG, GmbH, und Söhne, und Partner, "& Co.", Gruppe, LLC, Inc.]
         
     | 
| 
      
 9 
     | 
    
         
            +
                  name:
         
     | 
| 
      
 10 
     | 
    
         
            +
                    - "#{Name.last_name} #{suffix}"
         
     | 
| 
      
 11 
     | 
    
         
            +
                    - "#{Name.last_name}-#{Name.last_name}"
         
     | 
| 
      
 12 
     | 
    
         
            +
                    - "#{Name.last_name}, #{Name.last_name} und #{Name.last_name}"
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       8 
14 
     | 
    
         
             
                internet:
         
     | 
| 
       9 
15 
     | 
    
         
             
                  domain_suffix: [com, net, biz, ch, de, li, at, ch, ch]
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       10 
17 
     | 
    
         
             
                phone_number:
         
     | 
| 
       11 
18 
     | 
    
         
             
                  formats: ['0800 ### ###', '0800 ## ## ##', '0## ### ## ##', '0## ### ## ##', '+41 ## ### ## ##', '0900 ### ###', '076 ### ## ##', '+4178 ### ## ##', '0041 79 ### ## ##']
         
     |