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 +4 -4
- data/.travis.yml +4 -7
- data/CHANGELOG.md +5 -0
- data/Gemfile +1 -1
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/docs/pt-BR/README.md +70 -0
- data/laranja.gemspec +8 -4
- data/lib/laranja.rb +1 -2
- data/lib/laranja/generator.rb +6 -11
- data/lib/laranja/generators/pt-BR/documento.rb +33 -10
- data/lib/laranja/generators/pt-BR/endereco.rb +44 -33
- data/lib/laranja/generators/pt-BR/internet.rb +4 -3
- data/lib/laranja/generators/pt-BR/nome.rb +4 -7
- data/lib/laranja/generators/pt-BR/sexo.rb +2 -2
- data/lib/laranja/version.rb +1 -1
- metadata +12 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8646b4e5b3f2bd358cf8633247ab4e0256d197db
|
4
|
+
data.tar.gz: 521ce6e070d0e9baf5e59b10d7e64aaed20d71d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f18e6db8fa36edd86587eb20438b7bc51e3771a50ee76375a1cabac5eaec8287b6f2821b15cb7050498dcb91ad84fca42ef9a97f38ec1a6802157002b5953d53
|
7
|
+
data.tar.gz: 4319c776174988262f0c8d4868e44806114805afdb45d3670f67b4aeb46ac43c9ecd3a72e19fdba4aceeaa61cdf8f12497b6841ff2c7aa1e1f9ee0722d673b0e
|
data/.travis.yml
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
language: ruby
|
2
|
-
os:
|
3
|
-
- linux
|
4
|
-
- osx
|
5
2
|
rvm:
|
6
|
-
- 2.
|
7
|
-
- 2.
|
8
|
-
- 2.
|
9
|
-
- 1.
|
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=
|
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -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...)
|
data/laranja.gemspec
CHANGED
@@ -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
|
11
|
-
spec.description
|
12
|
-
|
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'
|
data/lib/laranja.rb
CHANGED
data/lib/laranja/generator.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
(
|
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
|
-
|
6
|
-
|
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
|
-
|
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
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
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
|
-
|
55
|
+
uf_code(ufab) + strf('####-###')
|
49
56
|
end
|
50
57
|
|
51
58
|
def cep(ufab = nil)
|
52
|
-
|
59
|
+
uf_code(ufab) + strf('#######')
|
53
60
|
end
|
54
61
|
|
55
62
|
def uf
|
56
|
-
strf
|
63
|
+
strf('%uf_name')
|
57
64
|
end
|
58
65
|
|
59
66
|
def uf_sigla
|
60
|
-
strf
|
67
|
+
strf('%uf_abbr')
|
61
68
|
end
|
62
69
|
|
63
70
|
private
|
64
71
|
|
65
72
|
def uf_code(ufab)
|
66
|
-
|
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
|
5
|
+
strf(username(name || Laranja::Nome.nome) + '@%email')
|
6
6
|
end
|
7
7
|
|
8
8
|
def username(name = nil, sep = ['', '.', '_'])
|
9
|
-
|
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
|
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
|
18
|
+
strf('%last_name')
|
22
19
|
end
|
23
20
|
end
|
24
21
|
end
|
data/lib/laranja/version.rb
CHANGED
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.
|
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:
|
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:
|
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
|
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.
|
124
|
+
rubygems_version: 2.5.1
|
133
125
|
signing_key:
|
134
126
|
specification_version: 4
|
135
|
-
summary: Laranja
|
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
|