Sha256: 0f4e8069605e0bfc033067239b9ff02d5dce7bf51fa76941578ff5282a840430

Contents?: true

Size: 1.67 KB

Versions: 7

Compression:

Stored size: 1.67 KB

Contents

module Middleman::CoreExtensions::Routing
  class << self
    def registered(app)
      app.send :include, InstanceMethods
    end
    alias :included :registered
  end
  
  module InstanceMethods
    # Takes a block which allows many pages to have the same layout
    # with_layout :admin do
    #   page "/admin/"
    #   page "/admin/login.html"
    # end
    def with_layout(layout_name, &block)
      old_layout = layout
    
      set :layout, layout_name
      instance_exec(&block) if block_given?
    ensure
      set :layout, old_layout
    end
    
    # The page method allows the layout to be set on a specific path
    # page "/about.html", :layout => false
    # page "/", :layout => :homepage_layout
    def page(url, opts={}, &block)
      if url.include?("*")
        url = Regexp.new(url.gsub("*", "(.*)").gsub(/^\//, "^"))
      end
      
      if url.is_a?(Regexp) && !opts.empty?
        provides_metadata_for_path url do |url|
          { :options => opts }
        end
        
        return
      end
      
      opts[:layout] = layout if opts[:layout].nil?
      
      url = full_path(url)

      if opts.has_key?(:proxy)
        reroute(url, opts[:proxy])
        
        if opts.has_key?(:ignore) && opts[:ignore]
          ignore(opts[:proxy])
          opts.delete(:ignore)
        end  
        
        opts.delete(:proxy)
      else
        if opts.has_key?(:ignore) && opts[:ignore]
          ignore(url)
          opts.delete(:ignore)
        end
      end

      a_block = block_given? ? block : nil
      if a_block || !opts.empty?
        sitemap.page(url) do
          template.options = opts
          template.blocks  = [a_block]
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
middleman-core-3.0.0.beta.1 lib/middleman-core/core_extensions/routing.rb
middleman-core-3.0.0.alpha.9 lib/middleman-core/core_extensions/routing.rb
middleman-core-3.0.0.alpha.8 lib/middleman-core/core_extensions/routing.rb
middleman-core-3.0.0.alpha.7 lib/middleman-core/core_extensions/routing.rb
middleman-3.0.0.alpha.6 lib/middleman/core_extensions/routing.rb
middleman-3.0.0.alpha.5 lib/middleman/core_extensions/routing.rb
middleman-3.0.0.alpha.4 lib/middleman/core_extensions/routing.rb