Class: RubyModKit::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_mod_kit/config.rb

Overview

config class

Constant Summary collapse

DEFAULT_FEATURES =

: Array

%w[instance_variable_parameter overload type type/rbs_inline].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(features: DEFAULT_FEATURES) ⇒ void

Parameters:

  • features (Array<String>) (defaults to: DEFAULT_FEATURES)

rbs:

  • features: Array

  • return: void



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ruby_mod_kit/config.rb', line 20

def initialize(features: DEFAULT_FEATURES)
  @features = features.sort.map do |feature_name|
    raise ArgumentError, "invalid feature: #{feature_name}" if feature_name.include?(".")

    require "ruby_mod_kit/feature/#{feature_name}"
    const_name = feature_name
      .gsub(/[A-Za-z0-9]+/) { (::Regexp.last_match(0) || "").capitalize }
      .gsub("_", "").gsub("/", "::")
    Feature.const_get(const_name).new
  end
end

Instance Attribute Details

#featuresObject (readonly)

rbs:



12
13
14
# File 'lib/ruby_mod_kit/config.rb', line 12

def features
  @features
end

Class Method Details

.load(path, if_none: nil) ⇒ Config?

Parameters:

  • path (String)
  • if_none (Symbol, nil) (defaults to: nil)

Returns:

rbs:

  • path: String

  • if_none: Symbol | nil

  • return: Config | nil



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/ruby_mod_kit/config.rb', line 39

def load(path, if_none: nil)
  return load(File.join(path, ".ruby_mod_kit.yml"), if_none: if_none) if File.directory?(path)

  unless File.exist?(path)
    case if_none
    when nil
      return nil
    when :raise
      raise LoadError, "Can't load #{path}"
    else
      raise ArgumentError, "unexpected if_none: #{if_none.inspect}"
    end
  end

  options = YAML.safe_load(File.read(path), symbolize_names: true)
  new(**options) if options.is_a?(Hash)
end