lib/pdfkit/pdfkit.rb in pdfkit-0.3.2 vs lib/pdfkit/pdfkit.rb in pdfkit-0.3.3

- old
+ new

@@ -26,13 +26,13 @@ :margin_top => '0.75in', :margin_right => '0.75in', :margin_bottom => '0.75in', :margin_left => '0.75in' } - @options = normalize_options(options.reverse_merge(default_options)) + @options = normalize_options(default_options.merge(options)) - raise NoExecutableError.new if wkhtmltopdf.blank? + raise NoExecutableError.new if wkhtmltopdf.nil? || wkhtmltopdf == '' end def command args = [wkhtmltopdf] args += @options.to_a.flatten.compact @@ -87,13 +87,27 @@ def normalize_options(options) normalized_options = {} options.each do |key, value| next if !value - normalized_key = "--#{key.to_s.downcase.dasherize}" - normalized_value = value.is_a?(TrueClass) ? nil : value - normalized_options[normalized_key] = normalized_value + normalized_key = "--#{normalize_arg key}" + normalized_options[normalized_key] = normalize_value(value) end normalized_options + end + + def normalize_arg(arg) + arg.to_s.downcase.gsub(/[^a-z0-9]/,'-') + end + + def normalize_value(value) + case value + when TrueClass + nil + when String + value.match(/\s/) ? "\"#{value}\"" : value + else + value + end end end \ No newline at end of file