commit
						6358a8f92c
					
				|  | @ -10,7 +10,6 @@ AllCops: | |||
|   - lib/jekyll/document.rb | ||||
|   - lib/jekyll/regenerator.rb | ||||
|   - lib/jekyll/renderer.rb | ||||
|   - lib/jekyll/utils.rb | ||||
|   - bin/**/* | ||||
|   - benchmark/**/* | ||||
|   - script/**/* | ||||
|  |  | |||
|  | @ -2,27 +2,25 @@ | |||
| module Jekyll | ||||
|   module Utils | ||||
|     extend self | ||||
|     autoload :Platforms, 'jekyll/utils/platforms' | ||||
|     autoload :Platforms, "jekyll/utils/platforms" | ||||
|     autoload :Ansi, "jekyll/utils/ansi" | ||||
| 
 | ||||
|     # Constants for use in #slugify | ||||
|     SLUGIFY_MODES = %w(raw default pretty) | ||||
|     SLUGIFY_MODES = %w(raw default pretty).freeze | ||||
|     SLUGIFY_RAW_REGEXP = Regexp.new('\\s+').freeze | ||||
|     SLUGIFY_DEFAULT_REGEXP = Regexp.new('[^[:alnum:]]+').freeze | ||||
|     SLUGIFY_DEFAULT_REGEXP = Regexp.new("[^[:alnum:]]+").freeze | ||||
|     SLUGIFY_PRETTY_REGEXP = Regexp.new("[^[:alnum:]._~!$&'()+,;=@]+").freeze | ||||
| 
 | ||||
|     # Takes an indented string and removes the preceding spaces on each line | ||||
| 
 | ||||
