Module: Ardb::HasSlug::Slug
- Defined in:
- lib/ardb/has_slug.rb
Constant Summary collapse
- DEFAULT_PREPROCESSOR =
no-op
proc{ |slug| slug }
Class Method Summary collapse
Class Method Details
.new(string, options = nil) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/ardb/has_slug.rb', line 83 def self.new(string, = nil) ||= {} preprocessor = [:preprocessor] || DEFAULT_PREPROCESSOR separator = [:separator] || DEFAULT_SEPARATOR allow_underscores = [:allow_underscores] regexp_escaped_sep = Regexp.escape(separator) slug = preprocessor.call(string.to_s) # Turn unwanted chars into the separator slug.gsub!(/[^\w#{regexp_escaped_sep}]+/, separator) # Turn underscores into the separator, unless allowing slug.gsub!(/_/, separator) unless allow_underscores # No more than one of the separator in a row. slug.gsub!(/#{regexp_escaped_sep}{2,}/, separator) # Remove leading/trailing separator. slug.gsub!(/\A#{regexp_escaped_sep}|#{regexp_escaped_sep}\z/, '') slug end |