hets_options.rb revision 8963b7210183205addea9207b1fbda4696316675
5f5870385cff47efd2f58e7892f251cf13761528Timo Sirainenmodule Hets
657afb33796f8216c568ad813627da89970760beTimo Sirainen class HetsOptions
08d6658a4e2ec8104cd1307f6baa75fdb07a24f8Mark Washenberger attr_reader :options
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen
a550b0fbcf7e876eeb88f4528209ed28cc416752Timo Sirainen def self.from_hash(hash)
2872c818f9c6704609f4d67d984b033a63e3a108Timo Sirainen new(hash['options'])
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen end
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen def initialize(opts = {})
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen @options = opts.dup
d99107ddf4d9bccb710994482daf65276a9d6321Timo Sirainen prepare
e76073ebaf90fa29abfdc364873acf78983949aaTimo Sirainen end
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen
ecb1b2d6236942bf82f822e8d0167f0e160b206dTimo Sirainen def add(**opts)
657afb33796f8216c568ad813627da89970760beTimo Sirainen @options.merge!(opts.dup)
657afb33796f8216c568ad813627da89970760beTimo Sirainen prepare
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen end
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen
a3b3e5b452be15049a1f8bfd5b3bb640af41121cTimo Sirainen def merge!(hets_options)
2872c818f9c6704609f4d67d984b033a63e3a108Timo Sirainen add(hets_options.options)
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen end
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen protected
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen def prepare
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen remove_nil_fields
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen prepare_url_catalog
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen end
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen def remove_nil_fields
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen nil_valued_keys = @options.keys.select { |key| @options[key].nil? }
5363f51ad46344f4e5952f2fef211a7cf8f95ddcTimo Sirainen nil_valued_keys.each { |key| @options.delete(key) }
5363f51ad46344f4e5952f2fef211a7cf8f95ddcTimo Sirainen end
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen def prepare_url_catalog
2872c818f9c6704609f4d67d984b033a63e3a108Timo Sirainen @options[:'url-catalog'].try(:compact!)
2872c818f9c6704609f4d67d984b033a63e3a108Timo Sirainen if @options[:'url-catalog'].blank?
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen @options.delete(:'url-catalog')
657afb33796f8216c568ad813627da89970760beTimo Sirainen end
2872c818f9c6704609f4d67d984b033a63e3a108Timo Sirainen end
2872c818f9c6704609f4d67d984b033a63e3a108Timo Sirainen end
59151b71059df1190acd75d8717ed04a7920c862Timo Sirainenend
657afb33796f8216c568ad813627da89970760beTimo Sirainen