Sha256: a789f6d1a4bc85502d6ec4968e739716351a80356b32a26ed5f7a47c191951b6
Contents?: true
Size: 1.33 KB
Versions: 4
Compression:
Stored size: 1.33 KB
Contents
# frozen_string_literal: true require "refinements/hash_extensions" module Pragmater # Default gem configuration with support for custom settings. class Configuration using Refinements::HashExtensions attr_reader :settings def self.defaults { add: { comments: "", whitelist: [] }, remove: { comments: "", whitelist: [] } } end def initialize file_name = Identity.file_name, defaults: self.class.defaults @file_name = file_name @defaults = defaults @settings = defaults.deep_merge load_settings end def local_file_path File.join Dir.pwd, file_name end def global_file_path File.join ENV["HOME"], file_name end def computed_file_path File.exist?(local_file_path) ? local_file_path : global_file_path end def merge custom_settings custom_settings[:add].delete_if { |_, value| value.empty? } if custom_settings.key?(:add) custom_settings[:remove].delete_if { |_, value| value.empty? } if custom_settings.key?(:remove) settings.deep_merge custom_settings end private attr_reader :file_name, :defaults def load_settings yaml = YAML.load_file computed_file_path yaml.is_a?(Hash) ? yaml : {} rescue defaults end end end
Version data entries
4 entries across 4 versions & 1 rubygems