Sha256: ee44b34bb794ad815620b65f55b90b99d5d431b12a8760f123e4a2a4f526f44e

Contents?: true

Size: 966 Bytes

Versions: 9

Compression:

Stored size: 966 Bytes

Contents

# frozen_string_literal: true

require 'active_support/concern'

module Lcms
  module Engine
    module Navigable
      extend ActiveSupport::Concern

      included do
        def parents
          ancestors.reverse
        end

        def previous
          @previous ||=
            if level_position.to_i.positive?
              siblings.where(level_position: level_position - 1).first
            else
              # last element of previous node from parent level
              parent.try(:previous).try(:children).try(:last)
            end
        end

        def next
          @next ||=
            if level_position.nil?
              nil
            elsif level_position < siblings.size
              siblings.where(level_position: level_position + 1).first
            else
              # first element of next node from parent level
              parent.try(:next).try(:children).try(:first)
            end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
lcms-engine-0.5.5 app/models/concerns/lcms/engine/navigable.rb
lcms-engine-0.5.4 app/models/concerns/lcms/engine/navigable.rb
lcms-engine-0.5.3 app/models/concerns/lcms/engine/navigable.rb
lcms-engine-0.5.2 app/models/concerns/lcms/engine/navigable.rb
lcms-engine-0.5.1 app/models/concerns/lcms/engine/navigable.rb
lcms-engine-0.5.0 app/models/concerns/lcms/engine/navigable.rb
lcms-engine-0.4.2 app/models/concerns/lcms/engine/navigable.rb
lcms-engine-0.4.1 app/models/concerns/lcms/engine/navigable.rb
lcms-engine-0.4.0 app/models/concerns/lcms/engine/navigable.rb