rutcl 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OWJhN2I0ZjY0N2I0OTIxZDRhMTI4NjI0ZWNiZWM3Yjg4NmZhNmY4YQ==
4
+ YzEyZDQzMTA1YjQ3MzhlYTNlODRmZmUzZWI2MzgzNGRjNDAxMDI5Mw==
5
5
  data.tar.gz: !binary |-
6
- NjZmNDRmYTAzZTdkM2E4MGU5MzYxMzNhMDEzYjJmMGQ0MGI4MGRlZg==
6
+ ZmVlMGI2MjI1YWM4YzgzMDhlN2ZkNTZkN2YxN2UyZDMxMzJjYzY3YQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- N2Q3Mzc3YTRjMjI3NWRjZTc1Y2ZiZjU2NjM5NTk1YzQwNzZiZmVlM2NkMTBj
10
- NTUxZjJjODRjMDVjZmQ2ZmFiYjY4NGZlOWFmNmY0MGViYWI4MjQ3MmNiZDYz
11
- ZmUxMDg4ZjAyODNkM2E2ZjA4M2U0MmIzN2YyZDg5ZWNlYmNiZjY=
9
+ OGQyN2ViNTBjMTkwNzQwZGU3ODkzODc3MjdkMGQxYWM3YmIyMzYyM2E0NWM0
10
+ ODc3ZTFiNWYzZDRiZmQzNTBhMTU2YzNmNWE3YTUxOWVjYjMzODg3NDZlNzdm
11
+ MjJiZGIxMzExZDA2YWZkZDNmZjBjZjVkN2VkNzM5NTZhZGM4OWM=
12
12
  data.tar.gz: !binary |-
13
- MDg0NzY3NTNlNTc1OWUzNDc4ZDkwMjdiOTI0OTdlYjg1NDQ4MGVmMTZjN2Y4
14
- MTY2NzZlOTBhOTFhN2FmYTFmYjE5OGIyNjViZmU3NDU2MWQyMTgwZTQ4M2M2
15
- ZWZiYjE4OGYzYjJlYzRjOTgzYjQzZDlmNTllMGVjNWZjOThhZjE=
13
+ YTUxOGQ5NmQxNmU4YzU3OTIyNGU2ZDU5YjQzNzU3ZjRlNzI1ODk1NmM2ZmJi
14
+ M2FhMjhjNjk2NmY2MTg1MjE4MDNhMDVjYjk2Y2JmYWU3YzlhMzVhMmFhNGM0
15
+ OWFlNGEyOTM1NTFkZjY0N2Y1NjY0NjRmZjc2NjhmNTkxOGQyMjQ=
data/README.md CHANGED
@@ -24,24 +24,24 @@ La gema habilita la clase Rut, la que cuenta con tres métodos:
24
24
 
25
25
  ```ruby
26
26
  # Validación
27
- Rut.valid?("16365637k") #rut válido 16.365.637-k
27
+ Rutcl::Rut.valid?("16365637k") #rut válido 16.365.637-k
28
28
  #=> true
29
- Rut.valid?("163656370") #rut inválido 16.365.637-0
29
+ Rutcl::Rut.valid?("163656370") #rut inválido 16.365.637-0
30
30
  #=> false
31
31
 
32
32
  # Cómputo de dígito verificador
33
- Rut.dv(1) #rut 1-9
33
+ Rutcl::Rut.dv(1) #rut 1-9
34
34
  #=> 9
35
- Rut.dv(16365637) #rut 16.365.637-k
35
+ Rutcl::Rut.dv(16365637) #rut 16.365.637-k
36
36
  #=> "k"
37
37
 
38
38
  # Formateo
39
- Rut.pretty("16365637k")
39
+ Rutcl::Rut.pretty("16365637k")
40
40
  #=> "16.365.637-k"
41
- Rut.pretty("14569484-1")
41
+ Rutcl::Rut.pretty("14569484-1")
42
42
  #=> "14.569.484-1"
43
- Rut.pretty("14569484-0")
43
+ Rutcl::Rut.pretty("14569484-0")
44
44
  ArgumentError: "El rut 14569484-0 es inválido"
45
- Rut.pretty("14569484-0", false)
45
+ Rutcl::Rut.pretty("14569484-0", false)
46
46
  #=> "14.569.484-0"
47
47
  ```
