Sha256: 53cb524a80e462c7377952662782b0bf45f287a19cec1426f793a332b8de38ff

Contents?: true

Size: 718 Bytes

Versions: 80

Compression:

Stored size: 718 Bytes

Contents

require "yaml"

module Standard
  module Performance
    class LoadsYamlWithInheritance
      def load(path)
        yaml = YAML.load_file(path)
        if (parent_path = yaml.delete("inherit_from"))
          base_path = File.dirname(path)
          parent_yaml = load(File.join(base_path, parent_path))

          two_layer_merge(parent_yaml, yaml)
        else
          yaml
        end
      end

      private

      def two_layer_merge(parent, base)
        parent.merge(base) do |key, parent_value, base_value|
          if parent_value.is_a?(Hash) && base_value.is_a?(Hash)
            parent_value.merge(base_value)
          else
            base_value
          end
        end
      end
    end
  end
end

Version data entries

80 entries across 80 versions & 3 rubygems

Version Path
harbr-0.1.73 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.72 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.71 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.70 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.69 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.68 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.67 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.66 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.65 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.64 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.63 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.62 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.61 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.60 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.59 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.58 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.57 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.56 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.55 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb
harbr-0.1.54 vendor/bundle/ruby/3.2.0/gems/standard-performance-1.2.1/lib/standard/performance/loads_yaml_with_inheritance.rb