chilean_rut 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/chilean_rut.rb +127 -0
  3. metadata +78 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 022c6440fefaaa336e005865a7970c4d96fcedec
4
+ data.tar.gz: d1c90f9a28a7acdc23ee34a4e03fdb88e340494f
5
+ SHA512:
6
+ metadata.gz: 621d9df78166cc88081ec89ff87d0aba4d362628a5fec8000e2474e5a7827aece0509c936df6d9650a560c689bf9f6b16e59b920914eb27e1327832d44bddcd4
7
+ data.tar.gz: d24f91336346c5e48051a2ca22af53b1ab5fb682296d5a386d4098c7ce844d2b17c5d96d7d5e3543c999827172b3436543cbe0b34f82f7b5ef9f51afc271797a
@@ -0,0 +1,127 @@
1
+ ##
2
+ #All functions are just defined statically in this module
3
+ class RUT
4
+
5
+ ##
6
+ #Returns boolean wether the given string is a valid Digito Verificador character or not
7
+ def self.valid_dv(dv)
8
+ ['0','1','2','3','4','5','6','7','8','9','k','K'].include?(dv)
9
+ end
10
+
11
+ ##
12
+ #Every R.U.T. has a single valid Digito Verificador which is calculated based on its digits
13
+ #
14
+ #Given a R.U.T. this function returns its Digito Verificador as a string
15
+ def self.get_dv(rut)
16
+ suma=0
17
+ mul=2
18
+ rut.reverse.split("").each do |c|
19
+ suma=suma+c.to_i*mul
20
+ if mul==7
21
+ mul=2
22
+ else
23
+ mul+=1
24
+ end
25
+ end
26
+ res=suma%11
27
+ if res==1
28
+ return 'k'
29
+ elsif res==0
30
+ return '0'
31
+ else
32
+ return 11-res
33
+ end
34
+ end
35
+
36
+ ##
37
+ #Given a R.U.T. including its Digito Verificador (whatever the format, i.e. with or without points & hyphens)
38
+ #
39
+ #This function returns boolean wether the Digito Verificador matches the R.U.T. or not
40
+ def self.validate_dv(crut)
41
+ return false if crut.size < 2
42
+ if crut.size > 2
43
+ rut=crut[0...crut.size-1]
44
+ else
45
+ rut=crut[0]
46
+ end
47
+ dv=crut[crut.size-1]
48
+ return false if !valid_dv(dv)
49
+ if rut.nil? || dv.nil?
50
+ return 0 #TODO ?
51
+ end
52
+ dvr=get_dv(rut)
53
+ dvr.to_s==dv.downcase
54
+ end
55
+
56
+ ##
57
+ #Strips a R.U.T. format (points & hyphens)
58
+ def self.remove_format(rut)
59
+ rut=rut.delete "."
60
+ rut=rut.delete "-"
61
+ end
62
+
63
+ #Strips a R.U.T. format (only points)
64
+ def self.remove_points(rut)
65
+ rut=rut.delete "."
66
+ end
67
+
68
+ #Strips a R.U.T. format (only hyphens)
69
+ def self.remove_hyphens(rut)
70
+ rut=rut.delete "-"
71
+ end
72
+
73
+ ##
74
+ #Given a R.U.T. (whatever the format, i.e. with or without points & hyphens) this method returns boolean wether it is valid or not
75
+ def self.validate(texto)
76
+ texto=self.remove_format(texto)
77
+ return false if texto.size < 2
78
+ texto.split("").each do |c|
79
+ return false if !valid_dv(c)
80
+ end
81
+ invertido=texto.reverse
82
+ dtexto=invertido[0]+"-"
83
+ cnt=0
84
+ i=1
85
+ j=2
86
+ for x in 1...texto.size do
87
+ if cnt==3
88
+ dtexto=dtexto+"."
89
+ j+=1
90
+ dtexto=dtexto+invertido[x]
91
+ cnt=1
92
+ else
93
+ dtexto=dtexto+invertido[x]
94
+ cnt+=1
95
+ end
96
+ i+=1
97
+ j+=1
98
+ end
99
+ invertido=""
100
+ i=dtexto.size-1
101
+ j=0
102
+ (0..i).to_a.reverse.each do |y|
103
+ invertido=invertido+dtexto[y]
104
+ j+=1
105
+ end
106
+ return validate_dv(texto)
107
+ end
108
+
109
+ ##
110
+ #This method will give a raw R.U.T. string its proper format adding the right points & hyphens
111
+ def self.format(raw_rut)
112
+ rut = raw_rut.to_s.delete '.-'
113
+ if rut.nil? || rut.empty?
114
+ return rut
115
+ end
116
+ rut_end = rut[rut.length - 1, rut.length]
117
+ rut_init_temp = rut[0, rut.length - 1]
118
+ rut_init = ''
119
+ while rut_init_temp.length > 3 do
120
+ rut_init = '.' + rut_init_temp[rut_init_temp.length - 3, rut_init_temp.length] + rut_init
121
+ rut_init_temp = rut_init_temp[0, rut_init_temp.length - 3]
122
+ end
123
+ rut = rut_init_temp+rut_init+'-'+rut_end
124
+ return rut.upcase
125
+ end
126
+
127
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chilean_rut
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.2'
5
+ platform: ruby
6
+ authors:
7
+ - Gonzalo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-08-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: test-unit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.2.1
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.2.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: pry
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.10.4
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.10.4
47
+ description:
48
+ email: contacto@gonzalorios.cl
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/chilean_rut.rb
54
+ homepage: https://github.com/xalupeao/chilean_rut
55
+ licenses:
56
+ - MIT
57
+ metadata: {}
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 2.6.6
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: Formato y validacion de RUT Chileno
78
+ test_files: []