/
app.rb
63 lines (56 loc) · 1.53 KB
/
app.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
require 'bundler/setup'
require 'rubygems'
require 'sass'
require 'sinatra'
require 'slim'
require 'json'
require 'slim/erb_converter'
require 'html2slim'
require 'redcarpet'
require 'coffee-script'
Slim::Engine.default_options[:pretty] = true
set :scss, {
:style => :compact,
}
get '/' do
Slim::Template.new("index.slim", {pretty: false}).render(self)
end
post '/convert-html' do
begin
request.body.rewind # in case someone already read it
data = JSON.parse request.body.read
compiled = data['code']
if compiled.include? '%25'
refined = compiled.to_s.gsub!('%25', '%')
output = HTML2Slim.convert!(refined, :erb)
compiled = Slim::Template.new('STDIN') { output.to_s }.render
else
output = HTML2Slim.convert!(compiled, :html)
end
{ html: output.to_s, compiled: compiled }.to_json
rescue => e
{ errorMsg: escape_html(e.inspect.to_s) }.to_json
end
end
post '/convert-slim' do
begin
request.body.rewind # in case someone already read it
data = JSON.parse request.body.read
Slim::Engine.default_options[:pretty] = data['pretty']
output = Slim::Template.new('STDIN') { data['code'] }.render
{ html: output.to_s }.to_json
rescue => e
{ errorMsg: escape_html(e.inspect.to_s) }.to_json
end
end
get '/test' do
begin
output = Slim::Template.new("test.slim").render
rescue => e
{ errorMsg: escape_html(e.inspect.to_s) }.to_json
end
end
get '/stylesheets/:name.css' do
content_type 'text/css', :charset => 'utf-8'
scss(:"stylesheets/#{params[:name]}")
end