class Confinement::Site

Attributes

asset_blobs[R]
content_blobs[R]
guesses[RW]
layout_blobs[R]
root[R]
route_identifiers[R]
view_context_helpers[RW]

Public Class Methods

new(config) { |self| ... } click to toggle source
# File lib/confinement.rb, line 231
def initialize(config)
  @root = config.root

  yield(self)

  @view_context_helpers ||= []
  @guesses ||= Rendering.guesses

  @route_identifiers = RouteIdentifiers.new
  @asset_blobs = Blobs.new(scoped_root: config.source.assets_path, file_abstraction_class: Asset)
  @content_blobs = Blobs.new(scoped_root: config.source.contents_path, file_abstraction_class: Content)
  @layout_blobs = Blobs.new(scoped_root: config.source.layouts_path, file_abstraction_class: Layout)
end

Public Instance Methods

partial_compilation() click to toggle source
# File lib/confinement.rb, line 275
def partial_compilation
  { asset_blobs: @asset_blobs }
end
partial_compilation=(previous_partial_compilation) click to toggle source
# File lib/confinement.rb, line 279
def partial_compilation=(previous_partial_compilation)
  return if previous_partial_compilation.nil?

  @asset_blobs = previous_partial_compilation.fetch(:asset_blobs)

  nil
end
rules() { |assets: asset_blobs, layouts: layout_blobs, contents: content_blobs, routes: route_identifiers| ... } click to toggle source
# File lib/confinement.rb, line 255
def rules
  yield(
    assets: @asset_blobs,
    layouts: @layout_blobs,
    contents: @content_blobs,
    routes: @route_identifiers
  )

  guesser = Rendering::Guesser.new(guesses)
  guess_renderers(guesser, @layout_blobs)
  guess_renderers(guesser, @content_blobs)

  @asset_blobs.done!
  @layout_blobs.done!
  @content_blobs.done!
  @route_identifiers.done!

  nil
end

Private Instance Methods

guess_renderers(guesser, blobs) click to toggle source
# File lib/confinement.rb, line 289
def guess_renderers(guesser, blobs)
  blobs.send(:lookup).values.each do |blob|
    blob.renderers = blob.renderers.flat_map do |renderer|
      if renderer == :guess
        guesser.call(blob.input_path)
      else
        renderer
      end
    end
  end
end