class Praxis::FileGroup

Attributes

base[R]
groups[R]

Public Class Methods

new(base, &block) click to toggle source
# File lib/praxis/file_group.rb, line 7
def initialize(base, &block)
  if base.nil?
    raise ArgumentError, 'base must not be nil.' \
      'Are you missing a call Praxis::Application.instance.setup?'
  end

  @groups = {}
  @base = Pathname.new(base)

  instance_eval(&block) if block_given?
end

Public Instance Methods

[](*names) click to toggle source
# File lib/praxis/file_group.rb, line 36
def [](*names)
  names.inject(@groups) { |group, name| group[name] || [] }
end
layout(&block) click to toggle source
# File lib/praxis/file_group.rb, line 19
def layout(&block)
  instance_eval(&block)
end
map(name, pattern, &block) click to toggle source
# File lib/praxis/file_group.rb, line 23
def map(name, pattern, &block)
  return unless base.exist?

  if block_given?
    @groups[name] = FileGroup.new(base + pattern, &block)
  else
    @groups[name] ||= []
    files = Pathname.glob(base + pattern).select(&:file?)
    files.sort_by! { |file| [file.to_s.split('/').size, file.to_s] }
    files.each { |file| @groups[name] << file }
  end
end