Module: Woods::FilenameUtils
- Included in:
- Extractor, Resilience::IndexValidator
- Defined in:
- lib/woods/filename_utils.rb
Overview
Shared filename helpers for converting unit identifiers to safe filenames.
Used by Extractor (writing) and IndexValidator (reading) to ensure filename generation is consistent across both sides.
Instance Method Summary collapse
-
#collision_safe_filename(identifier) ⇒ String
Convert an identifier to a collision-safe filename (current format).
-
#safe_filename(identifier) ⇒ String
Convert an identifier to a safe filename (legacy format).
Instance Method Details
#collision_safe_filename(identifier) ⇒ String
Convert an identifier to a collision-safe filename (current format).
Appends a short SHA256 digest to disambiguate identifiers that normalize to the same safe_filename.
26 27 28 29 30 |
# File 'lib/woods/filename_utils.rb', line 26 def collision_safe_filename(identifier) base = identifier.gsub('::', '__').gsub(/[^a-zA-Z0-9_-]/, '_') digest = Digest::SHA256.hexdigest(identifier)[0, 8] "#{base}_#{digest}.json" end |
#safe_filename(identifier) ⇒ String
Convert an identifier to a safe filename (legacy format).
15 16 17 |
# File 'lib/woods/filename_utils.rb', line 15 def safe_filename(identifier) "#{identifier.gsub('::', '__').gsub(/[^a-zA-Z0-9_-]/, '_')}.json" end |