8000 Add site.github.public_repositories[].contributors (#234) · jekyll/github-metadata@421dd6e · GitHub
[go: up one dir, main page]

Skip to content

Commit 421dd6e

Browse files
authored
Add site.github.public_repositories[].contributors (#234)
Merge pull request 234
1 parent f3b27ce commit 421dd6e

File tree

4 files changed

+20
-4
lines changed

4 files changed

+20
-4
lines changed

lib/jekyll-github-metadata/repository.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,11 @@ def owner_public_repositories
118118
:accept => "application/vnd.github.mercy-preview+json",
119119
}
120120
memoize_value :@owner_public_repositories, Value.new("owner_public_repositories", proc do |c|
121-
c.list_repos(owner, options).each { |r| r[:releases] = c.releases(r[:full_name]) }
121+
c.list_repos(owner, options).map do |r|
122+
r[:releases] = Value.new("owner_public_repositories_releases", proc { c.releases(r[:full_name]) })
123+
r[:contributors] = Value.new("owner_public_repositories_contributors", proc { c.contributors(r[:full_name]) })
124+
r
125+
end
122126
end)
123127
end
124128

lib/jekyll-github-metadata/sanitizer.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ module Sanitizer
1616
# resource - an Object
1717
#
1818
# Returns the sanitized resource.
19-
# rubocop:disable Metrics/CyclomaticComplexity
19+
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength
2020
def sanitize(resource)
2121
case resource
2222
when Array
@@ -31,6 +31,8 @@ def sanitize(resource)
3131
nil
3232
when String
3333
resource
34+
when Value
35+
resource.render
3436
else
3537
if resource.respond_to?(:to_hash)
3638
sanitize_resource(resource)
@@ -39,7 +41,7 @@ def sanitize(resource)
3941
end
4042
end
4143
end
42-
# rubocop:enable Metrics/CyclomaticComplexity
44+
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength
4345

4446
# Sanitize the Sawyer Resource or Hash
4547
# Note: the object must respond to :to_hash for this to work.

spec/integration_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@
4242
expect(subject["public_repositories"].first["releases"].first["target_commitish"]).to eql("master")
4343
end
4444

45+
it "contains the correct public_repositories.contributors" do
46+
expect(subject).to have_key("public_repositories")
47+
expect(subject["public_repositories"].first).to have_key("contributors")
48+
expect(subject["public_repositories"].first["contributors"].size).to eql(1)
49+
expect(subject["public_repositories"].first["contributors"].first["login"]).to eql("parkr")
50+
end
51+
4552
it "calls all the stubs" do
4653
stubs.each do |stub|
4754
expect(stub).to have_been_requested

spec/spec_helpers/stub_helper.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ def stub_all_api_requests
2222
}.map { |path, file| stub_api(path, file) }
2323

2424
owner_repos = JSON.parse(webmock_data("owner_repos"))
25-
owner_repos.each { |r| stubs << stub_api("/repos/#{r["full_name"]}/releases?per_page=100", "repo_releases") }
25+
owner_repos.each do |r|
26+
stubs << stub_api("/repos/#{r["full_name"]}/releases?per_page=100", "repo_releases")
27+
stubs << stub_api("/repos/#{r["full_name"]}/contributors?per_page=100", "repo_contributors")
28+
end
2629

2730
stubs
2831
end

0 commit comments

Comments
 (0)
0