class Jekyll::Commands::Serve::Servlet

def conditionally_inject_charset(res)

Refer `script/vendor-mimes` in the repository for further details.

the charset metadata.
Inject charset based on Jekyll config only if our mime-types database contains
def conditionally_inject_charset(res)
  typ = res.header["content-type"]
  return unless @mime_types_charset.key?(typ)
  return if %r!;\s*charset=!.match?(typ)
  res.header["content-type"] = "#{typ}; charset=#{@jekyll_opts["encoding"]}"
end

def do_GET(req, res)

rubocop:disable Naming/MethodName
def do_GET(req, res)
  rtn = super
  if @jekyll_opts["livereload"]
    return rtn if SkipAnalyzer.skip_processing?(req, res, @jekyll_opts)
    processor = BodyProcessor.new(res.body, @jekyll_opts)
    processor.process!
    res.body = processor.new_body
    res.content_length = processor.content_length.to_s
    if processor.livereload_added
      # Add a header to indicate that the page content has been modified
      res["X-Rack-LiveReload"] = "1"
    end
  end
  conditionally_inject_charset(res)
  res.header.merge!(@headers)
  rtn
end

def initialize(server, root, callbacks)

def initialize(server, root, callbacks)
  # So we can access them easily.
  @jekyll_opts = server.config[:JekyllOptions]
  @mime_types_charset = server.config[:MimeTypesCharset]
  set_defaults
  super
end

def search_file(req, res, basename)

def search_file(req, res, basename)
  # /file.* > /file/index.html > /file.html
  super ||
    super(req, res, "#{basename}.html") ||
    super(req, res, "#{basename}.xhtml")
end

def search_index_file(req, res)

def search_index_file(req, res)
  super ||
    search_file(req, res, ".html") ||
    search_file(req, res, ".xhtml")
end

def set_defaults

def set_defaults
  hash_ = @jekyll_opts.fetch("webrick", {}).fetch("headers", {})
  DEFAULTS.each_with_object(@headers = hash_) do |(key, val), hash|
    hash[key] = val unless hash.key?(key)
  end
end