jedfoster / SassMeister

The Sass playground
http://sassmeister.com
199 stars 25 forks source link

SassMeister Gist updates don't work if HTML added on #54

Closed mturjak closed 10 years ago

mturjak commented 10 years ago

As I kept playing after #53 got resolved, I found this other inconvenient issue.

If you save a gist with no HTML it will have an empty string assigned to the javascript object SassMeister.inputs.html_filename. If you then add some HTML and try to update the gist this will cause a server error.

After a quick skim through the code I found the problem in jedfoster/SassMeister/sassmeister.rb#L297-307, as there is no condition case that would account for an empty string (inputs[:html_filename] == '').

Relevant code here:

if inputs[:html_filename].split('.').last == inputs[:html][:syntax].downcase
  html_file = inputs[:html_filename]
  deleted_html = {}
else
  filename = inputs[:html_filename].split('.')
  filename.pop
  filename = filename.join('.')

  html_file = "#{filename}.#{inputs[:html][:syntax].downcase}"
  deleted_html = {inputs[:html_filename] => {content: nil}}
end

Possible solution:

deleted_html = {}

if inputs[:html_filename] == ''
  html_file = "SassMeister-input-HTML.#{inputs[:html][:syntax].downcase}"
elsif inputs[:html_filename].split('.').last == inputs[:html][:syntax].downcase
  html_file = inputs[:html_filename]
else
  filename = inputs[:html_filename].split('.')
  filename.pop
  filename = filename.join('.')

  html_file = "#{filename}.#{inputs[:html][:syntax].downcase}"
  deleted_html = {inputs[:html_filename] => {content: nil}}
end
jedfoster commented 10 years ago

Closed with 1aa993b

Thanks!