Module: Obfuscator

Defined in:
lib/obfuscator-rb.rb,
lib/obfuscator/version.rb,
lib/obfuscator/constants.rb,
lib/obfuscator/multilang.rb,
lib/obfuscator/naturalizer.rb,
lib/obfuscator/internal/rng.rb,
lib/obfuscator/date_obfuscator.rb,
lib/obfuscator/number_obfuscator.rb

Overview

Obfuscator is a text obfuscation library that preserves text structure while replacing content with meaningless but natural-looking words. It supports both English and Russian languages, as well as numbers and dates with format preservation.

The gem provides three main obfuscators:

THREAD SAFETY: Individual obfuscator instances are NOT thread-safe. For concurrent operations:

  • Create separate instances per thread

  • Do not share instances across threads

  • Each instance maintains its own RNG state

Error handling is provided through specific error classes:

Examples:

Basic text obfuscation

require 'obfuscator-rb'

obfuscator = Obfuscator::Multilang.new
obfuscator.obfuscate("Hello, World!") # => "Kites, Mefal!"

Number obfuscation with format preservation

num_obf = Obfuscator::NumberObfuscator.new
num_obf.obfuscate(123.45)          # => 567.89
num_obf.obfuscate("1,234.56")      # => "5,678.91"
num_obf.obfuscate("192.168.1.1")   # => "234.567.8.9"
num_obf.obfuscate("ABC-42XY")      # => "DEF-73ZW"

Date obfuscation with constraints

date_obf = Obfuscator::DateObfuscator.new(
  format: :iso,
  constraints: {
    min_year: 2020,
    max_year: 2025,
    preserve_month: true
  }
)
date_obf.obfuscate("2023-12-31") # => "2025-12-15"

Error handling

begin
  obfuscator.obfuscate(input)
rescue Obfuscator::InputError => e
  # Handle invalid input types
rescue Obfuscator::EncodingError => e
  # Handle encoding issues
rescue Obfuscator::Error => e
  # Handle other obfuscation errors
end

See Also:

Defined Under Namespace

Modules: Constants, Internal Classes: DateObfuscator, EncodingError, Error, InputError, Multilang, Naturalizer, NumberObfuscator

Constant Summary collapse

VERSION =
'0.8.1'