71: def add_resource(*resources)
72: resources.each do |resource|
73: raise ArgumentError, "Can only add objects that respond to :ref, not instances of #{resource.class}" unless resource.respond_to?(:ref)
74: end.each { |resource| fail_on_duplicate_type_and_title(resource) }.each do |resource|
75: title_key = title_key_for_ref(resource.ref)
76:
77: @transient_resources << resource if applying?
78: @resource_table[title_key] = resource
79:
80:
81:
82: if resource.respond_to?(:name) and resource.respond_to?(:title) and resource.respond_to?(:isomorphic?) and resource.name != resource.title
83: self.alias(resource, resource.uniqueness_key) if resource.isomorphic?
84: end
85:
86: resource.catalog = self if resource.respond_to?(:catalog=)
87:
88: add_vertex(resource)
89:
90: @relationship_graph.add_vertex(resource) if @relationship_graph
91:
92: yield(resource) if block_given?
93: end
94: end