Sha256: 58ffb15fb91150fb2f7694944f452b5e6fc453ad1a0c86b978c464e49678cb2c

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

require "active_support/all"

require "itax_code/version"
require "itax_code/utils"
require "itax_code/encoder"
require "itax_code/parser"

module ItaxCode
  Error = Class.new(StandardError)

  class << self
    # Encodes the user tax code.
    #
    # @param [Hash] data The user attributes
    #
    # @option data [String]       :surname
    # @option data [String]       :name
    # @option data [String]       :gender
    # @option data [String, Date] :birthdate
    # @option data [String]       :birthplace
    #
    # @return [String]
    def encode(data)
      Encoder.new(data).encode
    end

    # Decodes the tax code in its components.
    #
    # @param [String] tax_code The user tax code
    #
    # @return [Hash]
    def decode(tax_code)
      Parser.new(tax_code).decode
    end

    # Checks the given tax code validity.
    #
    # @param [String] tax_code The user tax code
    #
    # @return [Boolean]
    def valid?(tax_code)
      decode(tax_code)
      true
    rescue Parser::Error
      false
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
itax_code-2.0.1 lib/itax_code.rb
itax_code-2.0.0 lib/itax_code.rb