laranja 2.0.0 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3fd37c3884c0fa247a1659a53210b1bc4d70ca34
4
- data.tar.gz: 36514c2edc628d2b531e14fcd38fc9684038fa71
3
+ metadata.gz: 8646b4e5b3f2bd358cf8633247ab4e0256d197db
4
+ data.tar.gz: 521ce6e070d0e9baf5e59b10d7e64aaed20d71d8
5
5
  SHA512:
6
- metadata.gz: 508ff9017e49c182f3775f6a19ea768efdb70e5f33ee63d70ce804c9dde306f8f7a4634e72fec0022614f65694ffa564bc0d660cc33543635e0a0257ac9b8b58
7
- data.tar.gz: 920e2598cbb23468ee63aae503eeef4129cbb831c8fe9f713c00755df52ebb1769605c006ffdb5e477090c1491ca25c513bd7aa07c75471a7091006b1788910a
6
+ metadata.gz: f18e6db8fa36edd86587eb20438b7bc51e3771a50ee76375a1cabac5eaec8287b6f2821b15cb7050498dcb91ad84fca42ef9a97f38ec1a6802157002b5953d53
7
+ data.tar.gz: 4319c776174988262f0c8d4868e44806114805afdb45d3670f67b4aeb46ac43c9ecd3a72e19fdba4aceeaa61cdf8f12497b6841ff2c7aa1e1f9ee0722d673b0e
@@ -1,11 +1,8 @@
1
1
  language: ruby
2
- os:
3
- - linux
4
- - osx
5
2
  rvm:
6
- - 2.2.2
7
- - 2.1.6
8
- - 2.0.0
9
- - 1.9.3
3
+ - 2.4.0
4
+ - 2.3.3
5
+ - 2.2.6
6
+ - 2.1.10
10
7
  env:
11
8
  secure: 0Mi2GePEotGmVDxATHkTY5NN7vfgexgW8Fz+16hbcbbNockNsjaU64HQeZ5FWwaKAUBDrYCQf0hooO8kD7XcuwSVEYg+T1M1glhg3wSwMRsZUgyow4AWeCCJ2cqnYiSh1R/1nO8M91cp7TbcLdK/r65x3BFLTd++x82BYWYJgeA=
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## 2.0.1
4
+
5
+ * Drop safe_yaml dependency
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
- gem 'codeclimate-test-reporter', require: false
3
+ gem 'codeclimate-test-reporter', '~> 0.6', require: nil
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014-2015 Oscar Esgalha
1
+ Copyright (c) 2014-2017 Oscar Esgalha
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -37,7 +37,7 @@ Now you can use your locale specific generators.
37
37
 
38
38
  ### Available Locales
39
39
 
