Initialize mutations for Drops only if necessary (#7657)
Merge pull request 7657
This commit is contained in:
		
							parent
							
								
									6a604daa5a
								
							
						
					
					
						commit
						965aef60e6
					
				|  | @ -30,7 +30,6 @@ module Jekyll | ||||||
|       # Returns nothing |       # Returns nothing | ||||||
|       def initialize(obj) |       def initialize(obj) | ||||||
|         @obj = obj |         @obj = obj | ||||||
|         @mutations = {} # only if mutable: true |  | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|       # Access a method in the Drop or a field in the underlying hash data. |       # Access a method in the Drop or a field in the underlying hash data. | ||||||
|  | @ -42,8 +41,8 @@ module Jekyll | ||||||
|       # |       # | ||||||
|       # Returns the value for the given key, or nil if none exists |       # Returns the value for the given key, or nil if none exists | ||||||
|       def [](key) |       def [](key) | ||||||
|         if self.class.mutable? && @mutations.key?(key) |         if self.class.mutable? && mutations.key?(key) | ||||||
|           @mutations[key] |           mutations[key] | ||||||
|         elsif self.class.invokable? key |         elsif self.class.invokable? key | ||||||
|           public_send key |           public_send key | ||||||
|         else |         else | ||||||
|  | @ -70,7 +69,7 @@ module Jekyll | ||||||
|           public_send("#{key}=", val) |           public_send("#{key}=", val) | ||||||
|         elsif respond_to?(key.to_s) |         elsif respond_to?(key.to_s) | ||||||
|           if self.class.mutable? |           if self.class.mutable? | ||||||
|             @mutations[key] = val |             mutations[key] = val | ||||||
|           else |           else | ||||||
|             raise Errors::DropMutationException, "Key #{key} cannot be set in the drop." |             raise Errors::DropMutationException, "Key #{key} cannot be set in the drop." | ||||||
|           end |           end | ||||||
|  | @ -100,7 +99,7 @@ module Jekyll | ||||||
|       # Returns true if the given key is present |       # Returns true if the given key is present | ||||||
|       def key?(key) |       def key?(key) | ||||||
|         return false if key.nil? |         return false if key.nil? | ||||||
|         return true if self.class.mutable? && @mutations.key?(key) |         return true if self.class.mutable? && mutations.key?(key) | ||||||
| 
 | 
 | ||||||
|         respond_to?(key) || fallback_data.key?(key) |         respond_to?(key) || fallback_data.key?(key) | ||||||
|       end |       end | ||||||
|  | @ -113,7 +112,7 @@ module Jekyll | ||||||
|       # Returns an Array of unique keys for content for the Drop. |       # Returns an Array of unique keys for content for the Drop. | ||||||
|       def keys |       def keys | ||||||
|         (content_methods | |         (content_methods | | ||||||
|           @mutations.keys | |           mutations.keys | | ||||||
|           fallback_data.keys).flatten |           fallback_data.keys).flatten | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|  | @ -204,6 +203,12 @@ module Jekyll | ||||||
|         return yield(key) unless block.nil? |         return yield(key) unless block.nil? | ||||||
|         return default unless default.nil? |         return default unless default.nil? | ||||||
|       end |       end | ||||||
|  | 
 | ||||||
|  |       private | ||||||
|  | 
 | ||||||
|  |       def mutations | ||||||
|  |         @mutations ||= {} | ||||||
|  |       end | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue