class GitHubPages::Configuration
Sets and manages Jekyll configuration defaults and overrides
def configure_plugins(config)
def configure_plugins(config) # Ensure we have those gems we want. config["plugins"] = Array(config["plugins"]) | DEFAULT_PLUGINS # To minimize errors, lazy-require jekyll-remote-theme if requested by the user config["plugins"].push("jekyll-remote-theme") if config.key? "remote_theme" return unless development? if disable_whitelist? config["whitelist"] = config["whitelist"] | config["plugins"] end config["whitelist"] = config["whitelist"] | DEVELOPMENT_PLUGINS end
def debug_print_versions
Print the versions for github-pages and jekyll to the debug
def debug_print_versions Jekyll.logger.debug "GitHub Pages:", "github-pages v#{GitHubPages::VERSION}" Jekyll.logger.debug "GitHub Pages:", "jekyll v#{Jekyll::VERSION}" end
def defaults_for_env
def defaults_for_env defaults = development? ? DEFAULTS : PRODUCTION_DEFAULTS Jekyll::Utils.deep_merge_hashes Jekyll::Configuration::DEFAULTS, defaults end
def development?
def development? Jekyll.env == "development" end
def disable_whitelist?
def disable_whitelist? development? && !ENV["DISABLE_WHITELIST"].to_s.empty? end
def effective_config(user_config)
Returns the effective Configuration
values which themselves override our defaults.
configuration sandwhich with our overrides overriding the user's specified
Given a user's config, determines the effective configuration by building a user
def effective_config(user_config) # Merge user config into defaults config = Jekyll::Utils.deep_merge_hashes(defaults_for_env, user_config) .fix_common_issues .add_default_collections # Allow theme to be explicitly disabled via "theme: null" config["theme"] = user_config["theme"] if user_config.key?("theme") exclude_cname(config) # Merge overwrites into user config config = Jekyll::Utils.deep_merge_hashes config, OVERRIDES restrict_and_config_markdown_processor(config) configure_plugins(config) config end
def exclude_cname(config)
def exclude_cname(config) return unless config["exclude"].eql? Jekyll::Configuration::DEFAULTS["exclude"] config["exclude"].concat(DEFAULTS["exclude"]) end
def processed(site)
def processed(site) site.instance_variable_set :@_github_pages_processed, true end
def processed?(site)
def processed?(site) site.instance_variable_get(:@_github_pages_processed) == true end
def restrict_and_config_markdown_processor(config)
This can get called multiply on the same config, so try to
neither of these.
Ensure we're using Kramdown or GFM. Force to Kramdown if
def restrict_and_config_markdown_processor(config) config["markdown"] = "kramdown" unless \ %w(kramdown gfm commonmarkghpages).include?(config["markdown"].to_s.downcase) return unless config["markdown"].to_s.casecmp("gfm").zero? config["markdown"] = "CommonMarkGhPages" config["commonmark"] = { "extensions" => %w(table strikethrough autolink tagfilter), "options" => %w(footnotes), } end
def set(site)
Equivalent #set! function contains the code of interest. This function
Set the site's configuration. Implemented as an `after_reset` hook.
def set(site) return if processed? site debug_print_versions set!(site) processed(site) end
def set!(site)
Set the site's configuration with all the proper defaults and overrides.
def set!(site) site.config = effective_config(site.config) end