lib/shib_rack/attribute_mapping.rb in shib-rack-0.1.0 vs lib/shib_rack/attribute_mapping.rb in shib-rack-0.2.0

- old
+ new

@@ -14,17 +14,21 @@ end end def map_multi_value(**mappings) mappings.each do |attr, header| - mapper = ->(env) { env[header].split(';') } + mapper = ->(env) { parse_multi_value(env[header]) } add_attribute_mapping(attr, mapper) end end def add_attribute_mapping(attr, mapper) raise "Conflicting mapping for `#{attr}`" if attribute_mappings[attr] attribute_mappings[attr] = mapper + end + + def parse_multi_value(value) + value.split(/(?<!\\);/).map { |x| x.gsub('\;', ';') } end end def self.included(base) base.extend(ClassMethods)