Sha256: aadaa3bf1ac3ea57042f2b75fee4ddab9158ecaad9495cedc723dca40c034bae

Contents?: true

Size: 1.46 KB

Versions: 27

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true

module Bridgetown
  class PluginContentReader
    attr_reader :site, :manifest, :content_dir

    # @param site [Bridgetown::Site]
    # @param manifest [Bridgetown::Plugin::SourceManifest]
    def initialize(site, manifest)
      @site = site
      @manifest = manifest
      @content_dir = manifest.content
      @content_files = Set.new
    end

    def read
      return unless content_dir

      Find.find(content_dir) do |path|
        next if File.directory?(path)

        if File.symlink?(path)
          Bridgetown.logger.warn "Plugin content reader:", "Ignored symlinked asset: #{path}"
        else
          read_content_file(path)
        end
      end
    end

    def read_content_file(path)
      dir = File.dirname(path.sub("#{content_dir}/", ""))
      name = File.basename(path)

      @content_files << if Utils.has_yaml_header?(path) || Utils.has_rbfm_header?(path)
                          site.collections.pages.read_resource(path, manifest: manifest)
                        else
                          Bridgetown::StaticFile.new(site, content_dir, "/#{dir}", name)
                        end
      add_to(site.static_files, Bridgetown::StaticFile)
    end

    def add_to(content_type, klass)
      existing_paths = content_type.filter_map(&:relative_path)
      @content_files.select { |item| item.is_a?(klass) }.each do |item|
        content_type << item unless existing_paths.include?(item.relative_path)
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
bridgetown-core-1.3.4 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.3.3 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.3.2 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.3.1 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.3.0 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.3.0.beta3 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.3.0.beta2 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.3.0.beta1 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.2.0 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.2.0.beta5 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.2.0.beta4 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.2.0.beta3 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.2.0.beta2 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.2.0.beta1 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.1.0 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.1.0.beta3 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.1.0.beta2 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.1.0.beta1 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.0.0 lib/bridgetown-core/readers/plugin_content_reader.rb
bridgetown-core-1.0.0.beta3 lib/bridgetown-core/readers/plugin_content_reader.rb