Module: MediaTypes

Defined in:
lib/media_types.rb,
lib/media_types/dsl.rb,
lib/media_types/hash.rb,
lib/media_types/views.rb,
lib/media_types/object.rb,
lib/media_types/scheme.rb,
lib/media_types/version.rb,
lib/media_types/defaults.rb,
lib/media_types/formatter.rb,
lib/media_types/registrar.rb,
lib/media_types/validations.rb,
lib/media_types/integrations.rb,
lib/media_types/scheme/links.rb,
lib/media_types/scheme/rules.rb,
lib/media_types/constructable.rb,
lib/media_types/scheme/any_of.rb,
lib/media_types/scheme/errors.rb,
lib/media_types/scheme/allow_nil.rb,
lib/media_types/scheme/attribute.rb,
lib/media_types/integrations/http.rb,
lib/media_types/scheme/not_strict.rb,
lib/media_types/integrations/actionpack.rb,
lib/media_types/scheme/output_type_guard.rb,
lib/media_types/scheme/missing_validation.rb,
lib/media_types/scheme/output_empty_guard.rb,
lib/media_types/scheme/validation_options.rb,
lib/media_types/scheme/enumeration_context.rb,
lib/media_types/scheme/enumeration_of_type.rb,
lib/media_types/scheme/rules_exhausted_guard.rb,
lib/media_types/minitest/assert_media_type_format.rb,
lib/media_types/scheme/output_iterator_with_predicate.rb,
lib/media_types/minitest/assert_media_types_registered.rb

Defined Under Namespace

Modules: ActionPackIntegration, Assertions, Dsl, HttpIntegration Classes: AssertionError, Constructable, Defaults, Formatter, Hash, Object, Registerable, Registrar, Scheme, Validations

Constant Summary collapse

COLLECTION_VIEW =

Shortcut used by #collection to #view(‘collection’)

'collection'
INDEX_VIEW =

Shortcut used by #index to #view(‘index’)

'index'
CREATE_VIEW =

Shortcut used by #create to #view(‘create’)

'create'
VERSION =
'1.0.0'
INTEGRATION_METHODS =
%i[register].freeze

Class Method Summary collapse

Class Method Details

.get_organisation(mod) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/media_types.rb', line 20

def self.get_organisation(mod)
  name = mod.name
  prefixes = @organisation_prefixes.keys.select { |p| name.start_with? p }
  return nil unless prefixes.any?
  best = prefixes.max_by { |p| p.length }

  @organisation_prefixes[best]
end

.integrate(integration) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/media_types/integrations.rb', line 8

def integrate(integration)
  INTEGRATION_METHODS.each do |method|
    next unless integration.respond_to?(method)
    self.integrations = (integrations || {}).tap do |x|
      x.merge!(method => (x[method] || []).concat([integration]))
    end
  end
end

.register(registerable) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/media_types/integrations.rb', line 18

INTEGRATION_METHODS.each do |method|
  define_singleton_method method do |*args, &block|
    (integrations || {}).fetch(method) { [] }.each do |integration|
      integration.send(method, *args, &block)
    end
  end

end

.set_organisation(mod, organisation) ⇒ Object



15
16
17
18
# File 'lib/media_types.rb', line 15

def self.set_organisation(mod, organisation)
  @organisation_prefixes ||= {}
  @organisation_prefixes[mod.name] = organisation
end