Class: SixthSense::Config
- Inherits:
-
Object
- Object
- SixthSense::Config
- Defined in:
- lib/sixth_sense/config.rb
Constant Summary collapse
- DEFAULT =
{ "guardrail" => { "fail_under" => {}, "require_level" => 0, "ratchet" => false, "tolerance" => 1.0, "diff_only" => false, "diff_ref" => "origin/main" }, "quality" => { "assertion_roulette_threshold" => 3, "assertion_density_min" => 0.05, "smell_cap" => 5 }, "adequacy" => { "coverage_transform" => "raw", "coverage_gamma" => 0.5 }, "coverage" => { "enabled" => true, "load_path" => "lib", "checked_mode" => "windowed", "checked_window" => 20 }, "mutation" => { "engine" => "mutant", "mode" => "score", "score_engine" => "auto", "version_requirement" => ">= 0", "timeout" => 10, "timeout_policy" => "killed", "jobs" => "auto", "cache_dir" => ".sixth_sense_cache/kill_matrix", "neutral_runs" => 2, "max_mutants" => 500, "equivalent_threshold" => 0.2, "operators" => { "exclude" => [] } } }.freeze
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
Class Method Summary collapse
- .deep_dup(value) ⇒ Object
- .deep_merge(left, right) ⇒ Object
- .load(path = ".sixth_sense.yml") ⇒ Object
Instance Method Summary collapse
- #fetch(*keys, default: nil) ⇒ Object
-
#initialize(data = DEFAULT) ⇒ Config
constructor
A new instance of Config.
Constructor Details
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
49 50 51 |
# File 'lib/sixth_sense/config.rb', line 49 def data @data end |
Class Method Details
.deep_dup(value) ⇒ Object
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/sixth_sense/config.rb', line 68 def self.deep_dup(value) case value when Hash value.each_with_object({}) { |(key, nested), copy| copy[key] = deep_dup(nested) } when Array value.map { |nested| deep_dup(nested) } else value end end |
.deep_merge(left, right) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/sixth_sense/config.rb', line 56 def self.deep_merge(left, right) merged = deep_dup(left) right.each do |key, value| merged[key] = if merged[key].is_a?(Hash) && value.is_a?(Hash) deep_merge(merged[key], value) else deep_dup(value) end end merged end |
.load(path = ".sixth_sense.yml") ⇒ Object
51 52 53 54 |
# File 'lib/sixth_sense/config.rb', line 51 def self.load(path = ".sixth_sense.yml") file_data = File.file?(path) ? YAML.load_file(path) : {} new(deep_merge(DEFAULT, file_data || {})) end |
Instance Method Details
#fetch(*keys, default: nil) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/sixth_sense/config.rb', line 83 def fetch(*keys, default: nil) keys.reduce(data) do |current, key| break default unless current.respond_to?(:fetch) current.fetch(key.to_s) { current.fetch(key.to_sym, default) } end end |