class Mongoid::Slug::UniqueSlug::SlugState
Attributes
existing_history_slugs[R]
existing_slugs[R]
last_entered_slug[R]
sorted_existing[R]
Public Class Methods
new(slug, documents, pattern)
click to toggle source
# File lib/mongoid/slug/unique_slug.rb, line 11 def initialize slug, documents, pattern @slug = slug @documents = documents @pattern = pattern @last_entered_slug = [] @existing_slugs = [] @existing_history_slugs = [] @sorted_existing = [] @documents.each do |doc| history_slugs = doc._slugs next if history_slugs.nil? existing_slugs.push(*history_slugs.find_all { |cur_slug| cur_slug =~ @pattern }) last_entered_slug.push(*history_slugs.last) if history_slugs.last =~ @pattern existing_history_slugs.push(*history_slugs.first(history_slugs.length() - 1).find_all { |cur_slug| cur_slug =~ @pattern }) end end
Public Instance Methods
highest_existing_counter()
click to toggle source
# File lib/mongoid/slug/unique_slug.rb, line 36 def highest_existing_counter sort_existing_slugs @sorted_existing.last || 0 end
include_slug()
click to toggle source
# File lib/mongoid/slug/unique_slug.rb, line 32 def include_slug existing_slugs << @slug end
inspect()
click to toggle source
# File lib/mongoid/slug/unique_slug.rb, line 49 def inspect { :slug => @slug, :existing_slugs => existing_slugs, :last_entered_slug => last_entered_slug, :existing_history_slugs => existing_history_slugs, :sorted_existing => sorted_existing } end
slug_included?()
click to toggle source
# File lib/mongoid/slug/unique_slug.rb, line 28 def slug_included? existing_slugs.include? @slug end
sort_existing_slugs()
click to toggle source
# File lib/mongoid/slug/unique_slug.rb, line 41 def sort_existing_slugs # remove the slug part and leave the absolute integer part and sort re = %r(^#{Regexp.escape(@slug)}) @sorted_existing = existing_slugs.map do |s| s.sub(re,'').to_i.abs end.sort end