Sha256: cf9c5cfb86c813570d9a0d1c317a163a95f471fcf747759e93020a5a2dd5153f

Contents?: true

Size: 1.48 KB

Versions: 5

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

module Leftovers
  ruby_version = Gem::Version.new(RUBY_VERSION)
  unless ruby_version >= Gem::Version.new('2.5')
    module StringDeletePrefixSuffix
      refine ::String do
        def delete_prefix!(str)
          slice!(0..(str.length - 1)) if start_with?(str)
          self
        end

        def delete_suffix!(str)
          slice!(-str.length..-1) if end_with?(str)
          self
        end

        def delete_prefix(str)
          dup.delete_prefix!(str)
        end

        def delete_suffix(str)
          dup.delete_suffix!(str)
        end
      end
    end

    require 'yaml'
    module YAMLSymbolizeNames
      refine YAML.singleton_class do
        alias_method :safe_load_without_symbolize_names, :safe_load
        def safe_load(path, *args, symbolize_names: false, **kwargs)
          if symbolize_names
            symbolize_names!(safe_load_without_symbolize_names(path, *args, **kwargs))
          else
            safe_load_without_symbolize_names(path, *args, **kwargs)
          end
        end

        private

        def symbolize_names!(obj) # rubocop:disable Metrics/MethodLength
          case obj
          when Hash
            obj.keys.each do |key| # rubocop:disable Style/HashEachMethods # each_key never finishes.
              obj[key.to_sym] = symbolize_names!(obj.delete(key))
            end
          when Array
            obj.map! { |ea| symbolize_names!(ea) }
          end
          obj
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
leftovers-0.2.3 lib/leftovers/backports.rb
leftovers-0.2.2 lib/leftovers/backports.rb
leftovers-0.2.1 lib/leftovers/backports.rb
leftovers-0.2.0 lib/leftovers/backports.rb
leftovers-0.1.0 lib/leftovers/backports.rb