Class Nanoc::Site
In: lib/nanoc/base/source_data/site.rb
lib/nanoc/helpers/capturing.rb
Parent: Object

The in-memory representation of a nanoc site. It holds references to the following site data:

In addition, each site has a {config} hash which stores the site configuration.

The physical representation of a {Nanoc::Site} is usually a directory that contains a configuration file, site data, a rakefile, a rules file, etc. The way site data is stored depends on the data source.

Methods

Constants

DEFAULT_DATA_SOURCE_CONFIG = { :type => 'filesystem_unified', :items_root => '/', :layouts_root => '/', :config => {}   The default configuration for a data source. A data source‘s configuration overrides these options.
DEFAULT_CONFIG = { :text_extensions => %w( css erb haml htm html js less markdown md php rb sass scss txt xhtml xml coffee hb handlebars mustache ms ).sort, :output_dir => 'output', :data_sources => [ {} ], :index_filenames => [ 'index.html' ], :enable_output_diff => false, :prune => { :auto_prune => false, :exclude => [ '.git', '.hg', '.svn', 'CVS' ] }   The default configuration for a site. A site‘s configuration overrides these options: when a {Nanoc::Site} is created with a configuration that lacks some options, the default value will be taken from `DEFAULT_CONFIG`.

Public Class methods

@return [String] filename of the nanoc config file in the current working directory, or nil if there is none

@api private

@return [Boolean] true if the current working directory is a nanoc site, false otherwise

@api private

Creates a site object for the site specified by the given `dir_or_config_hash` argument.

@param [Hash, String] dir_or_config_hash If a string, contains the path

  to the site directory; if a hash, contains the site configuration.

Public Instance methods

@api private

Returns this site’s code snippets.

@return [Array<Nanoc::CodeSnippet>] The list of code snippets in this

  site

Compiles the site.

@return [void]

@since 3.2.0

Returns the compiler for this site. Will create a new compiler if none exists yet.

@return [Nanoc::Compiler] The compiler for this site

Returns the site configuration. It has the following keys:

  • `text_extensions` (`Array<String>`) - A list of file extensions that will cause nanoc to threat the file as textual instead of binary. When the data source finds a content file with an extension that is included in this list, it will be marked as textual.
  • `output_dir` (`String`) - The directory to which compiled items will be written. This path is relative to the current working directory, but can also be an absolute path.
  • `data_sources` (`Array<Hash>`) - A list of data sources for this site. See below for documentation on the structure of this list. By default, there is only one data source of the filesystem type mounted at `/`.
  • `index_filenames` (`Array<String>`) - A list of filenames that will be stripped off full item paths to create cleaner URLs. For example, `/about/` will be used instead of `/about/index.html`). The default value should be okay in most cases.
  • `enable_output_diff` (`Boolean`) - True when diffs should be generated for the compiled content of this site; false otherwise.

The list of data sources consists of hashes with the following keys:

  • `:type` (`String`) - The type of data source, i.e. its identifier.
  • `:items_root` (`String`) - The prefix that should be given to all items returned by the {items} method (comparable to mount points for filesystems in Unix-ish OSes).
  • `:layouts_root` (`String`) - The prefix that should be given to all layouts returned by the {layouts} method (comparable to mount points for filesystems in Unix-ish OSes).
  • `:config` (`Hash`) - A hash containing the configuration for this data source. nanoc itself does not use this hash. This is especially useful for online data sources; for example, a Twitter data source would need the username of the account from which to fetch tweets.

@return [Hash] The site configuration

Returns the data sources for this site. Will create a new data source if none exists yet.

@return [Array<Nanoc::DataSource>] The list of data sources for this

  site

@raise [Nanoc::Errors::UnknownDataSource] if the site configuration

  specifies an unknown data source

Prevents all further modifications to itself, its items, its layouts etc.

@return [void]

Returns this site’s items.

@return [Array<Nanoc::Item>] The list of items in this site

Returns this site’s layouts.

@return [Array<Nanoc::Layouts>] The list of layout in this site

Loads the site data. It is not necessary to call this method explicitly; it will be called when it is necessary.

@api private

@return [void]

@deprecated It is no longer necessary to explicitly load site data. It

  is safe to remove all {#load_data} calls.

Fills each item‘s parent reference and children array with the appropriate items. It is probably not necessary to call this method manually; it will be called when appropriate.

@return [void]

Removes all child-parent links.

@api private

@return [void]

Undoes the effects of {load}. Used when {load} raises an exception.

@api private

[Validate]