class Navtastic::Configuration

Configuration settings

Attributes

base_url[RW]

The base url will be prepended to every item url

Defaults to nil.

@return [String,nil]

reload_renderer[RW]

Should the renderer class be reloaded everytime the menu is rendered?

This is helpful during development, to avoid restarting the server after every change, but should be disabled during production.

Defaults to `false`

@return bool

renderer[R]

The default renderer to use when displaying a menu

Defaults to {Navtastic::Renderer::Simple}.

@return any class that responds to the `.render` method

renderer_options[RW]

Default options passed to the current renderer

Defaults to empty Hash.

@return [Hash]

Public Class Methods

new() click to toggle source
# File lib/navtastic/configuration.rb, line 35
def initialize
  @renderer = Navtastic::Renderer::Simple
  @renderer_options = {}
  @reload_renderer = false
  @base_url = nil
end

Public Instance Methods

current_renderer() click to toggle source

@return [Navtastic::Renderer] renderer to use

Will hot reload the renderer class if needed

# File lib/navtastic/configuration.rb, line 62
def current_renderer
  klass = renderer

  if reload_renderer
    klass = klass.to_s unless klass.is_a?(String)
    Object.const_get(klass)
  else
    klass
  end
end
renderer=(value) click to toggle source

Set the renderer to use for displaying a menu

@param value [Symbol,Class]

# File lib/navtastic/configuration.rb, line 45
def renderer=(value)
  if value.is_a? Symbol
    renderers = available_renderers

    unless renderers.key? value
      raise ArgumentError, "Unknown renderer: #{value}"
    end

    @renderer = renderers[value]
  else
    @renderer = value
  end
end

Private Instance Methods

available_renderers() click to toggle source

Built in renderers

@return Hash

# File lib/navtastic/configuration.rb, line 78
def available_renderers
  {
    bootstrap4: Renderer::Bootstrap4,
    bulma: Renderer::Bulma,
    foundation6: Renderer::Foundation6,
    simple: Renderer::Simple,
  }
end