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