Class: Hyde::Node Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/hyde/node.rb

Overview

This class is abstract.

Abstract class that reacts to request navigation. Does nothing by default, behaviour should be overriden through

reject and #process

Direct Known Subclasses

Path, Probe

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, parent:) ⇒ Node

Returns a new instance of Node.

Parameters:

  • path (Object)


12
13
14
15
16
17
# File 'lib/hyde/node.rb', line 12

def initialize(path, parent:)
  @pattern = Pattern.new(path).freeze
  @properties = Hyde::Util::Lookup.new(parent&.properties)
  @root = nil
  @remap = false
end

Instance Attribute Details

#remapObject

Returns the value of attribute remap.



69
70
71
# File 'lib/hyde/node.rb', line 69

def remap
  @remap
end

#rootObject

Returns the value of attribute root.



69
70
71
# File 'lib/hyde/node.rb', line 69

def root
  @root
end

Instance Method Details

#go(request) ⇒ Boolean

Try to navigate the path. Run method callback in response.

Parameters:

Returns:

  • (Boolean)


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/hyde/node.rb', line 38

def go(request)
  # rejected at pattern
  return reject(request) unless @pattern.match?(request.path)

  request.push_state
  path, splat, param = @pattern.match(request.path)
  do_filepath(request, request.path.delete_suffix(path))
  request.path = path
  request.splat.append(*splat)
  request.param.merge!(param)
  value = process(request)
  # rejected at callback - restore state
  request.pop_state unless value
  # finally, return process value
  value
end

#process(_request) ⇒ Object

Method callback on successful request navigation

Parameters:

Returns:

  • true



65
66
67
# File 'lib/hyde/node.rb', line 65

def process(_request)
  true
end

#reject(_request) ⇒ Object

Method callback on failed request navigation

Parameters:

Returns:

  • false



58
59
60
# File 'lib/hyde/node.rb', line 58

def reject(_request)
  false
end