module Sinatra::API::ResourceAliases

Attributes

resource_aliases[RW]

Public Class Methods

extended(base) click to toggle source
# File lib/sinatra/api/resource_aliases.rb, line 6
def self.extended(base)
  base.resource_aliases = {}
  base.on :resource_located, &method(:export_alias)
end

Private Class Methods

export_alias(resource, name) click to toggle source
# 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

Public Instance Methods

alias_resource(original, resource_alias) click to toggle source
# 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) click to toggle source
# File lib/sinatra/api/resource_aliases.rb, line 23
def aliases_for(resource)
  self.resource_aliases[resource.to_sym] || []
end
reset_aliases!() click to toggle source
# File lib/sinatra/api/resource_aliases.rb, line 27
def reset_aliases!
  self.resource_aliases = {}
end