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