Introduce `theme` drop to expose theme details (#9129)
Merge pull request 9129
This commit is contained in:
parent
5b64b27b2c
commit
b8cf7cf96d
|
@ -0,0 +1,36 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module Jekyll
|
||||||
|
module Drops
|
||||||
|
class ThemeDrop < Drop
|
||||||
|
delegate_methods :root, :version
|
||||||
|
delegate_method_as :runtime_dependencies, :dependencies
|
||||||
|
|
||||||
|
def authors
|
||||||
|
@authors ||= gemspec.authors.join(", ")
|
||||||
|
end
|
||||||
|
|
||||||
|
def version
|
||||||
|
@version ||= gemspec.version.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
def description
|
||||||
|
@description ||= gemspec.description || gemspec.summary
|
||||||
|
end
|
||||||
|
|
||||||
|
def metadata
|
||||||
|
@metadata ||= gemspec.metadata
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def gemspec
|
||||||
|
@gemspec ||= @obj.send(:gemspec)
|
||||||
|
end
|
||||||
|
|
||||||
|
def fallback_data
|
||||||
|
@fallback_data ||= {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -16,6 +16,10 @@ module Jekyll
|
||||||
@site_drop ||= SiteDrop.new(@obj)
|
@site_drop ||= SiteDrop.new(@obj)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def theme
|
||||||
|
@theme_drop ||= ThemeDrop.new(@obj.theme) if @obj.theme
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def fallback_data
|
def fallback_data
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "helper"
|
||||||
|
|
||||||
|
class TestThemeDrop < JekyllUnitTest
|
||||||
|
should "be initialized only for gem-based themes" do
|
||||||
|
assert_nil fixture_site.to_liquid.theme
|
||||||
|
end
|
||||||
|
|
||||||
|
context "a theme drop" do
|
||||||
|
setup do
|
||||||
|
@drop = fixture_site("theme" => "test-theme").to_liquid.theme
|
||||||
|
end
|
||||||
|
|
||||||
|
should "respond to `key?`" do
|
||||||
|
assert_respond_to @drop, :key?
|
||||||
|
end
|
||||||
|
|
||||||
|
should "export relevant data to Liquid templates" do
|
||||||
|
expected = {
|
||||||
|
"authors" => "Jekyll",
|
||||||
|
"dependencies" => [],
|
||||||
|
"description" => "This is a theme used to test Jekyll",
|
||||||
|
"metadata" => {},
|
||||||
|
"root" => theme_dir,
|
||||||
|
"version" => "0.1.0",
|
||||||
|
}
|
||||||
|
expected.each_key do |key|
|
||||||
|
assert @drop.key?(key)
|
||||||
|
assert_equal expected[key], @drop[key]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue