Sha256: 2585edffd9475a5e779a3ecc5b1c35008a6f1612144ea95a761e67ea998b303a

Contents?: true

Size: 1.62 KB

Versions: 5

Compression:

Stored size: 1.62 KB

Contents

# Extensions namespace
module Middleman
  module Extensions
  
    # Directory Indexes extension
    module DirectoryIndexes
    
      # Setup extension
      class << self
      
        # Once registered
        def registered(app)
          app.ready do
            sitemap.register_resource_list_manipulator(
              :directory_indexes, 
              DirectoryIndexManager.new(self)
            )
          end
        end

        alias :included :registered
      end
    
      class DirectoryIndexManager
        def initialize(app)
          @app = app
        end
      
        # Update the main sitemap resource list
        # @return [void]
        def manipulate_resource_list(resources)
          index_file = @app.index_file
          new_index_path = "/#{index_file}"
        
          resources.each do |resource|
            # Check if it would be pointless to reroute
            next if resource.path == index_file || 
                    resource.path.end_with?(new_index_path) || 
                    File.extname(index_file) != resource.ext
          
            # Check if frontmatter turns directory_index off
            d = resource.data
            next if d && d["directory_index"] == false
        
            # Check if file metadata (options set by "page" in config.rb) turns directory_index off
            if resource.metadata[:options] && resource.metadata[:options][:directory_index] == false
              next
            end
          
            resource.destination_path = resource.destination_path.chomp(File.extname(index_file)) + new_index_path
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
middleman-more-3.0.0 lib/middleman-more/extensions/directory_indexes.rb
middleman-more-3.0.0.rc.4 lib/middleman-more/extensions/directory_indexes.rb
middleman-more-3.0.0.rc.3 lib/middleman-more/extensions/directory_indexes.rb
middleman-more-3.0.0.rc.2 lib/middleman-more/extensions/directory_indexes.rb
middleman-more-3.0.0.rc.1 lib/middleman-more/extensions/directory_indexes.rb