class Shark::Permissions::Resource

Attributes

name[R]
parts[R]

Public Class Methods

new(value) click to toggle source
# File lib/shark/permissions/resource.rb, line 8
def initialize(value)
  @name = case value
          when String
            value
          when Array
            value.map(&:to_s).join(Shark::Permissions.delimiter)
          end
  @parts = @name.split(Shark::Permissions.delimiter)
end

Public Instance Methods

ancestors() click to toggle source
# File lib/shark/permissions/resource.rb, line 27
def ancestors
  ancestors_and_self[0..-2]
end
ancestors_and_self() click to toggle source
# File lib/shark/permissions/resource.rb, line 18
def ancestors_and_self
  names = []
  parts.each_with_index do |_, i|
    names << parts[0..i].join(Shark::Permissions.delimiter)
  end

  names
end
parent() click to toggle source
# File lib/shark/permissions/resource.rb, line 31
def parent
  parent_name = parts[0..-2].join(Shark::Permissions.delimiter)
  parent_name.presence
end
subresource_of?(value) click to toggle source
# File lib/shark/permissions/resource.rb, line 36
def subresource_of?(value)
  return true if name == value

  regexp = value.gsub('*', '[a-z\-_0-9]*')
  "#{name}::".match(/\A#{regexp}::/).present?
end
super_resource_of?(value) click to toggle source
# File lib/shark/permissions/resource.rb, line 43
def super_resource_of?(value)
  return true if name == value

  regexp = name.gsub('*', '[a-z\-_0-9]*')
  "#{value}::".match(/\A#{regexp}::/).present?
end
to_s() click to toggle source
# File lib/shark/permissions/resource.rb, line 54
def to_s
  name
end
wildcard?() click to toggle source
# File lib/shark/permissions/resource.rb, line 50
def wildcard?
  parts.last == Shark::Permissions.any_matcher
end