data/lib/rut.rb CHANGED
@@ -1,42 +1,43 @@
1
1
  #coding: utf-8
2
+ module Rutcl
3
+ class Rut
2
4
 
3
- class Rut
5
+ VERSION = "1.0.1"
4
6
 
5
- VERSION = "1.0.0"
6
-
7
- class << self
8
- def dv rut
9
- raise ArgumentError, "El rut es nulo" if rut.nil?
10
- if rut.is_a? String
11
- raise ArgumentError, "El rut #{rut} debe ser un número" unless rut =~ /^\d{1,8}$/
12
- end
13
- rut = rut.to_s
14
- x=9
15
- t=0
16
- rut.reverse.split(//).each do |d|
17
- t+=d.to_i*x
18
- x=(x==4) ? 9 : x - 1
7
+ class << self
8
+ def dv rut
9
+ raise ArgumentError, "El rut es nulo" if rut.nil?
10
+ if rut.is_a? String
11
+ raise ArgumentError, "El rut #{rut} debe ser un número" unless rut =~ /^\d{1,8}$/
12
+ end
13
+ rut = rut.to_s
14
+ x=9
15
+ t=0
16
+ rut.reverse.split(//).each do |d|
17
+ t+=d.to_i*x
18
+ x=(x==4) ? 9 : x - 1
19
+ end
20
+ r= t % 11
21
+ (r==10) ? "k" : r
19
22
  end
20
- r= t % 11
21
- (r==10) ? "k" : r
22
- end
23
23
 
24
- def valid? rut
25
- return true if pretty(rut) rescue false
26
- end
24
+ def valid? rut
25
+ return true if pretty(rut) rescue false
26
+ end
27
27
 
28
- def pretty rut, validate=true
29
- if rut.is_a? String
30
- rut.gsub! /[.\-\ ]/, ""
31
- raise ArgumentError, "El rut está vacío" unless rut.length > 0
32
- raise ArgumentError, "El rut '#{rut}' contiene caracteres inválidos" unless rut =~ /^\d{1,8}[\dkK]$/
28
+ def pretty rut, validate=true
29
+ if rut.is_a? String
30
+ rut.gsub! /[.\-\ ]/, ""
31
+ raise ArgumentError, "El rut está vacío" unless rut.length > 0
32
+ raise ArgumentError, "El rut '#{rut}' contiene caracteres inválidos" unless rut =~ /^\d{1,8}[\dkK]$/
33
+ end
34
+ rut = rut.to_s
35
+ thisdv = rut[-1, 1]
36
+ rut = rut[0, rut.length - 1]
37
+ raise ArgumentError, "El rut #{rut}-#{thisdv} es inválido" if validate && dv(rut).to_s.upcase != thisdv.upcase
38
+ rut = rut.reverse.gsub(/.{3}/, '\0.').gsub(/\.$/, '').reverse
39
+ "#{rut}-#{thisdv}"
33
40
  end
34
- rut = rut.to_s
35
- thisdv = rut[-1, 1]
36
- rut = rut[0, rut.length - 1]
37
- raise ArgumentError, "El rut #{rut}-#{thisdv} es inválido" if validate && dv(rut).to_s.upcase != thisdv.upcase
38
- rut = rut.reverse.gsub(/.{3}/, '\0.').gsub(/\.$/, '').reverse
39
- "#{rut}-#{thisdv}"
40
41
  end
41
42
  end
42
43
  end
data/rut.gemspec CHANGED
@@ -5,7 +5,7 @@ require "rut"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "rutcl"
8
- spec.version = Rut::VERSION
8
+ spec.version = Rutcl::Rut::VERSION
9
9
  spec.authors = ["Pablo Marambio"]
10
10
  spec.email = ["yo@pablomarambio.cl"]
11
11
  spec.description = "Validación y formato de RUTs chilenos"
@@ -1,51 +1,51 @@
1
1
  #coding: utf-8
2
2
  require 'test_helper'
3
3
 
4
- describe Rut do
4
+ describe Rutcl::Rut do
5
5
  describe "dv" do
6
6
  it "should only accept numbers" do
7
- assert_raises(ArgumentError) { Rut.dv "hola" }
8
- assert_raises(ArgumentError) { Rut.dv "1234a5678" }
7
+ assert_raises(ArgumentError) { Rutcl::Rut.dv "hola" }
8
+ assert_raises(ArgumentError) { Rutcl::Rut.dv "1234a5678" }
9
9
  end
10
10
  describe "calculations" do
11
11
  describe "for numeric ruts" do
12
12
  it "should work with short ruts" do
13
- Rut.dv(1).must_equal 9
14
- Rut.dv(2).must_equal 7
15
- Rut.dv(12).must_equal 4
16
- Rut.dv(104).must_equal "k"
17
- Rut.dv(1000).must_equal 6
18
- Rut.dv(10000).must_equal 5
19
- Rut.dv(100001).must_equal 2
13
+ Rutcl::Rut.dv(1).must_equal 9
14
+ Rutcl::Rut.dv(2).must_equal 7
15
+ Rutcl::Rut.dv(12).must_equal 4
16
+ Rutcl::Rut.dv(104).must_equal "k"
17
+ Rutcl::Rut.dv(1000).must_equal 6
18
+ Rutcl::Rut.dv(10000).must_equal 5
19
+ Rutcl::Rut.dv(100001).must_equal 2
20
20
  end
21
21
  it "should work with large ruts" do
22
- Rut.dv(7956772).must_equal 8
23
- Rut.dv(8457638).must_equal 7
24
- Rut.dv(5954893).must_equal "k"
25
- Rut.dv(16365637).must_equal "k"
26
- Rut.dv(18439790).must_equal 0
27
- Rut.dv(11111111).must_equal 1
28
- Rut.dv(14569484).must_equal 1
22
+ Rutcl::Rut.dv(7956772).must_equal 8
23
+ Rutcl::Rut.dv(8457638).must_equal 7
24
+ Rutcl::Rut.dv(5954893).must_equal "k"
25
+ Rutcl::Rut.dv(16365637).must_equal "k"
26
+ Rutcl::Rut.dv(18439790).must_equal 0
27
+ Rutcl::Rut.dv(11111111).must_equal 1
28
+ Rutcl::Rut.dv(14569484).must_equal 1
29
29
  end
30
30
  end
31
31
  describe "for string ruts" do
32
32
  it "should work correct dvs" do
33
- Rut.dv("1").must_equal 9
34
- Rut.dv("2").must_equal 7
35
- Rut.dv("12").must_equal 4
36
- Rut.dv("104").must_equal "k"
37
- Rut.dv("1000").must_equal 6
38
- Rut.dv("10000").must_equal 5
39
- Rut.dv("100001").must_equal 2
33
+ Rutcl::Rut.dv("1").must_equal 9
34
+ Rutcl::Rut.dv("2").must_equal 7
35
+ Rutcl::Rut.dv("12").must_equal 4
36
+ Rutcl::Rut.dv("104").must_equal "k"
37
+ Rutcl::Rut.dv("1000").must_equal 6
38
+ Rutcl::Rut.dv("10000").must_equal 5
39
+ Rutcl::Rut.dv("100001").must_equal 2
40
40
  end
41
41
  it "should work with large ruts" do
42
- Rut.dv("7956772").must_equal 8
43
- Rut.dv("8457638").must_equal 7
44
- Rut.dv("5954893").must_equal "k"
45
- Rut.dv("16365637").must_equal "k"
46
- Rut.dv("18439790").must_equal 0
47
- Rut.dv("11111111").must_equal 1
48
- Rut.dv("14569484").must_equal 1
42
+ Rutcl::Rut.dv("7956772").must_equal 8
43
+ Rutcl::Rut.dv("8457638").must_equal 7
44
+ Rutcl::Rut.dv("5954893").must_equal "k"
45
+ Rutcl::Rut.dv("16365637").must_equal "k"
46
+ Rutcl::Rut.dv("18439790").must_equal 0
47
+ Rutcl::Rut.dv("11111111").must_equal 1
48
+ Rutcl::Rut.dv("14569484").must_equal 1
49
49
  end
50
50
  end
51
51
  end
@@ -1,61 +1,61 @@
1
1
  #coding: utf-8
2
2
  require 'test_helper'
3
3
 
4
- describe Rut do
4
+ describe Rutcl::Rut do
5
5
  describe "pretty" do
6
6
  describe "validations" do
7
7
  it "should detect empty ruts" do
8
- assert_raises(ArgumentError) { Rut.pretty "" }
9
- assert_raises(ArgumentError) { Rut.pretty nil }
8
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty "" }
9
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty nil }
10
10
  end
