Sha256: b5edc3d1a8d8ffeb5b8df74e7e622412a390fda6dda4603194be1caa9ba40bd5

Contents?: true

Size: 767 Bytes

Versions: 3

Compression:

Stored size: 767 Bytes

Contents

module Aerogel::Pages
  module Traversal

    def self.page( id, lang )
      PageNode.find( id ).try( :page, lang )
    end

    def self.root( lang )
      Page.root(lang)
    end

    def self.find( url, lang )
      page = root(lang)
      traverse page, url.dup, lang
    end

    def self.traverse( page, url, lang )
      return page if page.nil? || url.blank?
      link = url.shift
      page = page.children.where( link: link ).first
      traverse page, url, lang
    end

    def self.find_closest_in_other_lang( page, lang )
      return page.page_node.page(lang) if page.page_node.page(lang).present?
      return root(lang) if page.root?
      find_closest_in_other_lang( page.parent, lang )
    end
  end # module Traversal
end # module Aerogel::Pages

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
aerogel-pages-1.4.16 lib/aerogel/pages/traversal.rb
aerogel-pages-1.4.14 lib/aerogel/pages/traversal.rb
aerogel-pages-1.4.12 lib/aerogel/pages/traversal.rb