Sha256: 5fd487cb4245c09df0755e6dd2950a728bbb031e665796975192b1e68e33e9bb

Contents?: true

Size: 733 Bytes

Versions: 3

Compression:

Stored size: 733 Bytes

Contents

# frozen_string_literal: true

module Bridgetown
  class Publisher
    # @param site [Bridgetown::Site]
    def initialize(site)
      @site = site
    end

    def publish?(thing)
      can_be_published?(thing) && !hidden_in_the_future?(thing)
    end

    def hidden_in_the_future?(thing)
      return false unless thing.respond_to?(:date)

      future_allowed =
        thing.respond_to?(:collection) && thing.collection.metadata.future || @site.future
      thing_time = thing.date.is_a?(Date) ? thing.date.to_time.to_i : thing.date.to_i
      !future_allowed && thing_time > @site.time.to_i
    end

    private

    def can_be_published?(thing)
      thing.data.fetch("published", true) || @site.unpublished
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bridgetown-core-0.21.0.beta2 lib/bridgetown-core/publisher.rb
bridgetown-core-0.21.0.beta1 lib/bridgetown-core/publisher.rb
bridgetown-core-0.20.0 lib/bridgetown-core/publisher.rb