module Stringex module Configuration class ActsAsUrl < Base def initialize(options = {}) if options[:scope] options[:scope_for_url] = options.delete(:scope) end super end def string_extensions_settings [ :allow_slash, :exclude, :force_downcase, :limit, :replace_whitespace_with, :truncate_words ].inject(Hash.new){|m, x| m[x] = settings.send(x); m} end def self.settings @settings end private def default_settings self.class.default_settings end def self.default_settings @default_settings ||= { allow_duplicates: false, callback_method: :before_validation, duplicate_count_separator: "-", enforce_uniqueness_on_sti_base_class: false, only_when_blank: false, scope_for_url: nil, sync_url: false, url_attribute: "url", blacklist: %w[new], blacklist_policy: lambda { |instance, url| "#{url}-#{instance.class.to_s.downcase}" } }.merge(Stringex::Configuration::StringExtensions.new.default_settings) end end end end