Sha256: 58732810d632185acab894996968ca352e7f3a2e551ae7f42831ab5e50be95d6

Contents?: true

Size: 1.91 KB

Versions: 1

Compression:

Stored size: 1.91 KB

Contents


module Awestruct

  class PageLoader

    attr_reader :site
    attr_reader :root_dir

    def initialize(site, target=:pages)
      @site   = site 
      @target = target

      @root_dir = site.config.dir
      if ( @target == :layouts )
        @root_dir = Pathname.new( File.join( root_dir, '_layouts/' ) )
      end
    end

    def ignore?(path)
      site.config.ignore.include?( path ) 
    end

    def load_all(prepare=:inline)
      pages = []
      root_dir.find do |path|
        if ( path == root_dir )
          #puts "skip #{path}"
          next
        end
        basename = File.basename( path )
        if ( basename == '.htaccess' )
          #special case
        elsif ( basename =~ /^[_.]/ )
          #puts "skip #{path} and prune"
          Find.prune
          next
        end
        relative_path = path.relative_path_from( root_dir ).to_s
        if ignore?(relative_path)
          #puts "skip ignored #{path} and prune"
          Find.prune
          next
        end
        unless path.directory?
          page = load_page( path, prepare )
          if ( page )
            #puts "loaded! #{path} and added to site"
            #inherit_front_matter( page )
            site.send( @target ) << page
            pages << page
          end
        end
      end
      if ( prepare == :post )
        pages.each{|p| p.prepare!} 
      end
    end

    def load_page(path,prepare=:inline)
      pathname = case( path )
        when Pathname then pathname = path
        else pathname = Pathname.new( path )
      end
      chain = site.engine.pipeline.handler_chains[ path ]
      return nil if chain.nil?
      handler = chain.create(site, Pathname.new(path))
      p = Page.new( site, handler )
      if ( @target == :layouts )
        p.__is_layout = true
      else
        p.__is_layout = false
      end
      p.track_dependencies!
      if prepare == :inline
        p.prepare! 
      end
      p
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
awestruct-0.4.6 lib/awestruct/page_loader.rb