Class: Cielli::Slug

Inherits:
String
  • Object
show all
Defined in:
lib/cielli/slug.rb

Constant Summary collapse

Join =
'-'

Class Method Summary collapse

Class Method Details

.for(*args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/cielli/slug.rb', line 5

def Slug.for(*args)
  options = args.last.is_a?(Hash) ? args.pop : {}

  join = (options[:join] || options['join'] || Join).to_s

  string = args.flatten.compact.join(' ')

  tokens = string.scan(%r`[^\s#{ join }]+`)

  tokens.map! do |token|
    token.gsub(%r`[^\p{L}/.]`, '').downcase
  end

  tokens.map! do |token|
    token.gsub(%r`[/.]`, join * 2)
  end

  tokens.join(join)
end