lib/nanoc/base/source_data/site.rb in nanoc-3.6.9 vs lib/nanoc/base/source_data/site.rb in nanoc-3.6.10
- old
+ new
@@ -243,10 +243,14 @@
load_items
load_layouts
data_sources.each { |ds| ds.unuse }
setup_child_parent_links
+ # Ensure unique
+ ensure_identifier_uniqueness(@items, 'item')
+ ensure_identifier_uniqueness(@layouts, 'layout')
+
# Load compiler too
# FIXME this should not be necessary
compiler.load
@loaded = true
@@ -341,9 +345,19 @@
@layouts = []
data_sources.each do |ds|
layouts_in_ds = ds.layouts
layouts_in_ds.each { |i| i.identifier = File.join(ds.layouts_root, i.identifier) }
@layouts.concat(layouts_in_ds)
+ end
+ end
+
+ def ensure_identifier_uniqueness(objects, type)
+ seen = Set.new
+ objects.each do |obj|
+ if seen.include?(obj.identifier)
+ raise Nanoc::Errors::DuplicateIdentifier.new(obj.identifier, type)
+ end
+ seen << obj.identifier
end
end
# Builds the configuration hash based on the given argument. Also see
# {#initialize} for details.