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 15
def initialize
  reset
end

Public Instance Methods

dir_glob() click to toggle source
# File lib/madness/settings.rb, line 43
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 35
def file_exist?
  File.exist? filename
end
filename() click to toggle source
# File lib/madness/settings.rb, line 39
def filename
  '.madness.yml'
end
method_missing(name, *args, &_blk) click to toggle source
# File lib/madness/settings.rb, line 19
def method_missing(name, *args, &_blk)
  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 31
def reset
  @data = nil
end

Private Instance Methods

data() click to toggle source
# File lib/madness/settings.rb, line 70
def data
  @data ||= defaults.merge(file_data)
end
defaults() click to toggle source
# File lib/madness/settings.rb, line 49
def defaults
  {
    path: '.',
    port: 3000,
    bind: '0.0.0.0',
    sidebar: true,
    auto_h1: true,
    auto_nav: true,
    highlighter: true,
    line_numbers: true,
    copy_code: true,
    toc: nil,
    theme: nil,
    open: false,
    auth: false,
    auth_realm: 'Madness',
    expose_extensions: nil,
    exclude: [/^[a-z_\-0-9]+$/]
  }
end
file_data() click to toggle source
# File lib/madness/settings.rb, line 74
def file_data
  result = if file_exist?
    ExtendedYAML.load(filename)&.symbolize_keys
  else
    {}
  end
  
  result || {}
end