Sha256: 7ebce70a7766cad94d62b228971395182b411d06d1ef93d9939df2fe87f8cd56
Contents?: true
Size: 1.42 KB
Versions: 7
Compression:
Stored size: 1.42 KB
Contents
module Wisepdf class Parser include Singleton ESCAPED_OPTIONS = [ :pdf, :layout, :template, :action, :partial, :object, :collection, :as, :spacer_template, :disposition, :locals, :status, :file, :text, :xml, :json, :callback, :inline, :location, :save_to_file ] class << self def parse(options) options = self.escape(options) options = self.flatten(options) parsed_options = {} options.each do |key, value| unless( value == false || value.nil? ) normalized_key = "--#{self.normalize_arg(key)}" parsed_options[normalized_key] = self.normalize_value(value) end end parsed_options end protected def escape(options) options.delete_if{ |k,v| ESCAPED_OPTIONS.include?(k.to_sym) } end def flatten(options, prefix = nil) hash = {} options.each do |k,v| key = prefix.nil? ? k : "#{prefix.to_s}-#{k}" if v.is_a?(Hash) hash.delete(k) hash.merge!(self.flatten(v, key)) else hash[key.to_s] = v end end return hash end def normalize_arg(arg) arg.to_s.downcase.gsub(/[^a-z0-9]/,'-') end def normalize_value(value) case value when TrueClass nil else value.to_s end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems