laranja 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
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