Skip to content

Commit 390dea6

Browse files
authored
Merge pull request #160 from jekyll/site-owner-should-be-a-hash
site.owner should be a Hash in the final value
2 parents 7d3eb76 + b64a6d3 commit 390dea6

5 files changed

Lines changed: 23 additions & 16 deletions

File tree

lib/jekyll-github-metadata/owner.rb

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,22 @@ def initialize(owner_login)
6262
@owner_login = owner_login
6363
end
6464

65-
def to_s
66-
require "json"
67-
JSON.pretty_generate to_h
68-
end
69-
alias_method :to_str, :to_s
70-
7165
def to_h
72-
self.class.content_methods.each_with_object({}) { |method, hash| hash[method] = public_send(method) }
66+
@to_h ||= self.class.content_methods
67+
.each_with_object({}) { |method, hash| hash[method.to_s] = public_send(method) }
7368
end
69+
alias_method :to_hash, :to_h
70+
def_delegator :to_h, :to_json, :to_json
71+
72+
def_delegator :to_h, :to_s, :to_s
73+
alias_method :to_str, :to_s
7474

7575
private
7676

7777
def owner_info
7878
@owner_info ||= begin
7979
Value.new(
80+
"owner",
8081
proc do |c|
8182
(c.organization(owner_login) || c.user(owner_login) || {}).to_h
8283
end

lib/jekyll-github-metadata/repository.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ def repo_compat
4646
def repo_info
4747
@repo_info ||= begin
4848
options = { :accept => "application/vnd.github.drax-preview+json" }
49-
(Value.new(proc { |c| c.repository(nwo, options) }).render || {})
49+
(Value.new("repo_info", proc { |c| c.repository(nwo, options) }).render || {})
5050
end
5151
end
5252

5353
def repo_pages_info
54-
@repo_pages_info ||= (Value.new(proc { |c| c.pages(nwo, repo_pages_info_opts) }).render || {})
54+
@repo_pages_info ||= (Value.new("repo_pages_info", proc { |c| c.pages(nwo, repo_pages_info_opts) }).render || {})
5555
end
5656

5757
def repo_pages_info_opts
@@ -103,29 +103,29 @@ def wiki_url
103103
end
104104

105105
def organization_repository?
106-
memoize_value :@is_organization_repository, Value.new(proc { |c| !!c.organization(owner) })
106+
memoize_value :@is_organization_repository, Value.new("organization_repository?", proc { |c| !!c.organization(owner) })
107107
end
108108

109109
def owner_public_repositories
110-
memoize_value :@owner_public_repositories, Value.new(proc { |c| c.list_repos(owner, "type" => "public") })
110+
memoize_value :@owner_public_repositories, Value.new("owner_public_repositories", proc { |c| c.list_repos(owner, "type" => "public") })
111111
end
112112

113113
def organization_public_members
114-
memoize_value :@organization_public_members, Value.new(proc do |c|
114+
memoize_value :@organization_public_members, Value.new("organization_public_members", proc do |c|
115115
c.organization_public_members(owner) if organization_repository?
116116
end)
117117
end
118118

119119
def contributors
120-
memoize_value :@contributors, Value.new(proc { |c| c.contributors(nwo) })
120+
memoize_value :@contributors, Value.new("contributors", proc { |c| c.contributors(nwo) })
121121
end
122122

123123
def releases
124-
memoize_value :@releases, Value.new(proc { |c| c.releases(nwo) })
124+
memoize_value :@releases, Value.new("releases", proc { |c| c.releases(nwo) })
125125
end
126126

127127
def latest_release
128-
memoize_value :@latest_release, Value.new(proc { |c| c.latest_release(nwo) })
128+
memoize_value :@latest_release, Value.new("latest_release", proc { |c| c.latest_release(nwo) })
129129
end
130130

131131
def source

lib/jekyll-github-metadata/sanitizer.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ def sanitize(resource)
2929
true
3030
when NilClass
3131
nil
32+
when String
33+
resource
3234
else
3335
if resource.respond_to?(:to_hash)
3436
sanitize_resource(resource)

spec/integration_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,8 @@
3939
expect(stub).to have_been_requested
4040
end
4141
end
42+
43+
it "presents the owner data as a Hash" do
44+
expect(subject["owner"]).to be_a(Hash)
45+
end
4246
end

spec/spec_helpers/integration_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def expected_values
1515
"build_revision" => %r![a-f0-9]{40}!,
1616
"project_title" => "github-metadata",
1717
"project_tagline" => ":octocat: `site.github`",
18-
"owner" => Regexp.new('"html_url": "https://github.com/jekyll",\s+"id": 3083652'),
18+
"owner" => Regexp.new('"html_url"=>"https://github.com/jekyll",\s+"id"=>3083652'),
1919
"owner_name" => "jekyll",
2020
"owner_url" => "https://github.com/jekyll",
2121
"owner_gravatar_url" => "https://github.com/jekyll.png",

0 commit comments

Comments
 (0)