40
- - [pt-BR](https://github.com/oesgalha/laranja/wiki/pt-BR)
40
+ - [pt-BR](https://github.com/oesgalha/laranja/tree/master/docs/pt-BR)
41
41
 
42
42
  ### TODO
43
43
 
@@ -0,0 +1,70 @@
1
+ # Setup
2
+
3
+ ```ruby
4
+ require 'laranja'
5
+ Laranja.load('pt-BR')
6
+ ```
7
+ ## Available generators
8
+
9
+ ### Nomes
10
+
11
+ ```ruby
12
+ Laranja::Nome.nome # Vitória Pereira
13
+ Laranja::Nome.nome(2) # Ígor Braga Santos => 2 sobrenomes
14
+ Laranja::Nome.primeiro_nome # Raul
15
+ Laranja::Name.sobrenome # Moreira
16
+ ```
17
+
18
+ ### Documentos
19
+
20
+ ```ruby
21
+ Laranja::Documento.cpf # 23379020648
22
+ Laranja::Documento.cpf_formatado # 524.966.867-49
23
+ Laranja::Documento.cpf(:rj) # 29564858739 => CPF do Rio de Janeiro
24
+ Laranja::Documento.cpf_formatado(:BA) # 101.182.995-90 => CPF da Bahia
25
+ Laranja::Documento.cpf('RS') # 73272882014 => CPF do Rio Grande do Sul
26
+ Laranja::Documento.cpf('sp') # 07537191859 => CPF de São Paulo
27
+ ```
28
+
29
+ ### Internet
30
+
31
+ ```ruby
32
+ Laranja::Internet.email # elsionogueira@gmail.com
33
+ Laranja::Internet.email('Vitória Pereira') # vitria.pereira@yahoo.com
34
+ Laranja::Internet.username # marli.macedo
35
+ Laranja::Internet.username('Ana Machado') # anamachado
36
+ Laranja::Internet.username('Joel Melo', ['-']) # joel-melo => Separador específico
37
+ Laranja::Internet.password # Pq9vD8VJzttr6vrB77hDCp2LVK8iSm1iUjezQuS9dlah0EUukfQDPLf5ad0e6WwsrI39
38
+ Laranja::Internet.password(2, 6) # COW => Senha com entre 2 a 6 caracteres (o padrão é entre 8 e 128)
39
+ ```
40
+ NÃO USE ESTA BIBLIOTECA PARA GERAR SENHAS PARA USUÁRIOS DE VERDADE!
41
+
42
+ ### Sexo
43
+
44
+ ```ruby
45
+ Laranja::Sexo.sexo # Feminino
46
+ Laranja::Sexo.sigla # M
47
+ ```
48
+
49
+ ### Endereco
50
+
51
+ ```ruby
52
+ Laranja::Endereco.cidade # Santo Rafael do Sul
53
+ Laranja::Endereco.bairro # Parque Condessa Carvalho
54
+ Laranja::Endereco.rua # Avenida Barão Norberto Martins Neto
55
+ Laranja::Endereco.complemento # Lote 937
56
+ Laranja::Endereco.numero # 608
57
+ Laranja::Endereco.cep_formatado # 43519-000
58
+ Laranja::Endereco.cep # 49738343
59
+ Laranja::Endereco.cep('SP') # 13663282
60
+ Laranja::Endereco.cep_formatado(:am) # 64787-398
61
+ Laranja::Endereco.uf # Rondônia
62
+ Laranja::Endereco.uf_sigla # MG
63
+ ```
64
+ ## Roadmap
65
+
66
+ - Documentos: CNPJ
67
+ - Empregos
68
+ - Telefonia
69
+ - Datas
70
+ - Banco (cartão de crédito, número de boleto, contas correntes...)
@@ -7,9 +7,14 @@ Gem::Specification.new do |spec|
7
7
  spec.name = 'laranja'
8
8
  spec.version = Laranja::VERSION
9
9
  spec.authors = ['Oscar Esgalha']
10
- spec.email = ['oscaresgalha@gmail.com\n']
11
- spec.description = %q{Grab some valid brazilian fake data. For testing.}
12
- spec.summary = %q{Laranja will generate valid brazilian fake data, which can be used for automated testing or populating development databases.}
10
+ spec.email = ['oscaresgalha@gmail.com']
11
+ spec.description = <<DESC
12
+ Laranja is a ruby gem which generates random fake valid data.
13
+ It was built to help testing brazilian apps, since it generated specific data from the country.
14
+ Now it's localized with the I18n gem, the gem has custom data and custom generators per locale.
15
+ You can use it in your automated tests or to populate development databases.
16
+ DESC
17
+ spec.summary = %q{Laranja is a ruby gem which generates random fake valid data.}
13
18
  spec.homepage = 'https://github.com/oesgalha/laranja'
14
19
  spec.license = 'MIT'
15
20
 
@@ -19,7 +24,6 @@ Gem::Specification.new do |spec|
19
24
  spec.require_paths = ['lib']
20
25
 
21
26
  spec.add_dependency 'i18n', '~> 0.7'
22
- spec.add_dependency 'safe_yaml', '~> 1.0'
23
27
 
24
28
  spec.add_development_dependency 'bundler', '~> 1.3'
25
29
  spec.add_development_dependency 'rake', '~> 10.4'
@@ -1,5 +1,4 @@
1
- require 'safe_yaml'
2
- SafeYAML::OPTIONS[:default_mode] = :safe
1
+ require 'yaml'
3
2
  require 'laranja/version'
4
3
 
5
4
  module Laranja
@@ -3,15 +3,14 @@ module Laranja
3
3
  class << self
4
4
  attr_writer :static_data
5
5
 
6
- NUMBERS = '0'.upto('9').to_a
7
- UPPER = 'A'.upto('Z').to_a
8
- LOWER = 'a'.upto('z').to_a
6
+ NUMBERS = '0'.upto('9').to_a.freeze
7
+ ALL = (NUMBERS + 'A'.upto('Z').to_a + 'a'.upto('z').to_a).freeze
9
8
 
10
9
  protected
11
10
 
12
11
  def strf(format)
13
12
  symbolize(format).gsub(/(:(?<scope>[^:\s\z]+))?%(?<key>[^%\s\z]+)/) do
14
- data_sample($~[:key], $~[:scope])
13
+ data($~[:key], $~[:scope]).sample
15
14
  end
16
15
  end
17
16
 
@@ -19,16 +18,12 @@ module Laranja
19
18
  format.gsub(/#/) {
20
19
  NUMBERS.sample
21
20
  }.gsub(/\*/) {
22
- (1 + rand(9)).to_s
23
- }.gsub(/&/) {
24
- (LOWER + UPPER + NUMBERS).sample
21
+ (1 + rand(9)).to_s
22
+ }.gsub(/&/) {
23
+ (ALL).sample
25
24
  }
26
25
  end
27
26
 
28
- def data_sample(key, scope = nil)
29
- data(key, scope).sample
30
- end
31
-
32
27
  def data(key, scope = nil)
33
28
  static_data[scope || to_s.split('::')[-1].downcase][key]
34
29
  end
@@ -2,8 +2,8 @@ module Laranja
2
2
  class Documento < Generator
3
3
  class << self
4
4
  def cpf(uf = nil)
5
- cpf = uf.nil? ? strf('#########') : strf('########') + uf_code(uf)
6
- cpf + verification_digits(cpf).join
5
+ number = strf('########') + uf_code(uf)
6
+ number + verification_digits(number).join
7
7
  end
8
8
 
9
9
  def cpf_formatado(uf = nil)
@@ -12,25 +12,48 @@ module Laranja
12
12
  end
13
13
 
14
14
  def rg
15
- strf '#########'
15
+ strf('#########')
16
16
  end
17
17
 
18
18
  def rg_formatado
19
- strf '##.###.###-#'
19
+ strf('##.###.###-#')
20
20
  end
21
21
 
22
22
  private
23
23
 
24
24
  def uf_code(uf)
25
- data('codigo_uf')[uf.to_s.downcase].to_s
25
+ if uf
26
+ data('codigo_uf')[uf.to_s.downcase].to_s
27
+ else
28
+ strf('#')
29
+ end
26
30
  end
27
31
 
28
32
  def verification_digits(cpf)
29
- v = [(0..8).inject(0) { |sum, i| sum + cpf[i].to_i * (10 - i) } % 11]
30
- v[0] = v[0] < 2 ? 0 : 11 - v[0]
31
- v[1] = ((0..8).inject(0) { |sum, i| sum + cpf[i].to_i * (11 - i) } + v[0] * 2) % 11
32
- v[1] = v[1] < 2 ? 0 : 11 - v[1]
33
- v
33
+ v1 = v1_digit(cpf)
34
+ v2 = v2_digit(cpf, v1)
35
+ [v1, v2]
36
+ end
37
+
38
+ def v1_digit(cpf)
39
+ v1 = (0..8).reduce(0) { |sum, i| sum + cpf[i].to_i * (10 - i) }
40
+ v1 %= 11
41
+ if v1 < 2
42
+ 0
43
+ else
44
+ 11 - v1
45
+ end
46
+ end
47
+
48
+ def v2_digit(cpf, v1)
49
+ v2 = (0..8).reduce(0) { |sum, i| sum + cpf[i].to_i * (11 - i) }
50
+ v2 += v1 * 2
51
+ v2 %= 11
52
+ if v2 < 2
53
+ 0
54
+ else
55
+ 11 - v2
56
+ end
34
57
  end
35
58
  end
36
59
  end
@@ -1,69 +1,80 @@
1
1
  module Laranja
2
2
  class Endereco < Generator
3
3
  class << self
4
+
5
+ CIDADES_PATTERNS = [
6
+ '%city_prefix :nome%last_name',
7
+ '%city_prefix :nome%last_name %city_suffix',
8
+ '%city_prefix %female_city_prefix :nome%female_first_name',
9
+ '%city_prefix %male_city_prefix :nome%male_first_name',
10
+ '%city_prefix %female_city_prefix :nome%female_first_name %city_suffix',
11
+ '%city_prefix %male_city_prefix :nome%male_first_name %city_suffix',
12
+ ':nome%last_name %city_suffix',
13
+ '%female_city_prefix :nome%female_first_name',
14
+ '%male_city_prefix :nome%male_first_name',
15
+ '%female_city_prefix :nome%female_first_name %city_suffix',
16
+ '%male_city_prefix :nome%male_first_name %city_suffix'
17
+ ].freeze
18
+
19
+ BAIRRO_PATTERNS = [
20
+ '%district_prefix :nome%last_name',
21
+ '%district_prefix :nome%male_title :nome%last_name',
22
+ '%district_prefix :nome%female_title :nome%last_name'
23
+ ].freeze
24
+
25
+ RUA_PATTERNS = [
26
+ '%log_prefix :nome%female_title :nome%female_first_name :nome%last_name',
27
+ '%log_prefix :nome%female_first_name :nome%last_name',
28
+ '%log_prefix :nome%male_title :nome%male_first_name :nome%last_name :nome%male_suffix',
29
+ '%log_prefix :nome%male_title :nome%male_first_name :nome%last_name',
30
+ '%log_prefix :nome%male_first_name :nome%last_name :nome%male_suffix',
31
+ '%log_prefix :nome%male_first_name :nome%last_name'
32
+ ].freeze
33
+
4
34
  def cidade
5
- strf [
6
- '%city_prefix :nome%last_name',
7
- '%city_prefix :nome%last_name %city_suffix',
8
- '%city_prefix %female_city_prefix :nome%female_first_name',
9
- '%city_prefix %male_city_prefix :nome%male_first_name',
10
- '%city_prefix %female_city_prefix :nome%female_first_name %city_suffix',
11
- '%city_prefix %male_city_prefix :nome%male_first_name %city_suffix',
12
- ':nome%last_name %city_suffix',
13
- '%female_city_prefix :nome%female_first_name',
14
- '%male_city_prefix :nome%male_first_name',
15
- '%female_city_prefix :nome%female_first_name %city_suffix',
16
- '%male_city_prefix :nome%male_first_name %city_suffix'
17
- ].sample
35
+ strf(CIDADES_PATTERNS.sample)
18
36
  end
19
37
 
20
38
  def bairro
21
- strf [
22
- '%district_prefix :nome%last_name',
23
- '%district_prefix :nome%male_title :nome%last_name',
24
- '%district_prefix :nome%female_title :nome%last_name'
25
- ].sample
39
+ strf(BAIRRO_PATTERNS.sample)
26
40
  end
27
41
 
28
42
  def rua
29
- strf [
30
- '%log_prefix :nome%female_title :nome%female_first_name :nome%last_name',
31
- '%log_prefix :nome%female_first_name :nome%last_name',
32
- '%log_prefix :nome%male_title :nome%male_first_name :nome%last_name :nome%male_suffix',
33
- '%log_prefix :nome%male_title :nome%male_first_name :nome%last_name',
34
- '%log_prefix :nome%male_first_name :nome%last_name :nome%male_suffix',
35
- '%log_prefix :nome%male_first_name :nome%last_name'
36
- ].sample
43
+ strf(RUA_PATTERNS.sample)
37
44
  end
38
45
 
39
46
  def complemento
40
- strf '%secondary *###'
47
+ strf('%secondary *###')
41
48
  end
42
49
 
43
50
  def numero
44
- strf '*###'
51
+ strf('*###')
45
52
  end
46
53
 
47
54
  def cep_formatado(ufab = nil)
48
- ufab.nil? ? strf('#####-###') : uf_code(ufab) + strf('####-###')
55
+ uf_code(ufab) + strf('####-###')
49
56
  end
50
57
 
51
58
  def cep(ufab = nil)
52
- ufab.nil? ? strf('########') : uf_code(ufab) + strf('#######')
59
+ uf_code(ufab) + strf('#######')
53
60
  end
54
61
 
55
62
  def uf
56
- strf '%uf_name'
63
+ strf('%uf_name')
57
64
  end
58
65
 
59
66
  def uf_sigla
60
- strf '%uf_abbr'
67
+ strf('%uf_abbr')
61
68
  end
62
69
 
63
70
  private
64
71
 
65
72
  def uf_code(ufab)
66
- data('codigo_cep')[ufab.to_s.downcase].to_s
73
+ if ufab
74
+ data('codigo_cep')[ufab.to_s.downcase].to_s
75
+ else
76
+ strf('#')
77
+ end
67
78
  end
68
79
  end
69
80
  end
@@ -2,15 +2,16 @@ module Laranja
2
2
  class Internet < Generator
3
3
  class << self
4
4
  def email(name = nil)
5
- strf username(name || Laranja::Nome.nome) + '@%email'
5
+ strf(username(name || Laranja::Nome.nome) + '@%email')
6
6
  end
7
7
 
8
8
  def username(name = nil, sep = ['', '.', '_'])
9
- (name || Laranja::Nome.nome).gsub(/[^a-zA-Z0-9\s]/, '').split.join(sep.sample).downcase
9
+ name ||= Laranja::Nome.nome
10
+ name.gsub(/[^a-zA-Z0-9\s]/, '').split.join(sep.sample).downcase
10
11
  end
11
12
 
12
13
  def password(min = 8, max = 128)
13
- strf '&' * (min + rand(max - min))
14
+ strf('&' * (min + rand(max - min)))
14
15
  end
15
16
  end
16
17
  end
@@ -2,23 +2,20 @@ module Laranja
2
2
  class Nome < Generator
3
3
  class << self
4
4
  def nome(sobrenomes = 1)
5
- strf [
5
+ strf([
6
6
  '%female_first_name ' + ('%last_name ' * sobrenomes).strip,
7
7
  '%male_first_name ' + ('%last_name ' * sobrenomes).strip,
8
8
  '%female_first_name ' + ('%last_name ' * sobrenomes) + '%female_suffix',
9
9
  '%male_first_name ' + ('%last_name ' * sobrenomes) + '%male_suffix',
10
- ].sample
10
+ ].sample)
11
11
  end
12
12
 
13
13
  def primeiro_nome
14
- strf [
15
- '%female_first_name',
16
- '%male_first_name'
17
- ].sample
14
+ strf([ '%female_first_name', '%male_first_name' ].sample)
18
15
  end
19
16
 
20
17
  def sobrenome
21
- strf '%last_name'
18
+ strf('%last_name')
22
19
  end
23
20
  end
24
21
  end
@@ -2,11 +2,11 @@ module Laranja
2
2
  class Sexo < Generator
3
3
  class << self
4
4
  def sexo
5
- strf '%name'
5
+ strf('%name')
6
6
  end
7
7
 
8
8
  def sigla
9
- strf '%abbr'
9
+ strf('%abbr')
10
10
  end
11
11
  end
12
12
  end
@@ -1,3 +1,3 @@
1
1
  module Laranja
2
- VERSION = '2.0.0'
2
+ VERSION = '2.0.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: laranja
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Esgalha
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-22 00:00:00.000000000 Z
11
+ date: 2017-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.7'
27
- - !ruby/object:Gem::Dependency
28
- name: safe_yaml
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,19 +66,25 @@ dependencies:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
68
  version: '5.6'
83
- description: Grab some valid brazilian fake data. For testing.
69
+ description: |
70
+ Laranja is a ruby gem which generates random fake valid data.
71
+ It was built to help testing brazilian apps, since it generated specific data from the country.
72
+ Now it's localized with the I18n gem, the gem has custom data and custom generators per locale.
73
+ You can use it in your automated tests or to populate development databases.
84
74
  email:
85
- - oscaresgalha@gmail.com\n
75
+ - oscaresgalha@gmail.com
86
76
  executables: []
87
77
  extensions: []
88
78
  extra_rdoc_files: []
89
79
  files:
90
80
  - ".gitignore"
91
81
  - ".travis.yml"
82
+ - CHANGELOG.md
92
83
  - Gemfile
93
84
  - LICENSE.txt
94
85
  - README.md
95
86
  - Rakefile
87
+ - docs/pt-BR/README.md
96
88
  - laranja.gemspec
97
89
  - lib/laranja.rb
98
90
  - lib/laranja/data/pt-BR.yml
@@ -129,11 +121,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
121
  version: '0'
130
122
  requirements: []
131
123
  rubyforge_project:
132
- rubygems_version: 2.4.5
124
+ rubygems_version: 2.5.1
133
125
  signing_key:
134
126
  specification_version: 4
135
- summary: Laranja will generate valid brazilian fake data, which can be used for automated
136
- testing or populating development databases.
127
+ summary: Laranja is a ruby gem which generates random fake valid data.
137
128
  test_files:
138
129
  - test/pt-BR/test_documento.rb
139
130
  - test/pt-BR/test_endereco.rb