|     def strip_heredoc(str) | ||||
|       str.gsub(/^[ \t]{#{(str.scan(/^[ \t]*(?=\S)/).min || "").size}}/, "") | ||||
|       str.gsub(%r!^[ \t]{#{(str.scan(%r!^[ \t]*(?=\S)!).min || "").size}}!, "") | ||||
|     end | ||||
| 
 | ||||
|     # Takes a slug and turns it into a simple title. | ||||
| 
 | ||||
|     def titleize_slug(slug) | ||||
|       slug.split("-").map! do |val| | ||||
|         val.capitalize | ||||
|       end.join(" ") | ||||
|       slug.split("-").map!(&:capitalize).join(" ") | ||||
|     end | ||||
| 
 | ||||
|     # Non-destructive version of deep_merge_hashes! See that method. | ||||
|  | @ -42,21 +40,9 @@ module Jekyll | |||
|     # | ||||
|     # Thanks to whoever made it. | ||||
|     def deep_merge_hashes!(target, overwrite) | ||||
|       target.merge!(overwrite) do |key, old_val, new_val| | ||||
|         if new_val.nil? | ||||
|           old_val | ||||
|         else | ||||
|           mergable?(old_val) && mergable?(new_val) ? deep_merge_hashes(old_val, new_val) : new_val | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       if target.respond_to?(:default_proc) && overwrite.respond_to?(:default_proc) && target.default_proc.nil? | ||||
|         target.default_proc = overwrite.default_proc | ||||
|       end | ||||
| 
 | ||||
|       target.each do |key, val| | ||||
|         target[key] = val.dup if val.frozen? && duplicable?(val) | ||||
|       end | ||||
|       merge_values(target, overwrite) | ||||
|       merge_default_proc(target, overwrite) | ||||
|       duplicate_frozen_values(target) | ||||
| 
 | ||||
|       target | ||||
|     end | ||||
|  | @ -84,7 +70,9 @@ module Jekyll | |||
|     # Returns an array | ||||
|     def pluralized_array_from_hash(hash, singular_key, plural_key) | ||||
|       [].tap do |array| | ||||
|         array << (value_from_singular_key(hash, singular_key) || value_from_plural_key(hash, plural_key)) | ||||
|         value = value_from_singular_key(hash, singular_key) | ||||
|         value ||= value_from_plural_key(hash, plural_key) | ||||
|         array << value | ||||
|       end.flatten.compact | ||||
|     end | ||||
| 
 | ||||
|  | @ -146,11 +134,13 @@ module Jekyll | |||
|     # Determines whether a given file has | ||||
|     # | ||||
|     # Returns true if the YAML front matter is present. | ||||
|     # rubocop: disable PredicateName | ||||
|     def has_yaml_header?(file) | ||||
|       !!(File.open(file, 'rb') { |f| f.readline } =~ /\A---\s*\r?\n/) | ||||
|       !!(File.open(file, "rb", &:readline) =~ %r!\A---\s*\r?\n!) | ||||
|     rescue EOFError | ||||
|       false | ||||
|     end | ||||
|     # rubocop: enable PredicateName | ||||
| 
 | ||||
|     # Slugify a filename or title. | ||||
|     # | ||||
|  | @ -185,7 +175,7 @@ module Jekyll | |||
|     # | ||||
|     # Returns the slugified string. | ||||
|     def slugify(string, mode: nil, cased: false) | ||||
|       mode ||= 'default' | ||||
|       mode ||= "default" | ||||
|       return nil if string.nil? | ||||
| 
 | ||||
|       unless SLUGIFY_MODES.include?(mode) | ||||
|  | @ -195,21 +185,21 @@ module Jekyll | |||
|       # Replace each character sequence with a hyphen | ||||
|       re = | ||||
|         case mode | ||||
|         when 'raw' | ||||
|         when "raw" | ||||
|           SLUGIFY_RAW_REGEXP | ||||
|         when 'default' | ||||
|         when "default" | ||||
|           SLUGIFY_DEFAULT_REGEXP | ||||
|         when 'pretty' | ||||
|         when "pretty" | ||||
|           # "._~!$&'()+,;=@" is human readable (not URI-escaped) in URL | ||||
|           # and is allowed in both extN and NTFS. | ||||
|           SLUGIFY_PRETTY_REGEXP | ||||
|         end | ||||
| 
 | ||||
|       # Strip according to the mode | ||||
|       slug = string.gsub(re, '-') | ||||
|       slug = string.gsub(re, "-") | ||||
| 
 | ||||
|       # Remove leading/trailing hyphen | ||||
|       slug.gsub!(/^\-|\-$/i, '') | ||||
|       slug.gsub!(%r!^\-|\-$!i, "") | ||||
| 
 | ||||
|       slug.downcase! unless cased | ||||
|       slug | ||||
|  | @ -280,7 +270,7 @@ module Jekyll | |||
|     # Returns matched pathes | ||||
|     def safe_glob(dir, patterns, flags = 0) | ||||
|       return [] unless Dir.exist?(dir) | ||||
|       pattern = File.join(Array patterns) | ||||
|       pattern = File.join(Array(patterns)) | ||||
|       return [dir] if pattern.empty? | ||||
|       Dir.chdir(dir) do | ||||
|         Dir.glob(pattern, flags).map { |f| File.join(dir, f) } | ||||
|  | @ -297,5 +287,36 @@ module Jekyll | |||
|       merged | ||||
|     end | ||||
| 
 | ||||
|     private | ||||
|     def merge_values(target, overwrite) | ||||
|       target.merge!(overwrite) do |_key, old_val, new_val| | ||||
|         if new_val.nil? | ||||
|           old_val | ||||
|         elsif mergable?(old_val) && mergable?(new_val) | ||||
|           deep_merge_hashes(old_val, new_val) | ||||
|         else | ||||
|           new_val | ||||
|         end | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     private | ||||
|     def merge_default_proc(target, overwrite) | ||||
|       if default_proc?(target) && default_proc?(overwrite) && target.default_proc.nil? | ||||
|         target.default_proc = overwrite.default_proc | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     private | ||||
|     def default_proc?(object) | ||||
|       object.respond_to?(:default_proc) | ||||
|     end | ||||
| 
 | ||||
|     private | ||||
|     def duplicate_frozen_values(target) | ||||
|       target.each do |key, val| | ||||
|         target[key] = val.dup if val.frozen? && duplicable?(val) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue