This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "jekyll"
|
||||
require "forwardable"
|
||||
|
||||
module Jekyll
|
||||
module GitHubMetadata
|
||||
class MetadataDrop < Jekyll::Drops::Drop
|
||||
extend Forwardable
|
||||
|
||||
mutable true
|
||||
|
||||
# See https://github.com/jekyll/jekyll/pull/6338
|
||||
alias_method :invoke_drop, :[]
|
||||
def key?(key)
|
||||
return false if key.nil?
|
||||
return true if self.class.mutable? && mutations.key?(key)
|
||||
|
||||
respond_to?(key) || fallback_data.key?(key)
|
||||
end
|
||||
|
||||
def to_s
|
||||
require "json"
|
||||
JSON.pretty_generate to_h
|
||||
end
|
||||
alias_method :to_str, :to_s
|
||||
|
||||
def content_methods
|
||||
super - %w(to_s to_str)
|
||||
end
|
||||
|
||||
def keys
|
||||
super.sort
|
||||
end
|
||||
|
||||
def_delegator Jekyll::GitHubMetadata::Pages, :env, :environment
|
||||
def_delegator Jekyll::GitHubMetadata::Pages, :env, :pages_env
|
||||
def_delegator Jekyll::GitHubMetadata::Pages, :github_hostname, :hostname
|
||||
def_delegator Jekyll::GitHubMetadata::Pages, :pages_hostname, :pages_hostname
|
||||
def_delegator Jekyll::GitHubMetadata::Pages, :api_url, :api_url
|
||||
def_delegator Jekyll::GitHubMetadata::Pages, :help_url, :help_url
|
||||
|
||||
private def_delegator Jekyll::GitHubMetadata, :repository
|
||||
|
||||
def_delegator :repository, :owner_public_repositories, :public_repositories
|
||||
def_delegator :repository, :organization_public_members, :organization_members
|
||||
def_delegator :repository, :name, :project_title
|
||||
def_delegator :repository, :tagline, :project_tagline
|
||||
def_delegator :repository, :owner_metadata, :owner
|
||||
def_delegator :repository, :owner, :owner_name
|
||||
def_delegator :repository, :owner_display_name, :owner_display_name
|
||||
def_delegator :repository, :owner_url, :owner_url
|
||||
def_delegator :repository, :owner_gravatar_url, :owner_gravatar_url
|
||||
def_delegator :repository, :repository_url, :repository_url
|
||||
def_delegator :repository, :nwo, :repository_nwo
|
||||
def_delegator :repository, :name, :repository_name
|
||||
def_delegator :repository, :zip_url, :zip_url
|
||||
def_delegator :repository, :tar_url, :tar_url
|
||||
def_delegator :repository, :repo_clone_url, :clone_url
|
||||
def_delegator :repository, :releases_url, :releases_url
|
||||
def_delegator :repository, :issues_url, :issues_url
|
||||
def_delegator :repository, :wiki_url, :wiki_url
|
||||
def_delegator :repository, :language, :language
|
||||
def_delegator :repository, :user_page?, :is_user_page
|
||||
def_delegator :repository, :project_page?, :is_project_page
|
||||
def_delegator :repository, :show_downloads?, :show_downloads
|
||||
def_delegator :repository, :html_url, :url
|
||||
def_delegator :repository, :baseurl, :baseurl
|
||||
def_delegator :repository, :contributors, :contributors
|
||||
def_delegator :repository, :releases, :releases
|
||||
def_delegator :repository, :latest_release, :latest_release
|
||||
def_delegator :repository, :private?, :private
|
||||
def_delegator :repository, :archived?, :archived
|
||||
def_delegator :repository, :disabled?, :disabled
|
||||
def_delegator :repository, :license, :license
|
||||
def_delegator :repository, :source, :source
|
||||
|
||||
def versions
|
||||
return @versions if defined?(@versions)
|
||||
|
||||
begin
|
||||
require "github-pages"
|
||||
@versions = GitHubPages.versions
|
||||
rescue LoadError
|
||||
@versions = {}
|
||||
end
|
||||
end
|
||||
|
||||
def build_revision
|
||||
@build_revision ||= begin
|
||||
ENV["JEKYLL_BUILD_REVISION"] || `git rev-parse HEAD`.strip
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Nothing to see here.
|
||||
def fallback_data
|
||||
@fallback_data ||= {}
|
||||
end
|
||||
|
||||
def mutations
|
||||
@mutations ||= {}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user