Module: Israeli::Sanitizer

Defined in:
lib/israeli/sanitizer.rb

Overview

Input sanitization utilities for Israeli validators.

Provides consistent normalization of user input across all validators, handling common formatting variations like spaces, hyphens, and international phone prefixes.

Constant Summary collapse

STRIP_CHARS =

Common separator characters to strip from input

/[\s\-.+]/

Class Method Summary collapse

Class Method Details

.digits_only(value) ⇒ String?

Extracts only digit characters from input.

Strips common formatting characters (spaces, hyphens, dots) and converts the input to a string. Returns nil for nil input.

Examples:

Basic usage

Sanitizer.digits_only("123-456-789") # => "123456789"
Sanitizer.digits_only("12 34 56")    # => "123456"
Sanitizer.digits_only(123456)        # => "123456"
Sanitizer.digits_only(nil)           # => nil

Parameters:

  • value (String, Integer, nil)

    The value to sanitize

Returns:

  • (String, nil)

    String containing only digits, or nil



26
27
28
29
30
# File 'lib/israeli/sanitizer.rb', line 26

def self.digits_only(value)
  return nil if value.nil?

  value.to_s.gsub(STRIP_CHARS, "")
end

.normalize_phone(value) ⇒ String?

Normalizes phone numbers by stripping international prefixes.

Handles common Israeli international dialing formats:

  • +972 (standard international)
  • 972 (without plus)
  • 00972 (international access code)

Examples:

International formats

Sanitizer.normalize_phone("+972501234567")   # => "0501234567"
Sanitizer.normalize_phone("972-50-123-4567") # => "0501234567"
Sanitizer.normalize_phone("00972501234567")  # => "0501234567"

Domestic formats (unchanged)

Sanitizer.normalize_phone("050-123-4567")    # => "0501234567"
Sanitizer.normalize_phone("0501234567")      # => "0501234567"

Parameters:

  • value (String, nil)

    The phone number to normalize

Returns:

  • (String, nil)

    Normalized domestic phone number, or nil



50
51
52
53
54
55
56
# File 'lib/israeli/sanitizer.rb', line 50

def self.normalize_phone(value)
  cleaned = digits_only(value)
  return nil if cleaned.nil?

  # Strip international prefixes and add leading zero
  cleaned.sub(/\A(00972|972)/, "0")
end