module Bridgetown::Site::Extensible

Public Instance Methods

find_converter_instance(klass) click to toggle source

Get the implementation for the given Converter class. @param klass [Class] The Class of the Converter to fetch. @return [Converter] Returns the {Converter}

instance implementing the given `Converter` class.
# File lib/bridgetown-core/concerns/site/extensible.rb, line 41
def find_converter_instance(klass)
  @find_converter_instance ||= {}
  @find_converter_instance[klass] ||= begin
    converters.find { |converter| converter.instance_of?(klass) } || \
      raise("No Converters found for #{klass}")
  end
end
generate() click to toggle source

Run all Generators. @see Generator @return [void]

# File lib/bridgetown-core/concerns/site/extensible.rb, line 20
def generate
  generators.each do |generator|
    start = Time.now
    generator.generate(self)

    next unless ENV["BRIDGETOWN_LOG_LEVEL"] == "debug"

    generator_name = if generator.class.respond_to?(:custom_name)
                       generator.class.custom_name
                     else
                       generator.class.name
                     end
    Bridgetown.logger.debug "Generating:",
                            "#{generator_name} finished in #{Time.now - start} seconds."
  end
end
instantiate_subclasses(klass) click to toggle source

Create an array of instances of the subclasses of the class

passed in as argument.

@param klass [Class] - class which is the parent of the subclasses. @return [Array<Converter, Generator>] Returns an array of instances of

subclasses of `klass`.
# File lib/bridgetown-core/concerns/site/extensible.rb, line 54
def instantiate_subclasses(klass)
  klass.descendants.sort.map do |c|
    c.new(config)
  end
end
setup() click to toggle source

Load necessary libraries, plugins, converters, and generators. @see Converter @see Generator @see PluginManager @return [void]

# File lib/bridgetown-core/concerns/site/extensible.rb, line 10
def setup
  plugin_manager.require_plugin_files
  plugin_manager.setup_component_loaders
  self.converters = instantiate_subclasses(Bridgetown::Converter)
  self.generators = instantiate_subclasses(Bridgetown::Generator)
end