Sha256: 14845d6409c636a863e34b5dcbab8f6ca86bc5c1f1e9ffc67626adb91bf0a9d1

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

require 'forwardable'
require 'dr/base/utils'
require 'dr/base/uri' # for DR::URIEscape.escape
require 'shell_helpers'
require 'dr/ruby_ext/core_ext'

module Archlinux
	ArchlinuxError=Class.new(StandardError)
	Utils=::DR::Utils
	Pathname=::SH::Pathname

	def self.delegate_h(klass, var)
		# put in a Module so that they are easier to distinguish from the
		# 'real' functions
		m=Module.new do
			extend(Forwardable)
			methods=[:[], :[]=, :any?, :assoc, :clear, :compact, :compact!, :delete, :delete_if, :dig, :each, :each_key, :each_pair, :each_value, :empty?, :fetch, :fetch_values, :has_key?, :has_value?, :include?, :index, :invert, :keep_if, :key, :key?, :keys, :length, :member?, :merge, :merge!, :rassoc, :reject, :reject!, :select, :select!, :shift, :size, :slice, :store, :to_a, :to_h, :to_s, :transform_keys, :transform_keys!, :transform_values, :transform_values!, :update, :value?, :values, :values_at]
			include(Enumerable)
			def_delegators var, *methods
		end
		klass.include(m)
	end

	def self.add_to_hash(h, key, value)
		case h[key]
		when nil
			h[key] = value
		when Array
			h[key] << value
		else
			h[key]=[h[key], value]
		end
	end

	def self.create_class(klass, *parameters, **kw, &b)
		klass=Archlinux.const_get(klass) if klass.is_a?(Symbol)
		if klass.is_a?(Proc)
			klass.call(*parameters, **kw, &b)
		else
			klass.new(*parameters, **kw, &b)
		end
	end

	module CreateHelper
		def create(v, config: Archlinux.config)
			v.is_a?(self) ? v : self.new(v, config: config)
		end
	end

	## Not used: we modify Config#pretty_print directly
	# module PPHelper
	# 	def pretty_print_instance_variables
	# 		instance_variables.reject {|n| n==:@config}.sort
	# 	end
	# end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aur.rb-0.2.0 lib/aur/helpers.rb