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.