class Seiten::SlugBuilder

Public Class Methods

call(page_options, prefix_url='') click to toggle source
# File lib/seiten/slug_builder.rb, line 4
def self.call(page_options, prefix_url='')
  page_options = page_options.with_indifferent_access
  title = page_options['title']
  url   = page_options['url']
  root  = page_options['root']

  # if url is nil parameterize title otherwise just use url
  slug = url.nil? ? title.parameterize : url

  # prepend prefix_url if slug is not root or external url
  unless slug[0] == "/" || !!(slug.match(/^https?:\/\/.+/)) || !prefix_url.present?
    slug = "#{prefix_url}/#{slug}"
  end

  # return empty string if page slug is /
  if slug == "/" || root == true
    slug = ""
  end

  # remove leading slash if present
  if slug
    slug = slug[1..-1] if slug[0] == "/"
  end

  slug
end