class Bridgetown::Resource::Destination

Attributes

output_ext[RW]

@return [String]

resource[RW]

@return [Bridgetown::Resource::Base]

Public Class Methods

new(resource) click to toggle source

@param resource [Bridgetown::Resource::Base]

# File lib/bridgetown-core/resource/destination.rb, line 13
def initialize(resource)
  @resource = resource
  @output_ext = resource.transformer.final_ext
end

Public Instance Methods

absolute_url() click to toggle source
# File lib/bridgetown-core/resource/destination.rb, line 18
def absolute_url
  Addressable::URI.parse(
    resource.site.config.url.to_s + relative_url
  ).normalize.to_s
end
final_ext() click to toggle source
# File lib/bridgetown-core/resource/destination.rb, line 29
def final_ext
  output_ext || resource.extname
end
output_path() click to toggle source
# File lib/bridgetown-core/resource/destination.rb, line 33
def output_path
  path = URL.unescape_path(relative_url)
  if resource.site.base_path.present?
    path = path.delete_prefix resource.site.base_path(strip_slash_only: true)
  end
  path = resource.site.in_dest_dir(path)
  path = File.join(path, "index.html") if relative_url.end_with? "/"
  path
end
relative_url() click to toggle source
# File lib/bridgetown-core/resource/destination.rb, line 24
def relative_url
  @processor ||= PermalinkProcessor.new(resource)
  @processor.transform
end
write(output) click to toggle source
# File lib/bridgetown-core/resource/destination.rb, line 43
def write(output)
  path = output_path
  FileUtils.mkdir_p(File.dirname(path))
  Bridgetown.logger.debug "Writing:", path
  File.write(path, output, mode: "wb")
end