class Madness::Settings

Handle the configuration options Each configuration option has three sources

  1. The default value

  2. The setting as provided in the ./.madness.yml

  3. Any override provided later (for example, by the CommandLine class)

Public Class Methods

new() click to toggle source
# File lib/madness/settings.rb, line 14
def initialize
  reset
end

Public Instance Methods

data() click to toggle source
# File lib/madness/settings.rb, line 50
def data
  @data ||= defaults.merge(file_data)
end
defaults() click to toggle source
# File lib/madness/settings.rb, line 54
def defaults
  {
    path:              '.',
    port:              3000,
    bind:              '0.0.0.0',
    renderer:          'redcarpet',
    base_uri:          nil,
    sort_order:        'dirs_first',
    sidebar:           true,
    auto_h1:           true,
    auto_nav:          true,
    auto_toc:          true,
    highlighter:       true,
    copy_code:         true,
    shortlinks:        false,
    source_link:       nil,
    source_link_label: 'Page Source',
    source_link_pos:   'bottom',
    toc:               nil,
    theme:             nil,
    open:              false,
    auth:              false,
    auth_zone:         'Restricted Documentation',
    expose_extensions: nil,
    exclude:           ['^[a-z_\-0-9]+$'],
  }
end
dir_glob() click to toggle source
# File lib/madness/settings.rb, line 46
def dir_glob
  data[:expose_extensions] ? "*.{md,#{data[:expose_extensions].delete(' ')}}" : '*.md'
end
file_exist?() click to toggle source
# File lib/madness/settings.rb, line 38
def file_exist?
  File.exist? filename
end
filename() click to toggle source
# File lib/madness/settings.rb, line 42
def filename
  '.madness.yml'
end
method_missing(name, *args, &_block) click to toggle source
# File lib/madness/settings.rb, line 18
def method_missing(name, *args, &_block)
  name_string = name.to_s

  if name_string.end_with? '='
    data[name_string.chop.to_sym] = args.first
  else
    data[name]
  end
end
reset() click to toggle source

Force reload of the config file, set defaults, and then read from file.

# File lib/madness/settings.rb, line 34
def reset
  @data = nil
end
respond_to_missing?(*_args) click to toggle source
# File lib/madness/settings.rb, line 28
def respond_to_missing?(*_args)
  true
end

Private Instance Methods

file_data() click to toggle source
# File lib/madness/settings.rb, line 84
def file_data
  result = if file_exist?
    ExtendedYAML.load(filename)&.symbolize_keys
  else
    {}
  end

  result || {}
end