Module: Kilt::Slugger

Defined in:
lib/kilt/slugger.rb

Class Method Summary collapse

Class Method Details

.lookup_the_suggested_prefix_for(object) ⇒ Object



47
48
49
# File 'lib/kilt/slugger.rb', line 47

def lookup_the_suggested_prefix_for object
  Kilt.send(object['type'].to_sym)['slug_prefix']
end

.make_slug_unique(slug) ⇒ Object



20
21
22
# File 'lib/kilt/slugger.rb', line 20

def make_slug_unique slug
  "#{slug}-#{(Time.now.to_f * 1000).to_i}"
end

.possibly_duplicate_slug_for(object) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/kilt/slugger.rb', line 24

def possibly_duplicate_slug_for object
  if object['slug'].to_s.strip == ''
    if prefix = prefix_for(object)
      "#{prefix}-#{slugified_value_for(object)}"
    else
      slugified_value_for(object)
    end
  else
    "#{object['slug']}"
  end
end

.prefix_for(object) ⇒ Object



40
41
42
43
44
45
# File 'lib/kilt/slugger.rb', line 40

def prefix_for object
  return nil unless prefix = lookup_the_suggested_prefix_for(object)
  slug = slugified_value_for object
  slug.starts_with?(prefix) && slug != prefix ? nil
                                              : prefix
end

.slug_for(object) ⇒ Object



5
6
7
8
9
# File 'lib/kilt/slugger.rb', line 5

def self.slug_for object
  slug = possibly_duplicate_slug_for object
  slug_is_unique_for?(slug, object) ? slug
                                    : make_slug_unique(slug)
end

.slug_is_unique_for?(slug, object) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
17
18
# File 'lib/kilt/slugger.rb', line 13

def slug_is_unique_for? slug, object
  result = Utils.database.find(slug)
  return true if result.nil?

  "#{result['unique_id']}" == "#{object['unique_id']}"
end

.slugified_value_for(object) ⇒ Object



36
37
38
# File 'lib/kilt/slugger.rb', line 36

def slugified_value_for object
  Utils.slugify(object['name'])
end