Module: Sinatra::API::ResourceAliases

Included in:
Sinatra::API
Defined in:
lib/sinatra/api/resource_aliases.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#resource_aliasesObject

Returns the value of attribute resource_aliases.



4
5
6
# File 'lib/sinatra/api/resource_aliases.rb', line 4

def resource_aliases
  @resource_aliases
end

Class Method Details

.export_alias(resource, name) ⇒ Object (private)



33
34
35
36
37
38
# File 'lib/sinatra/api/resource_aliases.rb', line 33

def self.export_alias(resource, name)
  base = Sinatra::API
  base.aliases_for(name).each do |resource_alias|
    base.instance.instance_variable_set("@#{resource_alias}", resource)
  end
end

.extended(base) ⇒ Object



6
7
8
9
# File 'lib/sinatra/api/resource_aliases.rb', line 6

def self.extended(base)
  base.resource_aliases = {}
  base.on :resource_located, &method(:export_alias)
end

Instance Method Details

#alias_resource(original, resource_alias) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/sinatra/api/resource_aliases.rb', line 11

def alias_resource(original, resource_alias)
  key, resource_alias = original.to_sym, resource_alias.to_s

  self.resource_aliases[key] ||= []

  return if self.resource_aliases[key].include?(resource_alias)
  return if key.to_s == resource_alias

  self.resource_aliases[key] << resource_alias
  logger.debug "API resource #{original} is now aliased as #{resource_alias}"
end

#aliases_for(resource) ⇒ Object



23
24
25
# File 'lib/sinatra/api/resource_aliases.rb', line 23

def aliases_for(resource)
  self.resource_aliases[resource.to_sym] || []
end

#reset_aliases!Object



27
28
29
# File 'lib/sinatra/api/resource_aliases.rb', line 27

def reset_aliases!
  self.resource_aliases = {}
end