Class: RedQuilt::Slug::Counter

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

Overview

Deduplicates slugs within a single document: the first occurrence of a base keeps it, later collisions get ‘-1`, `-2`, … suffixes (matching GitHub’s anchor numbering).

Instance Method Summary collapse

Constructor Details

#initializeCounter

Returns a new instance of Counter.



26
27
28
# File 'lib/red_quilt/slug.rb', line 26

def initialize
  @seen = Hash.new(0)
end

Instance Method Details

#generate(text) ⇒ Object



30
31
32
33
34
35
# File 'lib/red_quilt/slug.rb', line 30

def generate(text)
  base = Slug.slugify(text)
  count = @seen[base]
  @seen[base] += 1
  count.zero? ? base : "#{base}-#{count}"
end