Sha256: 948948ddbbedc8290f59eeadde8a94b704b3b288e3fad3ee50636b29d9eb982a

Contents?: true

Size: 1.07 KB

Versions: 5

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

module Faker
  class ChileRut < Base
    class << self
      @last_rut = nil

      # Fixed param added for testing a specific RUT and check digit combination.
      def rut(min_rut: 1, fixed: false)
        @last_rut = fixed ? min_rut : rand_in_range(min_rut, 99_999_999)
      end

      def dv
        split_reversed_rut = @last_rut.to_s.reverse.split('')
        seq = [2, 3, 4, 5, 6, 7]
        i = 0
        digit_sum = split_reversed_rut.reduce(0) do |sum, n|
          partial_result = sum.to_i + (n.to_i * seq[i])
          i = i == 5 ? 0 : i + 1
          partial_result
        end
        partial_check_digit = 11 - (digit_sum % 11)
        if partial_check_digit == 11
          '0'
        elsif partial_check_digit == 10
          'k'
        else
          partial_check_digit.to_s
        end
      end

      # Alias for english speaking devs.
      def check_digit
        dv
      end

      def full_rut(min_rut: 0, fixed: false)
        "#{rut(min_rut: min_rut, fixed: fixed)}-#{dv}"
      end

      attr_reader :last_rut
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
faker-2.1.2 lib/faker/default/chile_rut.rb
faker-2.1.1 lib/faker/default/chile_rut.rb
faker-2.1.0 lib/faker/default/chile_rut.rb
faker-2.0.0 lib/faker/default/chile_rut.rb
faker-2.0 lib/faker/default/chile_rut.rb