Sha256: f854052f42501eca66f3552583b1c097470f3101c8725490a1fd6935846abeb3

Contents?: true

Size: 813 Bytes

Versions: 3

Compression:

Stored size: 813 Bytes

Contents

module Seiten
  class SlugBuilder

    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

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
seiten-1.0.2 lib/seiten/slug_builder.rb
seiten-1.0.1 lib/seiten/slug_builder.rb
seiten-1.0.0 lib/seiten/slug_builder.rb