This repository was archived by the owner on Dec 19, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathsassmeister.rb
More file actions
80 lines (55 loc) · 1.54 KB
/
sassmeister.rb
File metadata and controls
80 lines (55 loc) · 1.54 KB
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
$LOAD_PATH.unshift(File.join(File.dirname(File.realpath(__FILE__)), 'lib'))
$LOAD_PATH.unshift(File.join(Dir.pwd, 'lib'))
require 'rubygems'
require 'bundler'
Bundler.setup :default, :application, ENV['RACK_ENV']
require 'sinatra/base'
require 'sassmeister/utilities'
require 'yaml'
require 'benchmark'
require 'json'
class SassMeisterApp < Sinatra::Base
helpers SassMeister::Utilities
configure :production do
require 'newrelic_rpm'
end
before do
@plugins = plugins
request.body.rewind
if request.post?
@payload = request.body.read
@payload = JSON.parse @payload, symbolize_names: true
@payload[:syntax].downcase! if @payload[:syntax]
@payload[:original_syntax].downcase! if @payload[:original_syntax]
end
content_type 'application/json'
if request.get?
last_modified app_last_modified.httpdate
cache_control :public, max_age: 2592000 # 30 days, in seconds
end
end
get '/' do
JSON.generate({
sass: Gem.loaded_specs['sass'].version,
engine: 'Ruby'
})
end
get %r{/extensions(?:\.json)*} do
extension_list.to_json.to_s
end
post '/compile' do
css = ''
time = Benchmark.realtime do
css = sass_compile @payload[:input], @payload[:syntax], @payload[:output_style]
end
json_response css, time
end
post '/convert' do
css = ''
time = Benchmark.realtime do
css = sass_convert @payload[:original_syntax], @payload[:syntax], @payload[:input]
end
json_response css, time
end
run! if app_file == $0
end