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) | ||||
|       end | ||||
| 
 | ||||
|       def theme | ||||
|         @theme_drop ||= ThemeDrop.new(@obj.theme) if @obj.theme | ||||
|       end | ||||
| 
 | ||||
|       private | ||||
| 
 | ||||
|       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