Files
news.gitea.happylizard.me/bin/gems/jekyll-github-metadata-2.16.1/lib/jekyll-github-metadata/sanitizer.rb
T
pizza2d1 4cee170d66
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
Add bin and edit workflow
2026-09-16 13:11:16 -06:00

62 lines
1.8 KiB
Ruby

# frozen_string_literal: true
module Jekyll
module GitHubMetadata
module Sanitizer
extend self
# Sanitize an object.
# When the resource is either `false`, `true`, `nil` or a number,
# it returns the resource as-is. When the resource is an array,
# it maps over the entire array, sanitizing each of its values.
# When the resource responds to the #to_hash method, it returns
# the value of #sanitize_resource (see below). If none of the
# aforementioned conditions are met, the return value of #to_s
# is used.
#
# resource - an Object
#
# Returns the sanitized resource.
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength
def sanitize(resource)
case resource
when Array
resource.map { |item| sanitize(item) }
when Numeric, Time
resource
when FalseClass
false
when TrueClass
true
when NilClass
nil
when String
resource
when Value
resource.render
else
if resource.respond_to?(:to_hash)
sanitize_resource(resource)
else
resource.to_s
end
end
end
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength
# Sanitize the Sawyer Resource or Hash
# Note: the object must respond to :to_hash for this to work.
# Consider using #sanitize instead of this method directly.
#
# resource - an Object which responds to :to_hash
#
# Returns the sanitized sawyer resource or hash as a hash.
def sanitize_resource(resource)
resource.to_hash.each_with_object({}) do |(k, v), result|
result[k.to_s] = sanitize(v)
result
end
end
end
end
end