11
11
  it "should detect non-ruts" do
12
- assert_raises(ArgumentError) { Rut.pretty "hola" }
13
- assert_raises(ArgumentError) { Rut.pretty "14x569-484-1" }
14
- assert_raises(ArgumentError) { Rut.pretty "14569a484-1" }
15
- assert_raises(ArgumentError) { Rut.pretty "14569484/1" }
16
- assert_raises(ArgumentError) { Rut.pretty "14 569x484 1" }
12
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty "hola" }
13
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty "14x569-484-1" }
14
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty "14569a484-1" }
15
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty "14569484/1" }
16
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty "14 569x484 1" }
17
17
  end
18
18
  it "should detect invalid ruts" do
19
- assert_raises(ArgumentError) { Rut.pretty "1-8" }
20
- assert_raises(ArgumentError) { Rut.pretty "100.001-1" }
21
- assert_raises(ArgumentError) { Rut.pretty "14.569.484-2" }
19
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty "1-8" }
20
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty "100.001-1" }
21
+ assert_raises(ArgumentError) { Rutcl::Rut.pretty "14.569.484-2" }
22
22
  end
23
23
  it "should dismiss invalid ruts if told so" do
24
- Rut.pretty("1-8", false).must_be_instance_of String
25
- Rut.pretty("100.001-1", false).must_be_instance_of String
26
- Rut.pretty("14.569.484-2", false).must_be_instance_of String
24
+ Rutcl::Rut.pretty("1-8", false).must_be_instance_of String
25
+ Rutcl::Rut.pretty("100.001-1", false).must_be_instance_of String
26
+ Rutcl::Rut.pretty("14.569.484-2", false).must_be_instance_of String
27
27
  end
