class Jekyll::Spaceship::Register

Public Class Methods

use(name) click to toggle source
# File lib/jekyll-spaceship/cores/register.rb, line 19
def self.use(name)
  name = name.to_s.gsub(/-/, '').downcase
  name += 'processor' unless name.match(/processor$/)

  self.walk(File.join(File.dirname(__FILE__), '/../processors')) do |path|
    filename = File.basename(path, '.rb')
    next if filename.gsub(/-/, '').downcase != name

    Logger.log "🗂  use #{filename}"
    require path
    constants = Jekyll::Spaceship.constants.select do |c|
      c.downcase.to_s == name
    end

    next if constants.first.nil?
    _class = Jekyll::Spaceship.const_get(constants.first)
    next unless _class.is_a? Class

    Manager.add _class.new
  end
end
walk(start, &block) click to toggle source
# File lib/jekyll-spaceship/cores/register.rb, line 5
def self.walk(start, &block)
  Dir.foreach start do |x|
    path = File.join(start, x)
    if x == '.' or x == '..'
      next
    elsif File.directory?(path)
      block.call(path + '/')
      walk path
    else
      block.call(path)
    end
  end
end