rutcl 1.0.0 → 1.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,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