28
28
  end
29
29
  describe "formatting" do
30
30
  it "should work with unformatted ruts" do
31
- Rut.pretty(19).must_equal "1-9"
32
- Rut.pretty(124).must_equal "12-4"
33
- Rut.pretty("104k").must_equal "104-k"
34
- Rut.pretty("10006").must_equal "1.000-6"
35
- Rut.pretty("100005").must_equal "10.000-5"
36
- Rut.pretty("1000012").must_equal "100.001-2"
37
- Rut.pretty("79567728").must_equal "7.956.772-8"
38
- Rut.pretty("145694841").must_equal "14.569.484-1"
31
+ Rutcl::Rut.pretty(19).must_equal "1-9"
32
+ Rutcl::Rut.pretty(124).must_equal "12-4"
33
+ Rutcl::Rut.pretty("104k").must_equal "104-k"
34
+ Rutcl::Rut.pretty("10006").must_equal "1.000-6"
35
+ Rutcl::Rut.pretty("100005").must_equal "10.000-5"
36
+ Rutcl::Rut.pretty("1000012").must_equal "100.001-2"
37
+ Rutcl::Rut.pretty("79567728").must_equal "7.956.772-8"
38
+ Rutcl::Rut.pretty("145694841").must_equal "14.569.484-1"
39
39
  end
40
40
  it "should work with partially formatted ruts" do
41
- Rut.pretty("1000-6").must_equal "1.000-6"
42
- Rut.pretty("10000-5").must_equal "10.000-5"
43
- Rut.pretty("100001-2").must_equal "100.001-2"
44
- Rut.pretty("7956772-8").must_equal "7.956.772-8"
45
- Rut.pretty("14569484-1").must_equal "14.569.484-1"
41
+ Rutcl::Rut.pretty("1000-6").must_equal "1.000-6"
42
+ Rutcl::Rut.pretty("10000-5").must_equal "10.000-5"
43
+ Rutcl::Rut.pretty("100001-2").must_equal "100.001-2"
44
+ Rutcl::Rut.pretty("7956772-8").must_equal "7.956.772-8"
45
+ Rutcl::Rut.pretty("14569484-1").must_equal "14.569.484-1"
46
46
  end
