Class: Jekyll::GitHubMetadata::Repository
- Inherits:
-
Object
- Object
- Jekyll::GitHubMetadata::Repository
- Extended by:
- Forwardable
- Defined in:
- lib/jekyll-github-metadata/repository.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#nwo ⇒ Object
readonly
Returns the value of attribute nwo.
-
#owner ⇒ Object
readonly
Returns the value of attribute owner.
Class Method Summary collapse
-
.def_hash_delegator(hash, key, method) ⇒ Object
Defines an instance method that delegates to a hash’s key.
Instance Method Summary collapse
- #cname ⇒ Object
- #contributors ⇒ Object
- #default_user_domain ⇒ Object
- #forks_count ⇒ Object
- #github_repo? ⇒ Boolean
- #html_url ⇒ Object
-
#initialize(name_with_owner) ⇒ Repository
constructor
A new instance of Repository.
- #issues_url ⇒ Object
- #latest_release ⇒ Object
- #organization_public_members ⇒ Object
- #organization_repository? ⇒ Boolean
- #owner_display_name ⇒ Object
- #owner_gravatar_url ⇒ Object
- #owner_metadata ⇒ Object
- #owner_public_repositories ⇒ Object
- #owner_url ⇒ Object
- #primary? ⇒ Boolean (also: #user_page?)
- #project_page? ⇒ Boolean
- #releases ⇒ Object
- #releases_url ⇒ Object
- #repo_clone_url ⇒ Object
- #repo_compat ⇒ Object
- #repo_info ⇒ Object
- #repo_pages_info ⇒ Object
- #repo_pages_info_opts ⇒ Object
- #repository_url ⇒ Object
- #source ⇒ Object
- #stargazers_count ⇒ Object
- #tar_url ⇒ Object
- #uri ⇒ Object
- #url_without_path ⇒ Object
- #user_page_domains ⇒ Object
- #wiki_url ⇒ Object
- #zip_url ⇒ Object
Constructor Details
#initialize(name_with_owner) ⇒ Repository
Returns a new instance of Repository.
38 39 40 41 42 |
# File 'lib/jekyll-github-metadata/repository.rb', line 38 def initialize(name_with_owner) @nwo = name_with_owner @owner = nwo.split("/").first @name = nwo.split("/").last end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/jekyll-github-metadata/repository.rb', line 6 def name @name end |
#nwo ⇒ Object (readonly)
Returns the value of attribute nwo.
6 7 8 |
# File 'lib/jekyll-github-metadata/repository.rb', line 6 def nwo @nwo end |
#owner ⇒ Object (readonly)
Returns the value of attribute owner.
6 7 8 |
# File 'lib/jekyll-github-metadata/repository.rb', line 6 def owner @owner end |
Class Method Details
.def_hash_delegator(hash, key, method) ⇒ Object
Defines an instance method that delegates to a hash’s key
hash - a symbol representing the instance method to delegate to. The
instance method should return a hash or respond to #[]
key - the key to call within the hash method - (optional) the instance method the key should be aliased to.
If not specified, defaults to the hash key
Returns a symbol representing the instance method
17 18 19 20 21 |
# File 'lib/jekyll-github-metadata/repository.rb', line 17 def self.def_hash_delegator(hash, key, method) define_method(method) do public_send(hash)[key.to_s] end end |
Instance Method Details
#cname ⇒ Object
185 186 187 188 189 |
# File 'lib/jekyll-github-metadata/repository.rb', line 185 def cname return nil unless Pages.custom_domains_enabled? repo_pages_info["cname"] end |
#contributors ⇒ Object
136 137 138 |
# File 'lib/jekyll-github-metadata/repository.rb', line 136 def contributors memoize_value :@contributors, Value.new("contributors", proc { |c| c.contributors(nwo) }) end |
#default_user_domain ⇒ Object
175 176 177 178 179 180 181 182 183 |
# File 'lib/jekyll-github-metadata/repository.rb', line 175 def default_user_domain if github_repo? "#{owner}.#{Pages.github_hostname}".downcase elsif Pages.enterprise? Pages.pages_hostname.downcase else "#{owner}.#{Pages.pages_hostname}".downcase end end |
#forks_count ⇒ Object
207 208 209 |
# File 'lib/jekyll-github-metadata/repository.rb', line 207 def forks_count repo_pages_info["forks_count"] || 0 end |
#github_repo? ⇒ Boolean
156 157 158 |
# File 'lib/jekyll-github-metadata/repository.rb', line 156 def github_repo? !Pages.enterprise? && owner.eql?("github") end |
#html_url ⇒ Object
191 192 193 |
# File 'lib/jekyll-github-metadata/repository.rb', line 191 def html_url @html_url ||= (repo_pages_info["html_url"] || repo_compat.pages_url).chomp("/") end |
#issues_url ⇒ Object
103 104 105 |
# File 'lib/jekyll-github-metadata/repository.rb', line 103 def issues_url "#{repository_url}/issues" if repo_info["has_issues"] end |
#latest_release ⇒ Object
144 145 146 |
# File 'lib/jekyll-github-metadata/repository.rb', line 144 def latest_release memoize_value :@latest_release, Value.new("latest_release", proc { |c| c.latest_release(nwo) }) end |
#organization_public_members ⇒ Object
130 131 132 133 134 |
# File 'lib/jekyll-github-metadata/repository.rb', line 130 def organization_public_members memoize_value :@organization_public_members, Value.new("organization_public_members", proc do |c| c.organization_public_members(owner) if organization_repository? end) end |
#organization_repository? ⇒ Boolean
111 112 113 |
# File 'lib/jekyll-github-metadata/repository.rb', line 111 def organization_repository? memoize_value :@is_organization_repository, Value.new("organization_repository?", proc { |c| !!c.organization(owner) }) end |
#owner_display_name ⇒ Object
67 68 69 |
# File 'lib/jekyll-github-metadata/repository.rb', line 67 def owner_display_name .name end |
#owner_gravatar_url ⇒ Object
79 80 81 |
# File 'lib/jekyll-github-metadata/repository.rb', line 79 def owner_gravatar_url "#{owner_url}.png" end |
#owner_metadata ⇒ Object
71 72 73 |
# File 'lib/jekyll-github-metadata/repository.rb', line 71 def @owner_metadata ||= Jekyll::GitHubMetadata::Owner.new(owner) end |
#owner_public_repositories ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/jekyll-github-metadata/repository.rb', line 115 def owner_public_repositories = { :type => "public", :accept => "application/vnd.github.mercy-preview+json", } memoize_value :@owner_public_repositories, Value.new("owner_public_repositories", proc do |c| repos = c.list_repos(owner, ) || [] repos.map do |r| r[:releases] = Value.new("owner_public_repositories_releases", proc { c.releases(r[:full_name]) }) r[:contributors] = Value.new("owner_public_repositories_contributors", proc { c.contributors(r[:full_name]) }) r end end) end |
#owner_url ⇒ Object
75 76 77 |
# File 'lib/jekyll-github-metadata/repository.rb', line 75 def owner_url "#{Pages.github_url}/#{owner}" end |
#primary? ⇒ Boolean Also known as: user_page?
160 161 162 163 164 165 166 |
# File 'lib/jekyll-github-metadata/repository.rb', line 160 def primary? if Pages.enterprise? name.downcase == "#{owner.to_s.downcase}.#{Pages.github_hostname}" else user_page_domains.include? name.downcase end end |
#project_page? ⇒ Boolean
152 153 154 |
# File 'lib/jekyll-github-metadata/repository.rb', line 152 def project_page? !user_page? end |
#releases ⇒ Object
140 141 142 |
# File 'lib/jekyll-github-metadata/repository.rb', line 140 def releases memoize_value :@releases, Value.new("releases", proc { |c| c.releases(nwo) }) end |
#releases_url ⇒ Object
99 100 101 |
# File 'lib/jekyll-github-metadata/repository.rb', line 99 def releases_url "#{repository_url}/releases" end |
#repo_clone_url ⇒ Object
83 84 85 |
# File 'lib/jekyll-github-metadata/repository.rb', line 83 def repo_clone_url "#{repository_url}.git" end |
#repo_compat ⇒ Object
44 45 46 |
# File 'lib/jekyll-github-metadata/repository.rb', line 44 def repo_compat @repo_compat ||= Jekyll::GitHubMetadata::RepositoryCompat.new(self) end |
#repo_info ⇒ Object
48 49 50 51 52 53 |
# File 'lib/jekyll-github-metadata/repository.rb', line 48 def repo_info @repo_info ||= begin = { :accept => "application/vnd.github.drax-preview+json" } (Value.new("repo_info", proc { |c| c.repository(nwo, ) }).render || {}) end end |
#repo_pages_info ⇒ Object
55 56 57 |
# File 'lib/jekyll-github-metadata/repository.rb', line 55 def repo_pages_info @repo_pages_info ||= (Value.new("repo_pages_info", proc { |c| c.pages(nwo, repo_pages_info_opts) }).render || {}) end |
#repo_pages_info_opts ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/jekyll-github-metadata/repository.rb', line 59 def repo_pages_info_opts if Pages.repo_pages_html_url_preview? { :accept => "application/vnd.github.mister-fantastic-preview+json" } else {} end end |
#repository_url ⇒ Object
87 88 89 |
# File 'lib/jekyll-github-metadata/repository.rb', line 87 def repository_url "#{owner_url}/#{name}" end |
#source ⇒ Object
148 149 150 |
# File 'lib/jekyll-github-metadata/repository.rb', line 148 def source repo_pages_info["source"] || repo_compat.source end |
#stargazers_count ⇒ Object
203 204 205 |
# File 'lib/jekyll-github-metadata/repository.rb', line 203 def stargazers_count repo_pages_info["stargazers_count"] || 0 end |
#tar_url ⇒ Object
95 96 97 |
# File 'lib/jekyll-github-metadata/repository.rb', line 95 def tar_url "#{repository_url}/tarball/#{git_ref}" end |
#uri ⇒ Object
195 196 197 |
# File 'lib/jekyll-github-metadata/repository.rb', line 195 def uri @uri ||= URI(html_url) end |
#url_without_path ⇒ Object
199 200 201 |
# File 'lib/jekyll-github-metadata/repository.rb', line 199 def url_without_path uri.dup.tap { |u| u.path = "" }.to_s end |
#user_page_domains ⇒ Object
169 170 171 172 173 |
# File 'lib/jekyll-github-metadata/repository.rb', line 169 def user_page_domains domains = [default_user_domain] domains.push "#{owner}.github.com".downcase unless Pages.enterprise? domains end |
#wiki_url ⇒ Object
107 108 109 |
# File 'lib/jekyll-github-metadata/repository.rb', line 107 def wiki_url "#{repository_url}/wiki" if repo_info["has_wiki"] end |
#zip_url ⇒ Object
91 92 93 |
# File 'lib/jekyll-github-metadata/repository.rb', line 91 def zip_url "#{repository_url}/zipball/#{git_ref}" end |