Noosfero/noosfero

View on GitHub
plugins/metadata/lib/metadata_plugin/specs.rb

Summary

Maintainability
A
0 mins
Test Coverage
module MetadataPlugin::Specs
  module ClassMethods
    def self.extended(base)
      base.class_attribute :metadata_specs
      base.metadata_specs ||= {}
    end

    def metadata_spec(spec = {})
      namespace = spec[:namespace]
      # setters are used to avoid propagation to super classes, see http://apidock.com/rails/Class/class_attribute
      if _spec = self.metadata_specs[namespace]
        self.metadata_specs = self.metadata_specs.deep_merge(namespace => _spec.deep_merge(spec))
      else
        self.metadata_specs = self.metadata_specs.deep_merge(namespace => spec)
      end
    end
  end
end