47
47
  it "should work with fully formatted ruts" do
48
- Rut.pretty("1.000-6").must_equal "1.000-6"
49
- Rut.pretty("10.000-5").must_equal "10.000-5"
50
- Rut.pretty("100.001-2").must_equal "100.001-2"
51
- Rut.pretty("7.956.772-8").must_equal "7.956.772-8"
52
- Rut.pretty("14.569.484-1").must_equal "14.569.484-1"
48
+ Rutcl::Rut.pretty("1.000-6").must_equal "1.000-6"
49
+ Rutcl::Rut.pretty("10.000-5").must_equal "10.000-5"
50
+ Rutcl::Rut.pretty("100.001-2").must_equal "100.001-2"
51
+ Rutcl::Rut.pretty("7.956.772-8").must_equal "7.956.772-8"
52
+ Rutcl::Rut.pretty("14.569.484-1").must_equal "14.569.484-1"
53
53
  end
54
54
  it "should work with ruts with spaces" do
55
- Rut.pretty("1 9").must_equal "1-9"
56
- Rut.pretty(" 12 4").must_equal "12-4"
57
- Rut.pretty("104 k").must_equal "104-k"
58
- Rut.pretty("100 0 6").must_equal "1.000-6"
55
+ Rutcl::Rut.pretty("1 9").must_equal "1-9"
56
+ Rutcl::Rut.pretty(" 12 4").must_equal "12-4"
57
+ Rutcl::Rut.pretty("104 k").must_equal "104-k"
58
+ Rutcl::Rut.pretty("100 0 6").must_equal "1.000-6"
59
59
  end
60
60
  end
61
61
  end
@@ -1,27 +1,27 @@
1
1
  #coding: utf-8
2
2
  require 'test_helper'
3
3
 
4
- describe Rut do
4
+ describe Rutcl::Rut do
5
5
  describe "validations" do
6
6
  it "should detect invalid ruts" do
7
- Rut.valid?(1).must_equal false
8
- Rut.valid?(123).must_equal false
9
- Rut.valid?("1040").must_equal false
10
- Rut.valid?("10005").must_equal false
11
- Rut.valid?("100003").must_equal false
12
- Rut.valid?("1000011").must_equal false
13
- Rut.valid?("79567729").must_equal false
14
- Rut.valid?("14569484k").must_equal false
7
+ Rutcl::Rut.valid?(1).must_equal false
8
+ Rutcl::Rut.valid?(123).must_equal false
9
+ Rutcl::Rut.valid?("1040").must_equal false
10
+ Rutcl::Rut.valid?("10005").must_equal false
11
+ Rutcl::Rut.valid?("100003").must_equal false
12
+ Rutcl::Rut.valid?("1000011").must_equal false
13
+ Rutcl::Rut.valid?("79567729").must_equal false
14
+ Rutcl::Rut.valid?("14569484k").must_equal false
15
15
  end
16
16
  it "should recognize valid ruts" do
17
- Rut.valid?(19).must_equal true
18
- Rut.valid?(124).must_equal true
19
- Rut.valid?("104k").must_equal true
20
- Rut.valid?("10006").must_equal true
21
- Rut.valid?("100005").must_equal true
22
- Rut.valid?("1000012").must_equal true
23
- Rut.valid?("79567728").must_equal true
24
- Rut.valid?("145694841").must_equal true
17
+ Rutcl::Rut.valid?(19).must_equal true
18
+ Rutcl::Rut.valid?(124).must_equal true
19
+ Rutcl::Rut.valid?("104k").must_equal true
20
+ Rutcl::Rut.valid?("10006").must_equal true
21
+ Rutcl::Rut.valid?("100005").must_equal true
22
+ Rutcl::Rut.valid?("1000012").must_equal true
23
+ Rutcl::Rut.valid?("79567728").must_equal true
24
+ Rutcl::Rut.valid?("145694841").must_equal true
25
25
  end
26
26
  end
27
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rutcl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Marambio