Sha256: 633d299236cd2bc186b82bf3f22b98063127c958454aeb688e0a9ed2f6afa1e3

Contents?: true

Size: 1.77 KB

Versions: 8

Compression:

Stored size: 1.77 KB

Contents

module Middleman::Extensions
  module DirectoryIndexes
    class << self
      def registered(app)
        app.send :include, InstanceMethods
        app.before do
          next if sitemap.exists?(@original_path)

          prefix         = @original_path.sub(/\/$/, "")
          indexed_path   = prefix + "/" + index_file
        
          extensioned_path = prefix + File.extname(index_file)
          is_ignored = ignored_directory_indexes.include?(extensioned_path)
        
          if !sitemap.exists?(indexed_path) && !is_ignored
            parts         = @original_path.split("/")
            last_part     = parts.last
            last_part_ext = File.extname(last_part)
        
            if last_part_ext.blank?
              # This is a folder, redirect to index
              @request_path = extensioned_path
            end
          end
        end
      
        app.build_reroute do |destination, request_path|
          index_ext      = File.extname(index_file)
          new_index_path = "/#{index_file}"

          if ignored_directory_indexes.include?(request_path)
            false
          elsif request_path =~ /#{new_index_path}$/
            false
          else
            [
              destination.sub(/#{index_ext.gsub(".", "\\.")}$/, new_index_path),
              request_path
            ]
          end
        end
      end
      alias :included :registered
    end
  
    module InstanceMethods
      def ignored_directory_indexes
        @_ignored_directory_indexes ||= []
      end
    
      def page(url, options={}, &block)
        if options.has_key?(:directory_index) && !options["directory_index"]
          ignored_directory_indexes << url
        else
          super
        end
      end
    end
  end
  
  register :directory_indexes, DirectoryIndexes
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
middleman-core-3.0.0.beta.1 lib/middleman-core/extensions/directory_indexes.rb
middleman-core-3.0.0.alpha.9 lib/middleman-core/extensions/directory_indexes.rb
middleman-core-3.0.0.alpha.8 lib/middleman-core/extensions/directory_indexes.rb
middleman-core-3.0.0.alpha.7 lib/middleman-core/extensions/directory_indexes.rb
middleman-3.0.0.alpha.6 lib/middleman/extensions/directory_indexes.rb
middleman-3.0.0.alpha.5 lib/middleman/extensions/directory_indexes.rb
middleman-3.0.0.alpha.4 lib/middleman/extensions/directory_indexes.rb
middleman-3.0.0.alpha.3 lib/middleman/extensions/directory_indexes.rb