module CompositePrimaryKeys::Utils
Public Class Methods
cpk_as_array?(value, pk_size)
click to toggle source
# File lib/composite_primary_keys/composite_arrays.rb, line 75 def cpk_as_array?(value, pk_size) # We don't permit Array to be an element of CPK. value.is_a?(Array) && value.size == pk_size && value.none? { |item| item.is_a?(Array) } end
cpk_as_string?(value, pk_size)
click to toggle source
# File lib/composite_primary_keys/composite_arrays.rb, line 80 def cpk_as_string?(value, pk_size) value.is_a?(String) && value.count(ID_SEP) == pk_size - 1 end
escape_string_key(key)
click to toggle source
# File lib/composite_primary_keys/composite_arrays.rb, line 62 def escape_string_key(key) key.gsub(Regexp.union(ESCAPE_CHAR, ID_SEP)) do |unsafe| "#{ESCAPE_CHAR}#{unsafe.ord.to_s(16).upcase}" end end
unescape_string_key(key)
click to toggle source
# File lib/composite_primary_keys/composite_arrays.rb, line 68 def unescape_string_key(key) key.gsub(/#{Regexp.escape(ESCAPE_CHAR)}[0-9a-fA-F]{2}/) do |escaped| char = escaped.slice(1, 2).hex.chr (char == ESCAPE_CHAR || char == ID_SEP) ? char : escaped end end