From 4bf1ee99766104928e2a637cca0c622ab8064878 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Mon, 5 Jan 2026 16:09:24 +0100 Subject: [PATCH] =?UTF-8?q?Fix=20Czechia=20to=20accept=20`CZ`=20prefix=20?= =?UTF-8?q?=F0=9F=87=A8=F0=9F=87=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + lib/tin_valid/czechia_tin.rb | 10 ++++++---- spec/tin_valid/czechia_tin_spec.rb | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 683313e..708b9c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ Fixes: - Fix Belgium to ignore `-` and `.` 🇧🇪 +- Fix Czechia to accept `CZ` prefix 🇨🇿 ## [1.3.0] - 2025-12-12 diff --git a/lib/tin_valid/czechia_tin.rb b/lib/tin_valid/czechia_tin.rb index 8ed1ff5..d5e2f83 100644 --- a/lib/tin_valid/czechia_tin.rb +++ b/lib/tin_valid/czechia_tin.rb @@ -37,10 +37,12 @@ def valid? = valid_v1? || valid_v2? }x private_constant :MATCHER_V2 + def normalized = @normalized ||= tin&.delete_prefix("CZ") + def valid_v1? - match = MATCHER_V1.match(tin) + match = MATCHER_V1.match(normalized) return false unless match - return false if tin == "000000000" + return false if normalized == "000000000" return true if birth_date.nil? return false if year_of_birth >= 1954 @@ -55,9 +57,9 @@ def valid_v1? end def valid_v2? - match = MATCHER_V2.match(tin) + match = MATCHER_V2.match(normalized) return false unless match - return false if tin == "0000000000" + return false if normalized == "0000000000" return true if birth_date.nil? return false if year_of_birth < 1954 diff --git a/spec/tin_valid/czechia_tin_spec.rb b/spec/tin_valid/czechia_tin_spec.rb index 0437f7c..9a1fef2 100644 --- a/spec/tin_valid/czechia_tin_spec.rb +++ b/spec/tin_valid/czechia_tin_spec.rb @@ -4,6 +4,7 @@ describe "#valid?" do valid_values = [ ["420901999", nil], + ["CZ420901999", nil], ["420901/999", nil], ["0009019999", nil], ["000901/9999", nil],