class Jekyll::Page

def destination(dest)

Returns the destination file path String.

dest - The String path to the destination dir.

Obtain destination path.
def destination(dest)
  @destination ||= {}
  @destination[dest] ||= begin
    path = site.in_dest_dir(dest, URL.unescape_path(url))
    path = File.join(path, "index") if url.end_with?("/")
    path << output_ext unless path.end_with? output_ext
    path
  end
end

def dir

Returns the String destination directory.

permalink is absent, will be '/'
upon generation. This is derived from the permalink or, if
The generated directory into which the page will be placed
def dir
  url.end_with?("/") ? url : url_dir
end

def excerpt

def excerpt
  return @excerpt if defined?(@excerpt)
  @excerpt = data["excerpt"] ? data["excerpt"].to_s : nil
end

def excerpt_separator

def excerpt_separator
  @excerpt_separator ||= (data["excerpt_separator"] || site.config["excerpt_separator"]).to_s
end

def generate_excerpt

def generate_excerpt
  return unless generate_excerpt?
  data["excerpt"] ||= Jekyll::PageExcerpt.new(self)
end

def generate_excerpt?

def generate_excerpt?
  !excerpt_separator.empty? && instance_of?(Jekyll::Page) && html?
end

def html?

Returns the Boolean of whether this Page is HTML or not.
def html?
  HTML_EXTENSIONS.include?(output_ext)
end

def index?

Returns the Boolean of whether this Page is an index file or not.
def index?
  basename == "index"
end

def initialize(site, base, dir, name)

name - The String filename of the file.
dir - The String path between the source and the file.
base - The String path to the source.
site - The Site object.

Initialize a new Page.
def initialize(site, base, dir, name)
  @site = site
  @base = base
  @dir  = dir
  @name = name
  @path = if site.in_theme_dir(base) == base # we're in a theme
            site.in_theme_dir(base, dir, name)
          else
            site.in_source_dir(base, dir, name)
          end
  process(name)
  read_yaml(PathManager.join(base, dir), name)
  generate_excerpt if site.config["page_excerpts"]
  data.default_proc = proc do |_, key|
    site.frontmatter_defaults.find(relative_path, type, key)
  end
  Jekyll::Hooks.trigger :pages, :post_init, self
end

def inspect

Returns the object as a debug String.
def inspect
  "#<#{self.class} @relative_path=#{relative_path.inspect}>"
end

def path

Returns the path to the source file

The path to the source file
def path
  data.fetch("path") { relative_path }
end

def permalink

Returns the String permalink or nil if none has been set.

body.
The full path and filename of the post. Defined in the YAML of the post
def permalink
  data.nil? ? nil : data["permalink"]
end

def process(name)

Returns nothing.
NOTE: `String#gsub` removes all trailing periods (in comparison to `String#chomp`)

name - The String filename of the page file.

Extract information from the page filename.
def process(name)
  return unless name
  self.ext = File.extname(name)
  self.basename = name[0..-ext.length - 1].gsub(%r!\.*\z!, "")
end

def relative_path

The path to the page source file, relative to the site source
def relative_path
  @relative_path ||= PathManager.join(@dir, @name).delete_prefix("/")
end

def render(layouts, site_payload)

Returns String rendered page.

site_payload - The site payload Hash.
layouts - The Hash of {"name" => "layout"}.

Add any necessary layouts to this post
def render(layouts, site_payload)
  site_payload["page"] = to_liquid
  site_payload["paginator"] = pager.to_liquid
  do_layout(site_payload, layouts)
end

def template

Returns the template String.

The template of the permalink.
def template
  if !html?
    "/:path/:basename:output_ext"
  elsif index?
    "/:path/"
  else
    Utils.add_permalink_suffix("/:path/:basename", site.permalink_style)
  end
end

def trigger_hooks(hook_name, *args)

def trigger_hooks(hook_name, *args)
  Jekyll::Hooks.trigger :pages, hook_name, self, *args
end

def url

Returns the String url.

The generated relative url of this page. e.g. /about.html.
def url
  @url ||= URL.new(
    :template     => template,
    :placeholders => url_placeholders,
    :permalink    => permalink
  ).to_s
end

def url_dir

def url_dir
  @url_dir ||= begin
    value = File.dirname(url)
    value.end_with?("/") ? value : "#{value}/"
  end
end

def url_placeholders

desired placeholder replacements. For details see "url.rb"
Returns a hash of URL placeholder names (as symbols) mapping to the
def url_placeholders
  {
    :path       => @dir,
    :basename   => basename,
    :output_ext => output_ext,
  }
end

def write?

def write?
  true
end