Sha256: ba729f64ee2313a1a918686b81bb8a34c6c2dbb6c93a20da922546999af4a443

Contents?: true

Size: 1.26 KB

Versions: 3

Compression:

Stored size: 1.26 KB

Contents

module Middleman
  module Tansu
    class Drawer
      def initialize(app, options, exclude_path = [])
        @config       = app.config
        @options      = options
        @dirs         = ["/"]
        @exclude_path = exclude(exclude_path)
        search_directory(@config.source)
      end

      def empty
        empty     = []
        @dirs.each do |dir|
          glob_path = File.join(@config.source, dir, "#{@config.tansu[:default_document].strip}*")
          if Dir.glob(glob_path).length == 0
            empty.push(dir)
          end
        end
        empty
      end

      def search_directory(dir)
        regex = Regexp.new("^" + @config.source)
        Dir.glob(File.join(dir, '*')).each do |path|
          if File.ftype(path) == "directory" && !exclude?(path)
            @dirs.push(path.gsub(regex, ""))
            search_directory(path)
          end
        end
      end

      def exclude(path)
        default = [
          @config.images_dir,
          @config.js_dir,
          @config.css_dir,
          @config.layouts_dir,
          @options.templates_dir
        ]
        default | path
      end

      def exclude?(path)
        regex = Regexp.new("^#{@config.source}/(#{@exclude_path.join("|")})")
        regex =~ path
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
middleman-tansu-0.0.3 lib/middleman-tansu/drawer.rb
middleman-tansu-0.0.2 lib/middleman-tansu/drawer.rb
middleman-tansu-0.0.1 lib/middleman-tansu/drawer.rb