Refactor the LayoutReader class
This commit is contained in:
		
							parent
							
								
									f581940c71
								
							
						
					
					
						commit
						c5b81d580b
					
				| 
						 | 
				
			
			@ -6,16 +6,34 @@ class LayoutReader
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def read
 | 
			
		||||
      base = File.join(site.source, site.config['layouts'])
 | 
			
		||||
      return @layouts unless File.exists?(base)
 | 
			
		||||
      entries = []
 | 
			
		||||
      Dir.chdir(base) { entries = EntryFilter.new(site).filter(Dir['**/*.*']) }
 | 
			
		||||
    layout_entries.each do |f|
 | 
			
		||||
      @layouts[layout_name(f)] = Layout.new(site, layout_directory, f)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
      entries.each do |f|
 | 
			
		||||
        name = f.split(".")[0..-2].join(".")
 | 
			
		||||
        @layouts[name] = Layout.new(site, base, f)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      @layouts
 | 
			
		||||
    @layouts
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def layout_directory
 | 
			
		||||
    File.join(site.source, site.config['layouts'])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def layout_entries
 | 
			
		||||
    entries = []
 | 
			
		||||
    with(layout_directory) do
 | 
			
		||||
      entries = EntryFilter.new(site).filter(Dir['**/*.*'])
 | 
			
		||||
    end
 | 
			
		||||
    entries
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def with(directory)
 | 
			
		||||
    return unless File.exists?(directory)
 | 
			
		||||
    Dir.chdir(directory) { yield directory }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def layout_name(file)
 | 
			
		||||
    file.split(".")[0..-2].join(".")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue