lib/obfuscated_identifier.rb in obfuscated_identifier-0.0.2 vs lib/obfuscated_identifier.rb in obfuscated_identifier-0.0.3

- old
+ new

@@ -29,16 +29,26 @@ id = from_identifier(value) find_by_id!(id) end def from_identifier(value) + return nil unless valid_identifier_pattern?(value) + counts = value.each_char.map { |c| @identifier_pattern.index(c.to_s) }.reverse numbers = counts[0..-2].each_with_index.map do |count, index| ((count - counts[index + 1]) - @identifier_offset) % @identifier_pattern.length end + [(counts[-1] - @identifier_offset) % @identifier_pattern.length] numbers.join('').to_i + end + + def valid_identifier_pattern?(value) + return false if value.nil? || value == '' + return false if value.length != @identifier_length + return false if value.match(/[^a-f 0-9]/) + + true end def to_identifier(value) padded_string = pad_number(value)