Module: Aygabtu::Scope::NamespaceController

Defined in:
lib/aygabtu/scope/namespace_controller.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.factory_methodsObject



44
45
46
# File 'lib/aygabtu/scope/namespace_controller.rb', line 44

def self.factory_methods
  [ :namespace, :controller ]
end

Instance Method Details

#controller(name) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/aygabtu/scope/namespace_controller.rb', line 13

def controller(name)
  raise "nesting/chaining controller scopes makes no sense" if @data[:controller]
  raise "nesting/chaining namespace in/after action makes no sense" if @data[:action]

  new_controller = name.to_s
  new_data = @data.dup.merge(controller: new_controller)
  self.class.new(new_data)
end

#inspect_dataObject



38
39
40
41
42
# File 'lib/aygabtu/scope/namespace_controller.rb', line 38

def inspect_data
  super.merge(
    namespace: inspected_or_nil(@data[:namespace]),
    controller: inspected_or_nil(@data[:controller]))
end

#matches_route?(route) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/aygabtu/scope/namespace_controller.rb', line 22

def matches_route?(route)
  namespace, controller = @data[:namespace], @data[:controller]

  return false if (namespace || controller) && !route.controller
  return super unless namespace || controller

  namespace = Pathname(namespace || '')
  path = namespace.join(controller || '').to_s
  if controller
    path == route.controller
  else
    controller_namespace = route.controller_namespace || ''
    (controller_namespace + '/').start_with?(path + '/')
  end && super
end

#namespace(name) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/aygabtu/scope/namespace_controller.rb', line 4

def namespace(name)
  raise "nesting/chaining namespace in/after controller makes no sense" if @data[:controller]
  raise "nesting/chaining namespace in/after action makes no sense" if @data[:action]

  new_namespace = Pathname(@data[:namespace] || '').join(name.to_s).to_s
  new_data = @data.dup.merge(namespace: new_namespace)
  self.class.new(new_data)
end