class Nanoc::Core::Site

@api private

Attributes

code_snippets[R]
config[R]
data_source[RW]

Public Class Methods

new(config:, code_snippets:, data_source:) click to toggle source
# File lib/nanoc/core/site.rb, line 21
def initialize(config:, code_snippets:, data_source:)
  @config = config
  @code_snippets = code_snippets
  @data_source = data_source

  @preprocessed = false

  ensure_identifier_uniqueness(@data_source.items, 'item')
  ensure_identifier_uniqueness(@data_source.layouts, 'layout')
end

Public Instance Methods

ensure_identifier_uniqueness(objects, type) click to toggle source
# File lib/nanoc/core/site.rb, line 58
def ensure_identifier_uniqueness(objects, type)
  seen = Set.new
  objects.each do |obj|
    if seen.include?(obj.identifier)
      raise DuplicateIdentifierError.new(obj.identifier, type)
    end

    seen << obj.identifier
  end
  self
end
freeze() click to toggle source
# File lib/nanoc/core/site.rb, line 49
def freeze
  config.freeze
  items.freeze
  layouts.freeze
  code_snippets.__nanoc_freeze_recursively
  self
end
items() click to toggle source
# File lib/nanoc/core/site.rb, line 40
def items
  @data_source.items
end
layouts() click to toggle source
# File lib/nanoc/core/site.rb, line 44
def layouts
  @data_source.layouts
end
mark_as_preprocessed() click to toggle source
# File lib/nanoc/core/site.rb, line 32
def mark_as_preprocessed
  @preprocessed = true
end
preprocessed?() click to toggle source
# File lib/nanoc/core/site.rb, line 36
def preprocessed?
  @preprocessed
end