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